我不能让sqljdbc使用AD用户名/密码

Hur*_*rda 6 java connection-string database-connection jdbc mssql-jdbc

我需要连接到高可用性(HA)/灾难恢复(DR),也称为HADR,使用来自Linux上的Java的AD帐户启用SQL Server 2012.

  • integratedSecurity 不是一个选项,因为它在Linux上运行
  • 我不能使用jTDS JDBC驱动程序,因为它不支持HADR集群(不支持multiSubnetFailover=true)

jTDS实际上使用用户名,密码和域连接字符串参数,但超过25%的时间.

所以我似乎坚持使用MS SQL JDBC驱动程序,但我不能只使用用户名/密码凭据,因为我试图在没有Kerberos的情况下解决这个问题.

必须有可能(理论上),因为jTDS实际上可以做到这一点!

我发现驱动程序版本6.0具有属性,authentication=ActiveDirectoryPassword所以它看起来很有前途,但是一个SQL连接字符串就像

jdbc:sqlserver://server:port;database=DB;authentication=ActiveDirectoryPassword;username=name;password=PASSWORD
Run Code Online (Sandbox Code Playgroud)

即使尝试使用DOMAIN\username用户名或用户属性,也无法正常工作.

文档说它的原因

使用Azure AD主体名称和密码

但它会让我的生活变得如此简单.

我得到的错误是

用户''登录失败

并显示空用户,但单步执行反编译代码我可以看到用户名和密码值正被加载到变量中.

对此有何解决方案?我将任何AD用户名/密码连接到纯JAVA的HADR SQL Server 2012.