3

诚然,我不熟悉 JAAS API,但需要帮助调查我们在升级到 jre 7 时遇到的问题。以前能够使用当前登录的 Windows 用户名自动登录的应用程序停止工作。经过一番摸索,就到了这行代码。

sun.security.krb5.Credentials.Credentials.acquireTGTFromCache(null, null);

这在使用 jre 7 jvm 时返回 null,但在使用 jre 6 时返回正确的凭证。我以最简单的形式编写了一个测试类,但仍然看到相同的行为,所以这不可能是由于我们自己的类中的代码。

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);
    }
}

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

4

1 回答 1

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 中的一个错误,这首先是有效的。

于 2012-05-09T13:58:59.633 回答