当前位置: 首页 > 知识库问答 >
问题:

从缓存中获取Kerberos票证

吴高畅
2023-03-14

我试图在使用JGit拉取回购时使用Kerberos身份验证,但出现以下错误:

来自Ticket Cache的空凭据
[Krb5LoginMoules]身份验证失败

这是我的登录名。形态

com.sun.security.jgss.krb5.initiate {
              com.sun.security.auth.module.Krb5LoginModule required
                            debug="true"
                  doNotPrompt="true"
              useTicketCache="true"
              principal="abcd"
              refreshKrb5Config="true"
              isInitiator="true";

 };

我使用自定义的JcshConfigSessionFactory和重写配置方法,如下所示

protected void configure(Host hc, Session session) {
    session.setConfig("StrictHostKeyChecking", "no");
    session.setConfig("GSSAPIAuthentication", "yes");
    session.setConfig("KbdInteractiveAuthentication", "no");
    session.setConfig("PasswordAuthentication", "no");
    session.setConfig("ChallengeResponseAuthentication", "no");
    session.setConfig("PreferredAuthentications", "gssapi-with-mic");
    session.setConfig("Protocol", "2");
}

“klist”说凭证缓存是API(我在MacOS Sierra上)。我怎样才能克服这次失败?

共有1个答案

夏侯枫
2023-03-14

此错误表示带有票证凭据的文件为空。此外,由于您已经禁用了密码提示符(使用doNotPrompt="true"),因此没有其他方法用于Krb5LoginMoules进行身份验证,因此它报告失败。

请注意,您没有在login.conf(使用ticketCache="path_to_file")指定缓存文件。所以,为了避免混淆,定义它,并仔细检查您是否有这样的文件和它是否有凭据(使用klist-cpath_to_file

如果没有有效的缓存,可以使用kinit-c path_to_file)创建一个新的缓存。

 类似资料:
  • 问题内容: 有谁知道如何使用Java GSS-API从密钥分发中心(KDC)获取服务票证? 我有一个胖客户端应用程序,该应用程序首先使用Krb5LoginModule通过JAAS进行身份验证以从票证缓存中获取TGT(背景:Windows例如使用kerberos实现,并将票证授予票证存储在安全的存储区域中)。从LoginManager中,我获得包含TGT的Subject对象。现在,我希望当我为我的服

  • get 获取普通类型的值 // 获取key 为 gender 的数据 await this.app.redis.get('gender') type 获取数据类型 ctx.body = await this.app.redis.type('name') 返回 string lrange 获取 list 类型中所有数据 // 表示获取数组中所有的值 0 ,-1 ctx.body = await th

  • 我正在开发一个用JAAS进行身份验证的Java应用程序,应该如下工作:(I)当用户的票证已经在本地缓存中时,它应该在不询问凭据的情况下对用户进行身份验证,(ii)当缓存中没有“uclient”的票证时,它应该请求用户名/密码,并将获取的票证保存到本地缓存中。 我的应用程序能够执行“i”,但不能执行“ii”,它正确地验证用户(创建主题/主体),但不会将Krb票证持久保存到缓存中。 问题 我如何实现/

  • 问题内容: 在我的服务器应用程序中,我正在从Java应用程序连接到受Kerberos保护的Hadoop群集。在应用程序启动时,我会打电话给 我正在使用本机API(例如和)进行基本的File操作 我的应用程序在24小时后引发以下错误。这就是Kerberos票证的到期日。 我的应用程序使用Java 8,并且遇到了此错误。 但是,看起来我的应用程序使用的hadoop- common-2.7.1.2.4.

  • 问题内容: 我有一个Java服务器和客户端应用程序。这些应用程序在Windows计算机上运行。使用kerberos身份验证的服务器上的客户端登录。它是使用jgssapi实现的。 首先,客户端从系统中检索存储的缓存tgt票证,以从kdc生成令牌。问题是- 在Windows中锁定用户会话(锁定屏幕或更改用户)后,系统中没有缓存的tgt票证(由C:\ Windows \ System32 \ klist

  • 问题内容: 我正在开发一个使用JAAS执行身份验证的Java应用程序,它应按以下方式工作:(i)当用户的票证已在本地缓存中时,它应在不询问凭据的情况下对用户进行身份验证;(ii)当没有“ uclient”的票证时在缓存中,它应该询问用户名/密码并将获取的票证保存到本地缓存中。 我的应用程序可以执行“ i”,但不能执行“ ii”,它可以正确验证用户身份(创建主题/主体),但是不能将Krb票据持久化到