我有一个 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)
有谁知道为什么会这样?
我必须补充一点,我使用的Krb5LoginModule
是 JDBC 驱动程序提供的默认值。
先感谢您。