我当然不熟悉JAAS API,但需要帮助调查我们在升级到jre时遇到的问题。以前能够使用当前登录的Windows用户名自动登录的应用程序停止工作。经过一番探讨,它涉及到这行代码。
sun.security.krb5.Credentials.Credentials.acquireTGTFromCache(null, null);
当使用jre 7 jvm时返回null,但在使用jre 6时返回正确的crendentials。我以最简单的形式编写了一个测试类,但仍然看到相同的行为,所以它不能归因于我们的代码自己的课程。
package test;
import sun.security.krb5.Credentials;
public class Scratch {
public static void main(final String args[]) throws Exception {
final Credentials yaoza = Credentials.acquireTGTFromCache(null, null);
System.out.println(yaoza);
}
}
这可能是某种配置问题吗?任何答案或指向正确方向的指针都将非常感激。谢谢!
答案 0 :(得分:1)
在Windows注册表中,这里:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
显然应该有以下关键:
allowtgtsessionkey REG_DWORD (1)
...根据这个帖子中的某个人: https://forums.oracle.com/forums/thread.jspa?threadID=2343216
正如那里提到的那样,JDK6中可能存在一个错误,即它首先起作用。