gpt4 book ai didi

java - 无法从 LSA 缓存获取 TGT 票证

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:11 29 4
gpt4 key购买 nike

我有一个 java 客户端,它应该从 LSA 接收 TGT 票证以进行客户端服务器身份验证。因此 krbc_{username} 文件不应使用并被删除。如果我使用 kinit.exe 设置 krbc_{username} ,它会按预期工作,但就像之前所说的那样,这不是我的目标。但是LSA Cache中的TGT却找不到。这是我在控制台中看到的。

Found no TGT's in LSA

代码片段。

        try {
LoginContext lc = new LoginContext("Client", new LibsCallbackHandler(userTicket));

lc.login();
Subject s = lc.getSubject();
logger.info(s);

在 jaas.conf 中,useTicketCache 设置为 true。如果我使用正在使用的对话框登录,则设置用户票。如果我使用我的用户名和密码,我会收到一张新票,这很好,但不足以进行单点登录。我还在注册表中将“allowtgtsessionkey”设置为 1。

最佳答案

这个question应该包含您问题的解决方案,让我们引用答案:

Delete the krb5cc* file in a folder with the current user name underC:\Users

您还需要设置一个注册表项,引用:

have also setup the following registry value to 1:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters

Value Name: AllowTGTSessionKey

Value Type: REG_DWORD

Value: 1

另一个问题可能与票证 keyType 有关,您的应用程序将忽略具有不受支持的 keyType 的票证。例如,我将类型 18 票证放入 LSA,如果不安装 Java JCE 扩展(来自 Oracle),它就无法与 Jaas 一起使用。为了支持更广泛的 keyType,您需要安装 Oracle Java JCE 扩展(添加对 AES >= 256.. 的支持)。 OpenJDK Java 发行版支持所有 keyTypes/AES,无需扩展。

您还应该在完整的 kerberos Debug模式下执行应用程序,它将提供有用的日志消息:

java -Dsun.security.krb5.debug=true -Dsun.security.jgss.debug=true -jar appname.jar

关于java - 无法从 LSA 缓存获取 TGT 票证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40132908/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com