【发布时间】:2013-05-30 10:37:00
【问题描述】:
我有一个 MS SQL Server RDBMS,它使用 Kerberos 对用户进行身份验证。
如果我将数据库 URL 设置为,则从 Windows 机器
jdbc:sqlserver://DB_NAME:DB_PORT;integratedSecurity=true
并将适当的sqljdbc_auth.dll 添加到路径中,一切正常。
但是我想使用 Java Kerberos 身份验证,以便能够在 *nix 机器中使用相同的代码。
所以我的数据库 URL 变成了
jdbc:sqlserver://DB_NAME:DB_PORT;integratedSecurity=true;authenticationScheme=JavaKerberos
当我运行代码时,出现以下异常:
Exception in thread "main" javax.security.auth.login.LoginException: Unable to obtain Princpal Name for authentication
at com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:796)
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:667)
at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:580)
有人知道为什么会这样吗?
我必须补充一点,我使用的是 JDBC 驱动程序提供的默认 Krb5LoginModule。
提前谢谢你。
【问题讨论】:
-
您使用的是 MS JDBC 还是 Open JTDS?
-
@gbn 我正在使用 MS JDBC。 sqljdbc4.jar
-
@nikkatsa 你找到解决方案了吗?
-
@nikkatsa 我面临同样的问题。你找到解决这个问题的方法了吗?
标签: java sql-server security jdbc kerberos