【发布时间】:2012-10-01 02:38:57
【问题描述】:
我们的网络中有两个不同的应用程序,它们都使用 Kerberos 对用户进行身份验证。其中一个在最大时会出现问题。票证有效期已过。
应用程序 x 成功请求:
AS-REQ =>
<= KRB5KDC_ERR_PREAUTH_REQUIRED
AS-REQ =>
<= AS-REP
对应用程序 y 的请求不成功:
AS-REQ =>
<= KRB5KDC_ERR_PREAUTH_REQUIRED
AS-REQ =>
<= KRB5KDC_ERR_PREAUTH_FAILED
我们可以在网络捕获中看到的唯一区别是应用 x 使用 NT-PRINCIPAL,而应用 y 使用 NT-ENTERPRISE。 App y 在 Java 1.6 上运行,因此不应出现早期版本的 preauth 错误。
高度赞赏任何想法。
【问题讨论】:
-
它可能会因为用于预身份验证消息的加密算法不受支持而失败。
-
这很有趣,我注意到 AD 似乎使用 des-cbc-md5,但我们只使用 rc4-hmac 进行配置。我们是否必须在 keytab 加密生成选项或 krb5.conf 中包含该算法?
-
最好清楚 AD 实际支持什么,然后相应地配置 krb5.conf。首先,如果您知道可以使用 des-cbc-md5,请配置为使用它。按照今天的标准,DES 很弱,所以你应该避免它。另请注意,可以将 AD 用户帐户专门配置为仅使用 DES 以便与过时的客户端进行互操作。
-
我们为我们的 keytab 和 krb5 配置配置了 RC4-HMAC,它似乎工作正常。只有当票到期时,我们才会遇到问题。这对你有意义吗?
-
您是否进行初始预认证?据我所知,预授权有自己的配置。
标签: java kerberos pre-authentication