検索

記事
· 2025年1月29日 4m read

Conexión de JDBC a MS Azure SQL a través de Microsoft Entra y autenticación con contraseña de Active Directory

No estoy seguro de que haya muchos que se conecten a MS SQL para ejecutar consultas, procedimientos almacenados, etc., pero nuestro sistema de salud tiene muchas bases de datos diferentes basadas en MS SQL que usamos en el entorno de interoperabilidad por diversas razones.

Con el impulso de movernos de on-premises a la nube, nos encontramos con algunas dificultades con nuestras conexiones SQL Gateway y cómo configurarlas para usar Microsoft Entra para la autenticación de Active Directory.

Hay muchos artículos en la web, pero ninguno nos dio la respuesta completa sobre lo que necesitábamos hacer, y Microsoft no fue de mucha ayuda.
Pensé en escribir esto, por si pudiera ayudar a otros.


Contexto
Actualmente estamos ejecutando RedHat 8.10 y openjdk versión "1.8.0_432". Usamos SQL Gateway para conectarnos a MS SQL con el controlador mssql-jdbc-12.2.0.jre8.jar utilizando una cuenta de servicio de Active Directory.
jdbc:sqlserver://<server>:<port>;database=<database>;trustServerCertificate=true;integratedSecurity=true;authenticationScheme=NTLM;domain=<domain>;authentication=NotSpecified

 

Cuando la base de datos se trasladó a Azure SQL, me proporcionaron una nueva URL que incluía
jdbc:sqlserver://<server>:<port>;databaseName=<database>;domain=<domain>;encrypt=true;trustServerCertificate=true;hostNameInCertificate=<server name>;Authentication=ActiveDirectoryPassword

 

Cuando hice click en Test Connection (Probar conexión) obtuve: 
Remote JDBC error: com.microsoft.sqlserver.jdbc.SQLServerException: Failed to load MSAL4J Java library for performing ActiveDirectoryPassword authentication..

Intenté actualizar el controlador MS SQL JDBC a mssql-jdbc-12.8.1.jre8.jar, pero obtuve el mismo error, así que algo seguía faltando.

Luego intenté conectarme usando DBeaver y, después de algunos ajustes en la cuenta, finalmente lo logré. Descargué el archivo de clase que DBeaver estaba utilizando y subí los archivos jar a mi servidor.

Trabajando con WRC, actualicé mi %JDBC Server para usar la ruta hacia los archivos jar adicionales y dejé mi controlador como la Class Path en mi cadena de conexión de SQL Gateway.

Sin embargo, la prueba de conexión seguía arrojando un error.


Instalando Maven

Microsoft me recomendó actualizar Maven, pero no tenía idea de qué era ni cómo usarlo. Intenté descargar manualmente msal4j.jar, pero seguía encontrándome con error tras error. El repositorio de Maven listaba dependencias, así que intenté descargar manualmente todos los archivos jar de dependencia, pero aún así no lograba que funcionara.

Hay muchas maneras de instalar Maven, pero usé el artículo How to Install Maven on Windows, Linux, and Mac | Baeldung para descubrir cómo descargarlo para mi servidor, ya que el comando “yum install maven” no encontraba el repositorio para descargarlo.

Una vez descargado e instalado, tuve que agregar las variables $JAVA_HOME, $M2_HOME y $MAVEN_HOME a mi archivo .profile.


Descarga e instalación del archivo jar necesario y sus dependencias

En mi proceso de solución de problemas para conectarme a Azure SQL, seguía recibiendo un mensaje de error relacionado con msal4j.jar.
Usando Maven desde la línea de comandos, ejecuté:


:>mvn dependency:get -Dartifact=com.microsoft.azure:msal4j:1.18.0

Lo que hizo fue descargar msal4j.jar y todas sus dependencias en el repositorio .m2 del servidor local.
Desde ahí, quería obtener los archivos jar y copiarlos a la estructura de directorios que había configurado para IRIS. Así que ejecuté:


:>mvn dependency:copy-dependencies -f /archive/.m2/repository/com/microsoft/azure/msal4j/ -DoutputDirectory=/nfs/data/drivers/java/

Pero usando Maven, aún tienes que copiar el msal4j.jar, así que copié manualmente ese archivo jar desde la estructura del repositorio .m2 a /nfs/data/drivers/java/

Actualizando %JDBC Server y la cadena de conexión de SQL Gateway

Para conectarme con éxito, tuve que asegurarme de que todos los archivos jar adecuados estuvieran definidos dentro de las rutas de clase.

Entonces, en el %JDBC Server, establecí la ruta de clase a /nfs/data/drivers/java/*, que contenía el msal4j.jar y todas sus dependencias.
Dentro de la conexión de SQL Gateway, tuve que verificar que el usuario tuviera el dominio adecuado definido, volví a ingresar la contraseña, hice clic en Test Connection y pude obtener una "Conexión exitosa".


Al final, lo más difícil fue saber cómo descargar msal4j.jar y sus dependencias para asegurar que la autenticación adecuada a través de Microsoft Entra se llevara a cabo.

Así que, con suerte, esto ayudará a alguien en el futuro cuando intente conectarse a Azure SQL Server utilizando la autenticación de contraseña de Active Directory a través de Microsoft Entra.

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 2025年1月29日

[Video] Mudando para o InterSystems Reports

Olá Comunidade,

Aproveite o novo vídeo do InterSystems Developers YouTube:

⏯ Moving to InterSystems Reports @ Global Summit 2024

Saiba como a SHD Einzelhandelssoftware GmbH está aproveitando o InterSystems Reports, por que eles escolheram usá-lo, benefícios e lições aprendidas.

Apresentadores
🗣 Eric Hoelper, Managing Director, SHD Einzelhandelssoftware GmbH
🗣 @Michael Braam, Senior Sales Engineer, InterSystems  

Assista, aprenda e cresça conosco — inscreva-se para não perder nada! 👍

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 2025年1月29日

[Video] VS Code Server side editing vs Client side editing

Hey Community,

Enjoy the new video on InterSystems Developers YouTube:

⏯ VS Code Server side editing vs Client side editing

Quick overview of server side editing vs client side editing in VS Code. With some simple examples of when each may be beneficial to use.

🗣  Presenter: @Peter Steiwer, Senior Developer Support Engineer, InterSystems

Enjoy watching, and look for more videos! 👍

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 2025年1月29日

Integrate your data with Health Connect Cloud

Hi Community,

🏥Are you using HealthShare® Health Connect Cloud™ to integrate your data?

Learn more about deployments, integrations, and source control tools so you can optimize your use of this cloud-based managed service.

Integrate your healthcare data. Learn Health Connect Cloud

Use these online learning resources to get oriented!

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください