Windows Server / Windows 8的TGT会话密钥

时间:2014-07-21 06:53:09

标签: java windows kerberos jaas

我阅读了许多指定创建allowtgtsessionkey注册表项的解决方案,以便允许TGT会话密钥存储在LSA缓存中。请问我是否使用的是Windows 2012 R2或Windows 8,是否还需要创建此注册表项?使用java 7

更新:

我已经尝试过allowtgtsessionkey注册表项,但是当我从LSA缓存获取凭据并将其写入文件然后将其与kinit.exe(java)创建的文件进行比较时,似乎仍然存在一些基本信息丢失。

来自krb5cc_myuser的输出:

# strings krb5cc_myuser
SOME.EXAMPLE.DOMAIN
myuser
SOME.EXAMPLE.DOMAIN
myuser
SOME.EXAMPLE.DOMAIN
krbtgt
SOME.EXAMPLE.DOMAIN
SOME.EXAMPLE.DOMAIN
krbtgt
SOME.EXAMPLE.DOMAIN
:C:]|
"D+"
a(>&;
4   &dx
^ vp
okhd
bSxs

从Windows LSA版本输出字符串:

# strings krb5cc_encoded_ASN1 
SOME.EXAMPLE.DOMAIN
krbtgt
SOME.EXAMPLE.DOMAIN
s*q0u
} +c
iV{P
+qwF
........

我没有看到" myuser"从缓存中获取的票证。

我正在使用此代码从LSA获取缓存。

try {           
    LoginContext lc = new LoginContext("SignedOnUserLoginContext");
    lc.login();
    Subject signedOnUserSubject = lc.getSubject();
    Set<Object> privateCred = signedOnUserSubject.getPrivateCredentials();

        for (Object privates : privateCred) {
            if (privates instanceof KerberosTicket) {
                KerberosTicket ticket = (KerberosTicket)privates;
                return ticket.getEncoded();
            }
        }

}

任何人都可以提供建议吗?

感谢

0 个答案:

没有答案