通过JDBC从Linux机器通过Windows身份validation连接到SQL Server

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

integratedSecurity=true; 

并补充说

 sqljdbc_auth.dll 

到java路径。

但据我所知,只有在我从Windows机器上连接时才适用。 当我在Linux机器上尝试这个时,我得到:

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

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

谢谢

好吧,最后我回答了我自己的问题:使用Microsoft JDBC驱动程序从Linux机器上使用Windows身份validation是不可能的。 这可以使用以下连接字符串使用jTDS JDBC驱动程序:

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

谢谢大家的所有评论

TL; DR

对于从Linux上运行的JVM到MSSQL的JDBC连接,不可能使用本机Windows身份validation。


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

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

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

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

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

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

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