通过 JDBC 从 Linux 机器连接到 SQL Server with Windows Authentication

我希望能够使用jdbc和Windows身份验证连接到SQL Server。我在互联网上看到一些答案,说我应该将以下属性添加到连接字符串中:

integratedSecurity=true;

并且还添加

sqljdbc_auth.dll

到 java 路径。

但是,据我所知,这仅适用于我从Windows计算机连接的情况。当我在Linux机器上尝试这个时,我会得到:

java.sql.SQLException: This driver is not configured for integrated authentication

我的问题是我如何从Linux机器上做到这一点。

谢谢


答案 1

好吧,最终我回答了我自己的问题:这不可能使用Microsoft JDBC驱动程序从Linux机器使用Windows身份验证。使用具有以下连接字符串的 jTDS JDBC 驱动程序,可以做到这一点:

jdbc:jtds:sqlserver://host:port;databaseName=dbname;domain=domainName;useNTLMv2=true;

谢谢大家的所有评论


答案 2

TL;DR

不能使用本机 Windows 身份验证从 Linux 上运行的 JVM 连接到 MSSQL。


这篇 MSDN 文章解释了 Linux 上使用 JDBC 的身份验证方法、潜在错误和可用选项:

https://blogs.msdn.microsoft.com/psssql/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication/

...在 JDBC 4.0 驱动程序中,可以使用 authenticationScheme 连接属性来指示您希望如何使用 Kerberos 连接到 SQL。此处有两个设置。

  • 本机身份验证(默认)– 这使用sqljdbc_auth.dll,并且特定于 Windows 平台。这是 JDBC 4.0 驱动程序之前的唯一选项。

  • JavaKerberos – 利用Java API调用kerberos,不依赖于Windows平台。这是特定于Java的,不绑定到底层操作系统,因此可以在Windows和Linux平台上使用。

...

以下文档概述了如何将 Kerberos 与 JDBC 驱动程序一起使用,并演练了使 JavaKerberos 正常工作所需的条件。

使用 Kerberos 集成身份验证连接到 SQL Server http://msdn.microsoft.com/en-us/library/gg558122%28v=sql.110%29.aspx


推荐