【发布时间】:2020-09-10 11:29:03
【问题描述】:
如果我尝试使用 Kerberos 密钥表并行进行多次身份验证,我会随机收到错误消息,指出凭据缓存已损坏。
我可以使用以下脚本重现此问题。但是,在我的实际用例中,有进程同时调用kinit,我无法控制它们:
kdestroy
kinit $USER@$REALM -k -t $HOME/$USER.keytab && echo "OK" &
kinit $USER@$REALM -k -t $HOME/$USER.keytab && echo "OK" &
kinit $USER@$REALM -k -t $HOME/$USER.keytab && echo "OK" &
kinit $USER@$REALM -k -t $HOME/$USER.keytab && echo "OK" &
kinit $USER@$REALM -k -t $HOME/$USER.keytab && echo "OK"
每次运行时都会产生随机输出。这种输出的一个例子如下:
kinit: Failed to store credentials: Internal credentials cache error (filename: /tmp/krb5cc_1645005342) while getting initial credentials
kinit: Failed to store credentials: No credentials cache found (filename: /tmp/krb5cc_1645005342) while getting initial credentials
kinit: Failed to store credentials: Bad format in credentials cache (filename: /tmp/krb5cc_1645005342) while getting initial credentials
OK
OK
有没有办法让kinit“等待它的轮到”并且如果它已经被另一个进程访问,则不要访问缓存?
【问题讨论】:
-
在该脚本中,在每行之间放置一个“睡眠”语句,使其在每次 kinit 调用之间等待 1 -3 秒。
-
脚本只是为了重现错误。但在我的实际用例中,有进程同时调用
kinit,我无法控制它们 -
我看到您使用的是 Unix 或 Linux。您使用的是操作系统版本的 kinit 还是 Java kinit?如果是 Java,JRE/JDK 的版本是什么?
标签: kerberos