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

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

这可能是某种配置问题吗?非常感谢您提供任何答案或指向正确方向的线索。谢谢!


出于好奇,您能否确认在JRE 6或JRE 7下运行时,您的应用程序是否以“管理员”(在提升状态下)运行? - hawkeye
抱歉,我不完全明白你的问题。我作为非管理员用户登录到Windows,并在Eclipse中运行我的测试类。 - RAY
当你运行Eclipse时,是否右键单击图标并选择“以管理员身份运行”(如果你不知道,那么我假设答案是否定的)。 - hawkeye
不,我正在以普通的非管理员用户身份运行Eclipse。 - RAY
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中的一个错误,因此一开始这是可以工作的。

我在哪里见过你? - RAY

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接