【问题标题】:Kerberos fails when accessing site by IP address通过 IP 地址访问站点时 Kerberos 失败
【发布时间】:2023-03-13 08:25:01
【问题描述】:

通过 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 [客户端 10.10.1.x] gss_acquire_cred() 失败: 未指定的 GSS 故障。次要代码可能会提供更多信息(关键 未找到表条目)

src/mod_auth_kerb.c(1261): [客户端 10.10.1.x 获取凭据 HTTP@my-host [调试] src/mod_auth_kerb.c(1407): [客户端 10.10.1.x] 使用 KRB5 GSS-API [调试] 验证客户端数据 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 地址?

【问题讨论】:

    标签: authentication ubuntu-10.04 kerberos


    【解决方案1】:

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

    【讨论】:

    • 在所有关于 Kerberos 的文章中从未提及过,这让我感到非常震惊和奇怪。您能说出其他支持 IP 地址的 SSO 身份验证方式吗?
    • 我不这么认为。请阅读thisthis。嗯,SPN 这个名字意味着它在 names 而不是 IP 地址上运行。在企业环境中没有 Kerberos 的替代品。其他一切都不是 SSO。为什么不想使用主机名?整个 Active Directory 都是关于 DNS、主机名和 Kerberos。它使用 DNS 来发现 DC 和 KDC 以及更多服务。
    • 谢谢,您的回复非常有帮助。我们的合作伙伴使用 IP 地址链接,很难让他们使用 DNS。
    • 所以,你可能会接受我的回答。您的合作伙伴应该使用 Kerberos,因为它本来就是要使用的,或者使用一些其他机制,例如 LDAP 绑定,但这会迫使任何人一遍又一遍地提供凭据。
    • 我发现overthere库可能对IP目标使用Kerberos授权,我调查了源代码,并使用overthere代码sn-ps创建了一个示例项目。它有效,但我不明白如何
    【解决方案2】:

    在 Microsoft 知识库文章中,它说这是设计使然:

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

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

    【讨论】:

    • 链接已失效。
    【解决方案3】:

    我意识到这是一个非常老的话题,但它是任何相关搜索的首选。我认为值得注意的是Microsoft has recently added Kerberos client support using IPv4 and IPv6.

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-03
      • 2011-11-21
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 2016-01-29
      • 2021-03-03
      • 2019-05-04
      • 2015-05-06
      相关资源
      最近更新 更多