从缓存

时间:2018-01-31 21:58:22

标签: java kerberos jgit

我正在尝试使用Kerberos身份验证,同时使用JGit提取回购,但我收到以下错误:

  来自票证缓存的

空凭证
          [Krb5LoginModule]身份验证失败

这是我的login.conf

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和overriden configure方法,如下所示

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”表示Credentials缓存是API(我在MacOS Sierra上)。我怎样才能摆脱这种失败?

1 个答案:

答案 0 :(得分:0)

该错误表示具有凭单凭证的文件为空。此外,由于您已禁用密码提示(使用doNotPrompt="true"),因此Krb5LoginModule没有其他方法可以进行身份​​验证,因此它会报告失败。

请注意,您没有login.conf(使用ticketCache="path_to_file")上指定缓存文件。因此,为避免混淆,请对其进行定义,然后再次检查您是否拥有这样的文件,并且具有凭据(使用klist -c path_to_file

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