Java windows server 2012/windows 8的TGT会话密钥
我阅读了许多指定创建allowtgtsessionkey注册表项的解决方案,以便允许TGT会话项存储在LSA缓存中。请问我是否正在使用windows 2012 R2或windows 8,是否仍需要创建此注册表项?使用Java7 更新: 我尝试过allowtgtsessionkey注册表项,但当我从LSA缓存中获取凭据并将其写入文件,然后将其与kinit.exe(java)创建的注册表项进行比较时,似乎仍然缺少一些基本信息 krb5cc_myuser的输出:Java windows server 2012/windows 8的TGT会话密钥,java,windows,kerberos,jaas,Java,Windows,Kerberos,Jaas,我阅读了许多指定创建allowtgtsessionkey注册表项的解决方案,以便允许TGT会话项存储在LSA缓存中。请问我是否正在使用windows 2012 R2或windows 8,是否仍需要创建此注册表项?使用Java7 更新: 我尝试过allowtgtsessionkey注册表项,但当我从LSA缓存中获取凭据并将其写入文件,然后将其与kinit.exe(java)创建的注册表项进行比较时,似乎仍然缺少一些基本信息 krb5cc_myuser的输出: # strings krb5cc_my
# 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();
}
}
}
试试{
LoginContext lc=新的LoginContext(“SignedOnUserLoginContext”);
lc.login();
Subject signedOnUserSubject=lc.getSubject();
Set-privateCred=signedOnUserSubject.GetPrivateCredenticates();
用于(私人物品:私人物品){
if(路缘石专用实例){
KerberosTicket客票=(KerberosTicket)私家车;
返回票证。getEncoded();
}
}
}
有人能提供建议吗
谢谢搜索我的答案,我已经这样做了。嗨,Michael-O,谢谢。我搜索了一下,但只找到了2000/2003年。较新的windows(如2012 R2和windows 8)是否需要设置此密钥?谢谢您也可以将WinXP修复程序应用于Windows 8。您好,Michael-O此注册表项是在客户端以及KDC/Active directory上创建的吗?