8

通过 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.xHTTP@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 地址?

4

3 回答 3

13

Kerberos 不适用于 IP 地址,它仅依赖于域名和正确的 DNS 条目。

于 2012-09-05T10:00:10.043 回答
1

在 Microsoft KB 文章中,它说这是设计使然:

https://support.microsoft.com/en-ca/kb/322979

以上知识库的标题为:使用IP地址连接SMB共享时不使用Kerberos

于 2016-07-08T21:59:05.203 回答
0

我意识到这是一个非常古老的线程,但它是任何相关搜索的首选。我认为值得注意的是,微软最近添加了使用 IPv4 和 IPv6 的 Kerberos 客户端支持。

从 Windows 10 版本 1507 和 Windows Server 2016 开始,可以将 Kerberos 客户端配置为支持 SPN 中的 IPv4 和 IPv6 主机名。

为了减少禁用 NTLM 的影响,引入了一项新功能,允许管理员使用 IP 地址作为服务主体名称中的主机名。此功能通过注册表项值在客户端上启用。

由于这是客户端修复,因此您的 Kerberos 客户端必须运行适当版本的 Windows 并接收 TryIPSPN 注册表项。您的服务还必须在 Active Directory 中注册一个基于 IP 的 SPN。

于 2019-06-27T11:56:09.387 回答