我正在尝试使用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上)。我怎样才能摆脱这种失败?
答案 0 :(得分:0)
该错误表示具有凭单凭证的文件为空。此外,由于您已禁用密码提示(使用doNotPrompt="true"
),因此Krb5LoginModule
没有其他方法可以进行身份验证,因此它会报告失败。
请注意,您没有未在login.conf
(使用ticketCache="path_to_file"
)上指定缓存文件。因此,为避免混淆,请对其进行定义,然后并再次检查您是否拥有这样的文件,并且具有凭据(使用klist -c path_to_file
)
如果您没有有效的缓存,则可以使用kinit -c path_to_file
创建一个新的缓存。