我们在使用 Apache mod_auth_kerb 进行 Kerberos 身份验证时遇到了一个奇怪的问题。我们使用了一个非常简单的 krb5.conf,其中只配置了一个(主)AD 服务器。林中有许多域,似乎 SSO 对大多数域都有效,只有一个域除外。
我不知道该域有什么特殊之处,我在 Apache 日志中看到的错误消息是“在 Kerberos 数据库中找不到服务器”:
[Wed Aug 31 14:56:02 2011] [debug] src/mod_auth_kerb.c(1025): [client xx.xxx.xxx.xxx] Using HTTP/[email protected] as server principal for password verification
[Wed Aug 31 14:56:02 2011] [debug] src/mod_auth_kerb.c(714): [client xx.xxx.xxx.xxx] Trying to get TGT for user [email protected]
[Wed Aug 31 14:56:02 2011] [debug] src/mod_auth_kerb.c(625): [client xx.xxx.xxx.xxx] Trying to verify authenticity of KDC using principal HTTP/[email protected]
[Wed Aug 31 14:56:02 2011] [debug] src/mod_auth_kerb.c(640): [client xx.xxx.xxx.xxx] krb5_get_credentials() failed when verifying KDC
[Wed Aug 31 14:56:02 2011] [error] [client xx.xxx.xxx.xxx] failed to verify krb5 credentials: Server not found in Kerberos database
[Wed Aug 31 14:56:02 2011] [debug] src/mod_auth_kerb.c(1110): [client xx.xxx.xxx.xxx] kerb_authenticate_user_krb5pwd ret=401 user=(NULL) authtype=(NULL)
当我尝试在运行 Apache 的机器上 kinit 该用户时,它可以正常工作。我还检查了 DNS 查找是否正常工作,包括反向查找。
谁能告诉我发生什么事了?
答案1
可能是域不在您的 AD 林中,而只是与 NTML 信任相关联?您需要 Win2k3 Forrest 功能级别才能启用林信任。(外部信任仅为 NTLM)。