当前位置: 首页 > 知识库问答 >
问题:

如何通过Azure Active Directory用户与Azure上的MS SQL Server建立JDBC连接

养研
2023-03-14

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

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

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

用旧的图书馆,我得到了不同的信息

用旧的图书馆,我得到了不同的信息

 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) 

我正在添加丢失的罐子。但似乎应该有更好的方法来做到这一点。我们将非常感谢您在这方面提供的任何帮助。

共有1个答案

公西修文
2023-03-14

使用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服务器。

 类似资料:
  • 问题内容: 有人可以提供有关如何建立JDBC连接池的示例或链接吗? 从搜索谷歌,我看到这样做的许多不同方式,这相当令人困惑。 最终,我需要代码来返回一个对象,但是我在入门时遇到了麻烦。欢迎任何建议。 更新: 没有或没有池连接实现?为什么不最好使用这些? 问题答案: 如果你需要一个独立的连接池,那么我首选的是C3P0而不是DBCP(我在上一个答案中已经提到),在重负载下我对DBCP的问题太多了。使用

  • 据我所知,要建立事件流,必须在客户端上创建一个事件源对象,并将其传递给服务器以注册自己。服务器在收到此请求后,适当地设置响应标头并按照事件流格式发送数据。我设置了这个流,它可以通过超文本传输协议工作,但在向服务器添加SSL后,事件流正在创建,服务器会抛出501-未实现错误。经过一些研究,我认为这可能是CORS问题,并添加了适当的标头,但这也没什么不同。我还尝试了通常适用于501个错误的小修复,例如

  • 我正在尝试使用JaxWsProxyFactoryBean连接到TLS1。2通过代理使用Spring Boot和java配置的https服务。我找不到任何示例,也找不到有关如何配置的信息。我使用wsdl2java构建最终从JaxWsProxyFactoryBean返回的所有对象。任何帮助都将不胜感激。我目前拥有: 和 我目前收到一个错误: 任何帮助都将不胜感激。 谢谢,布莱恩

  • 我正在尝试连接到本地DB210.5Express-C服务器。这是一个测试环境,所以我不关心安全性。 我能够连接到命令行处理器(在Windows上运行),并更改了和的配置设置。当时我希望能够在没有身份验证的情况下进行连接(我重新启动了DB2服务),但仍然出现了一个错误。 当我尝试在没有用户名/密码的情况下连接时 我得到了错误:com.ibm.db2.jcc.am.SqlSynTaxErrorExce

  • 问题内容: 我在尝试使用以下代码获取数据库连接时遇到问题: 输出的错误信息是: / usr / lib / jvm / java-6-openjdk / bin / java -Didea.launcher.port = 7532 -Didea.launcher.bin.path = / usr / bin / idea / bin -Dfile.encoding = UTF-8-类路径/usr/

  • 当使用ojdbc6.jar或ojdbc5.jar时,从独立java应用程序连接到Oracle12c将成功。 连接字符串: 而在通过Websphere进行连接时,相同的连接字符串将失败,出现以下异常。 java.SQL.sqlexception:ORA-28040:没有匹配的身份验证协议DSRA0010E:SQL状态=99999,错误代码=28,040 注意:已尝试和