从JTDS JDBC驱动程序移民到MicrosoftJDBC

问题描述 投票:0回答:3
jdbc:jtds:sqlserver:/sqlServer:1433/myDb;domain=mydomain;user=dbuser;password=secretPwd

它的工作就像一个炭。

但是,当我尝试使用Microsoft驱动程序时,我的应用程序无法建立与数据库的连接。我尝试了以下URL字符串:

jdbc:sqlserver://sqlServer:1433;database=myDb;username=dbuser;password=secretPwd
jdbc:sqlserver://sqlServer:1433;database=myDb;username=mydomain\dbuser;password=secretPwd
jdbc:sqlserver://sqlServer:1433;database=myDb;username=dbuser@mydomain;password=secretPwd

许多其他排列,但没有成功。该应用程序失败,以下例外:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'mydomain\dbuser'

在SQL Server日志中,我们收到以下错误:

Login failed for user 'mydomain\dbuser'. Reason: Attempting to use an NT account name with SQL Server Authentication. [CLIENT: 10.10.10.10]

注意该应用程序应该在Linux下运行。 

任何人都知道Microsoft JDBC URL作为域用户连接时的外观如何?

	
我在这个问题上的研究使我得出了以下结论:

由于我在问题中的意图,从JTDS驱动程序到Microsoft驱动程序的简单过渡是不可能的。这是因为JTDS驱动程序实现了Microsoft驱动程序上没有的NTLM身份验证。

替代方法是使用Linux机器上可用的Javakerberos身份验证方案(如Gord Thomson所建议的)。幸运的是,我们在生产环境中建立了Kerberos基础设施。
java sql-server jdbc jtds mssql-jdbc
3个回答
3
投票
我成功地在我的服务中添加了Kerberos身份验证,主要是在这些Microsoft(博客)帖子的帮助下:

  • JDBC-此驱动程序 - 未配置用于集成的 身份验证
将Kerberos集成身份验证 连接到SQLServer

  • 我将使用它。
  • 这似乎Microsoft当前正在开发支持NTLM的JDBC驱动程序。 您可以在此处进行包括预览的讨论:
  • https://github.com/microsoft/mssql-jdbc/issues/696
  • I使用以下连接字符串测试了驱动程序,并且它可以工作:

jdbc:sqlserver:// sqlserver:1433; databasename = mydb; usecursorSalways = true; retemperatedSecurity = true; authEnticationschemechemecheme = ntlm; domain; domain; domain; user = domain; user = dbuser; use = dbuser; passwass; passwass =xxxxxxx

3
投票
我联系了Microsoft,现在等待GA发布日期。

直接对您的问题的答案

,但是如果您想获取最新的驱动程序(可能可以解决您的问题):

Microsoft最新版本是

Https://www.microsoft.com/en-us/download/details.aspx?id =11774

它还具有集成安全性的
SQLJDBC_XA

SQLJDBC_AUTH

0
投票
Https://repo1.maven.org/maven2/com/microsoft/sqlserver/msssql-jdbc/

直接从源

https://github.com/microsoft/mssql-jdbc/releases

请参阅通知:Https://github.com/microsoft/mssql-jdbc#download-the-dlls

update ** 从7.3.1版本开始,MS SQL驱动程序中支持NTLM **

连接字符串看起来像这样**

** jdbc:sqlserver://<server>;integratedSecurity=true;authenticationScheme=NTLM;domain=<domain>;user=<domainUser>;password=<domainUserPassword>;

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.