我有这样的场景:一个 Windows 2008 R2 域和一个带有 Apache 的 Linux 服务器(CentOs)。
我需要使用 kerberos 配置 SSO,以允许我们使用 IE 或 Chrome 的内部客户端在网站上进行身份验证而无需输入密码。
为了做到这一点,我遵循了本教程https://wiki.gentoo.org/wiki/Kerberos_Windows_Interoperability。
我的站点的 Apache 配置文件是:
AuthType Kerberos
AuthName "Kerberos Login"
KrbAuthRealms <MYREALM>
KrbServiceName HTTP/OTRS5@<MYREALM>
Krb5Keytab /etc/krb5.keytab
KrbMethodNegotiate On
KrbMethodK5Passwd Off
KrbSaveCredentials Off
KrbVerifyKDC Off
Require valid-user
现在,当我尝试连接到该网站时,我收到 401 代码。
在error.log中我发现:
kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
Acquiring creds for HTTP/OTRS5@<MYREALM>
Verifying client data using KRB5 GSS-API
Client didn't delegate us their credential
在 journalctl 上:
GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Server not found in Kerberos database)
我对此一无所知。
你能帮助我吗?问候 Francesco
答案1
我发现了这个问题。1)我在 DC 上启用了 kerberos 登录https://support.microsoft.com/en-us/kb/262177
2) 再次检查登录后,我在安全日志下发现此错误:KDC 在处理 Kerberos 身份验证请求时遇到重复名称。重复名称为 HTTP/(类型为 DS_SERVICE_PRINCIPAL_NAME)。这可能会导致身份验证失败或降级为 NTLM。为了防止这种情况发生,请删除 Active Directory 中 HTTP/ 的重复条目。3) 我使用此过程查找重复条目 https://support.microsoft.com/en-us/kb/321044
4) 我使用 Active Directory 用户和计算机删除重复的条目:a) 打开 ADUAC b) 查看->高级功能 c) 打开具有重复条目的对象 d) 打开属性编辑器 e) 选择 servicePrincipalName 并删除该条目 f) 再次禁用 kerberso 日志记录
再见弗朗西斯科