域策略要求NTLM v2后jTDS JDBC驱动登录Microsoft SQL Server失败
NTLM v2验证失败jTDS驱动问题解决方案
java.sql.SQLException: Login failed. The login is from an untrusted domain and cannot be used with Windows authentication.
域策略升级要求NTLM v2后登录失败、配置参数不生效的核心原因是实际运行的jTDS 1.2版本不支持NTLM v2协议。jTDS从1.2.2版本才新增useNTLMv2参数支持,1.3.1是稳定支持NTLM v2的正式版本,低版本驱动会直接忽略无法识别的URL参数,导致修改的配置不生效。
修复步骤如下:
- 排查Maven依赖冲突,执行
mvn dependency:tree命令定位jTDS 1.2版本的引入来源,排除所有低版本间接依赖,保证全局只有jTDS 1.3.1版本被打包到应用中 - 确认JDBC URL配置格式正确,标准配置示例如下:
jdbc:jtds:sqlserver://<SQL Server实例地址>:<端口>/<数据库名>;domain=<完全限定域名>;useNTLMv2=true;user=<域账号>;password=<账号密码> - 若应用部署在Windows服务器环境下,可额外添加
useKerberos=true参数,适配域侧的强身份验证要求 - 部署后验证运行时实际加载的jTDS版本,可在应用启动逻辑中增加版本校验代码:
Class.forName("net.sourceforge.jtds.jdbc.Driver").getPackage().getImplementationVersion(),确认输出为1.3.1即可
内容的提问来源于stack exchange,提问作者Mike McManus
相关产品推荐
相关产品推荐

