通过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方法,潜在错误和可用选项:
…在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