Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java windows server 2012/windows 8的TGT会话密钥_Java_Windows_Kerberos_Jaas - Fatal编程技术网

Java windows server 2012/windows 8的TGT会话密钥

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

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

更新:

我尝试过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();
            }
        }

}
试试{
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上创建的吗?