【问题标题】:How to make a JDBC connection to MS SQL Server on Azure via Azure Active Directory User如何通过 Azure Active Directory 用户与 Azure 上的 MS SQL Server 建立 JDBC 连接
【发布时间】:2020-10-22 16:20:22
【问题描述】:

我有一个 J2EE Web 应用程序。数据库连接是通过 JDBC 建立的。现在需要将 Web 应用程序部署在 Azure 云上。需要与 MS SQL Server 建立 JDBC 连接。对数据库的身份验证是“ActiveDirectoryPassword”

我找到了 java 库。似乎代码正在寻找较旧的库:adal4j-1.6.6.jar 而不是较新的版本:msal4j-1.7.1.jar

加载 msal4j-1.7.1 后,我仍然收到错误消息:加载 ADAL4J Java 库失败。

对于较旧的库,我会收到不同的消息和日志条目:

对于较旧的库,我会收到不同的消息和日志条目: 10-20@16:19:22293041 错误 [http-nio-8080-exec-9] labware.web.admin.DataSourceBean - 在方法 saveDS 中保存数据源时出错。

 java.lang.NoClassDefFoundError: com/nimbusds/oauth2/sdk/AuthorizationGrant 
            at java.lang.Class.forName0(Native Method) 
            at java.lang.Class.forName(Unknown Source) 
            at com.microsoft.sqlserver.jdbc.SQLServerConnection.adalContextExists(SQLServerConnection.java:4546) 
            at com.microsoft.sqlserver.jdbc.SQLServerConnection.getFedAuthToken(SQLServerConnection.java:4438) 
            at com.microsoft.sqlserver.jdbc.SQLServerConnection.onFedAuthInfo(SQLServerConnection.java:4415) 
            at com.microsoft.sqlserver.jdbc.SQLServerConnection.processFedAuthInfo(SQLServerConnection.java:4380) 
            at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onFedAuthInfo(tdsparser.java:289) 
            at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:125) 

我正在添加缺少的罐子。但似乎应该有更好的方法来做到这一点。在这方面的任何帮助将不胜感激。

【问题讨论】:

  • 连接字符串是什么?
  • jdbc:sqlserver://:1433;database=MyDatabase;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword 添加传递给这个用户名和密码。这里还要更新一点,代码是传统的JDBC API代码

标签: sql-server jdbc azure-active-directory


【解决方案1】:

使用 maven 很容易解决问题。 Microsoft Azure jdbc 驱动程序不附带它需要的运行时依赖项 jar。简单的解决方法是使用 Maven。 pom.xml 应具有以下依赖项。正如猜测的那样,Maven 完成了所有繁重的工作,下载了所有的依赖 jar。

您的 pom.xml 中需要以下依赖项

<dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>7.4.1.jre8</version>
    </dependency>

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>adal4j</artifactId>
        <version>1.6.6</version>
    </dependency>

需要 adal4j,azure 使我们能够使用联合或活动目录用户通过 oauth 2.0 登录到 sql server。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2019-03-21
    • 2013-10-31
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多