Artigo
· jan 28 4min de leitura

Conectando JDBC ao MS Azure SQL pelo Microsoft Entra e Active Directory Password Authentication

Não tenho certeza se muitos se conectam ao MS SQL para executar consultas, procedimentos armazenados, etc., mas nosso Sistema de Saúde possui muitos bancos de dados baseados em MS SQL que utilizamos no ambiente de Interoperabilidade por vários motivos.

Com a migração do ambiente local para a nuvem, enfrentamos algumas dificuldades com as conexões do SQL Gateway e como configurá-las para usar o Microsoft Entra para autenticação do Active Directory.

Existem muitos artigos na web, mas nenhum deles forneceu a resposta completa para o que precisávamos fazer, e a Microsoft não foi de grande ajuda. Resolvi escrever isso, para que possa ajudar outros que possam estar enfrentando o mesmo problema.


Contexto
Estamos atualmente executando o RedHat 8.10 e o openjdk versão "1.8.0_432".Utilizamos o SQL Gateway para conectar ao MS SQL usando o driver mssql-jdbc-12.2.0.jre8.jar com uma conta de usuário do Serviço de Domínio do Active Directory
jdbc:sqlserver://<server>:<port>;database=<database>;trustServerCertificate=true;integratedSecurity=true;authenticationScheme=NTLM;domain=<domain>;authentication=NotSpecified

 

Quando o banco de dados foi movido para o Azure SQL, recebi uma nova URL que incluía jdbc:sqlserver://<server>:<port>;databaseName=<database>;domain=<domain>;encrypt=true;trustServerCertificate=true;hostNameInCertificate=<server name>;Authentication=ActiveDirectoryPassword

 

Quando cliquei em 'Testar Conexão', recebi ...Remote JDBC error: com.microsoft.sqlserver.jdbc.SQLServerException: Failed to load MSAL4J Java library for performing ActiveDirectoryPassword authentication..

Tentei atualizar o driver MS SQL JDBC para mssql-jdbc-12.8.1.jre8.jar mas recebi o mesmo erro, indicando que ainda faltava algo.

Em seguida, tentei conectar usando o DBeaver e, após algumas ajustes na conta, consegui estabelecer a conexão com sucesso. Então, baixei o arquivo de classe utilizado pelo DBeaver e carreguei os arquivos JAR no meu servidor.

Trabalhando com o WRC, atualizei meu %JDBC Server para usar o caminho dos arquivos JAR adicionais e mantive meu driver como o Caminho da Classe na string de conexão do SQL Gateway.

No entanto, o 'Testar Conexão' ainda gerava um erro.


Instalando o Maven

A Microsoft me recomendou atualizar o Maven, mas eu não tinha ideia do que se tratava nem como usá-lo. Tentei baixar manualmente o msal4j.jar, mas encontrei vários erros. O Repositório Maven listou as dependências, então tentei baixar manualmente todos os arquivos JAR das dependências, mas ainda não consegui fazer funcionar.Existem várias maneiras de instalar o Maven, mas utilizei o guia 'How to Install Maven on Windows, Linux, and Mac | Baeldung' para descobrir como baixá-lo para meu servidor, já que o comando 'yum install maven' não encontrou o repositório para download.

Após o download e a instalação, foi necessário adicionar$JAVA_HOME, $M2_HOME, e $MAVEN_HOME ao meu arquivo .profile.


Baixando e instalando o arquivo JAR necessário e suas dependências

Durante a resolução de problemas na tentativa de conexão com o Azure SQL, continuei recebendo uma mensagem de erro relacionada ao msal4j.jar.
Usando o Maven na linha de comando... executei

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

O comando baixou o msal4j.jar e todas as suas dependências para o repositório .m2 no servidor local.
A partir daí, eu queria pegar os arquivos JAR e copiá-los para a estrutura de diretórios que havia configurado para o IRIS. Portanto, executei:
:>mvn dependency:copy-dependencies -f /archive/.m2/repository/com/microsoft/azure/msal4j/ -DoutputDirectory=/nfs/data/drivers/java/

Mas, mesmo usando o Maven, ainda era necessário copiar o msal4j.jar manualmente. Portanto, copiei esse arquivo JAR da estrutura do repositório .m2 para o diretório/nfs/data/drivers/java/

Atualizando %JDBC Server e Conexão SQL Gateway"Para estabelecer uma conexão bem-sucedida, precisei garantir que todos os arquivos JAR necessários estivessem definidos nos Caminhos de Classe.

Portanto, no %JDBC Server, defini o Caminho de Classe para /nfs/data/drivers/java/* que contém o msal4j.jar e todas as suas dependências.Na Conexão SQL Gateway, precisei verificar se o Usuário tinha o domínio definido corretamente, redigitei a senha, cliquei em 'Testar Conexão' e consegui obter uma 'Conexão Bem-Sucedida'.


No final, a parte mais difícil foi saber como baixar o msal4j.jar e suas dependências para garantir a autenticação correta por meio do Microsoft Entra.

Portanto, espero que isso ajude alguém no futuro quando tentar se conectar ao Azure SQL Server usando a Autenticação de Senha do Active Directory por meio do Microsoft Entra.

Discussão (0)1
Entre ou crie uma conta para continuar