Credentials.acquireTGTFromCache(null,null)使用jre 7返回null

时间:2012-05-03 02:29:29

标签: java kerberos jaas java-7

我当然不熟悉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);
    }
}

这可能是某种配置问题吗?任何答案或指向正确方向的指针都将非常感激。谢谢!

1 个答案:

答案 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中可能存在一个错误,即它首先起作用。