gpt4 book ai didi

Java Kerberos 票证续订 TGT

转载 作者:行者123 更新时间:2023-12-04 05:33:50 24 4
gpt4 key购买 nike

我在其中一个 POC 中使用 Krb5LoginModule。我提供了useDefaultCache=true 和renewTGT=true。

尽管我已经提到了renewTGT=true,但当票证过期时代码会抛出异常。我已在 Windows 注册表中将 allowtgtsessionkey 值设置为 1(我正在运行 XP SP2)。 KDC (ActiveDirectory) 设置是默认设置。票证有效期 = 10 小时,续订请求阈值 = 7 天。

源代码

import java.util.HashMap;
import java.util.Map;
import javax.security.auth.Subject;
import com.sun.security.auth.module.Krb5LoginModule;

public class Temp3 {
public static void main(String[] args) throws Exception {
System.setProperty("sun.security.krb5.debug", "true");

Subject subject = new Subject();

Krb5LoginModule krb5 = new Krb5LoginModule();

Map <String, String> map = new HashMap <String, String>();
map.put("useTicketCache", "true");
map.put("doNotPrompt", "true");
map.put("renewTGT", "true");
map.put("debug", "true");

krb5.initialize(subject, null, null, map);
krb5.login();
krb5.commit();
System.out.println(subject);
}
}

当票据未过期时,代码工作正常,即我在运行上述代码后 10 小时内运行 kinit 的时间。

我写这个 POC 是因为我必须使用 SQL Server 驱动程序(4.0 版)运行基于 JDBC 的应用程序。我不希望长时间运行的服务在数据库重新连接尝试期间失败,这可能是由于网络故障等因素导致管道破裂。

最佳答案

你走错路了。你应该使用的所有拳头 LoginContext获取凭据而不是直接与 Kerberos 5 交互。其次,非人工访问需要 key 表。这相当于一个 TGT。为您的服务器导出 Keytab 并修改 Krb5LoginModule配置。 This教程会帮助你。

关于Java Kerberos 票证续订 TGT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12242085/

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