我想将字符串与当前经过身份验证的用户的密码进行比较(加密密钥比较)。好像是从票证缓存中检索密码,但是我该怎么办呢?

谢谢

最佳答案

无法从客户端或kerberos系统中任何地方的可用信息中检索密码。根据kerberos article in wikipedia(该信息与我在其他来源所读的信息类似),用户输入的密码通过单向函数散列为某种东西,从那时起它就成为秘密。该密钥在密钥分发中心(KDC)上可用,并且使用该密钥对票证授予票证(TGT)进行对称加密。为了接收和使用TGT,客户端必须提供解密包的秘密-这是通过向用户询问密码来完成的。这样做之后,TGT被解密并保存在票证缓存中。

TGT本身具有用kdc知道的秘密加密的部分,它不保存用户密码。例如,如this article from 2000所述,密码也不存储在票证缓存中-只是TGT的一部分。据我了解,不可能使用票证缓存检查用户密码。

您可能想要编写自己的CallbackHandler以某种方式重用或以编程方式提供凭据,但是据我了解,这可能会导致安全问题。

您可能想考虑使用完全不同的方法来解决问题,但是几乎没有什么信息可以建议其他解决方案。

10-08 17:02