zuc*_*ori 16 java sql-server jdbc 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机器上做到这一点.
谢谢
zuc*_*ori 33
好吧,最后我回答了我自己的问题:这是不可能使用Microsoft JDBC驱动程序从Linux机器上使用Windows身份验证.这可以使用以下连接字符串使用jTDS JDBC驱动程序:
jdbc:jtds:sqlserver://host:port;databaseName=dbname;domain=domainName;useNTLMv2=true;
谢谢大家的所有评论
对于那些使用 DBeaver 的人来说,连接到 SQL Server 数据库的方式是:
为了使用 DBeaver 从 Linux Debian 连接到 SQL Server
1.- 选择 SQL Server jTDS 驱动程序
2.- 输入连接信息
3.- 转到驱动程序属性选项卡并添加域、用户、密码
需要注意的是,在一些帖子中,我发现他们需要将属性 USENTLMV2 更改为 TRUE,但它对我有用,可以将 USERTLNMV2 设置为 true 或 false。
我发现的一个问题是,当我尝试使用用户名和密码连接到数据库时,抛出了下一个错误:
登录失败。该登录来自不受信任的域,无法与 Windows 身份验证一起使用。
由于我的用户即将过期,因此引发了此错误。我尝试使用另一个 AD 用户,它可以连接。
TL; DR
无法将本机Windows身份验证用于从Linux上运行的JVM到MSSQL的JDBC连接。
此MSDN文章介绍了Linux上JDBC的身份验证方法,潜在的错误以及可用的选项:
...在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集成身份验证连接到SQL Server http://msdn.microsoft.com/zh-cn/library/gg558122%28v=sql.110%29.aspx
| 归档时间: | 
 | 
| 查看次数: | 33192 次 | 
| 最近记录: |