通过 IP 地址访问受 Kerberos 保护的站点时出现问题。例如:
http:/10.10.1.x:3001/
失败。
http:/my-host:3001/
sso 成功完成。
Apache错误日志说:
src/mod_auth_kerb.c(1261):[client 10.10.1.x] 获取 HTTP@10.10.1.x [client 10.10.1.x] gss_acquire_cred() 的凭据失败:未指定的 GSS 失败。次要代码可能会提供更多信息(未找到键表条目)
src/mod_auth_kerb.c(1261): [client 10.10.1.x Acquiring creds for HTTP@my-host [debug] src/mod_auth_kerb.c(1407): [client 10.10.1.x] 使用 KRB5 GSS 验证客户端数据-API [debug] src/mod_auth_kerb.c(1423): [client 10.10.1.x] 验证返回码 0
如您所见,Kerberos 尝试查找HTTP@10.10.1.x
或HTTP@my-host
委托人。为这两个主体在 ActiveDirectory 中创建了虚拟帐户。在 keytab 文件中还包括它们:
KVNO Timestamp Principal
---- ----------------- -----------------------------------------------------
5 01/01/70 03:00:00 HTTP/10.10.1.x@MY_DOMAIN.LAN (ArcFour with HMAC/md5)
11 09/04/12 12:03:01 HTTP/my-host@MY_DOMAIN.LAN (ArcFour with HMAC/md5)
Kinit 对他们俩都有效。
服务器上的 Kerberos 配置:
Krb5Keytab /etc/krb5.keytab
AuthType Kerberos
KrbMethodNegotiate On
AuthName "Kerberos Login"
KrbAuthRealms MY_DOMAIN.LAN
KrbVerifyKDC Off
KrbMethodK5Passwd On
Require valid-user
有人能猜到问题出在哪里吗?是否可以在 Kerberos SSO 中使用 IP 地址?