Kerberos Apache 一直要求使用 BASIC

Kerberos Apache 一直要求使用 BASIC

在我的网站上为 Kerberos 身份验证苦苦挣扎了很长时间之后,我终于来找你了,因为我迷路了。我目前正在创建一个经典的 PHP 网站,我想通过使用 Kerberos 来实现无缝身份验证。

情况是这样的:

  1. 我有一个具有 KDC 角色的 Windows 2012R2 域控制器。
  2. 我有一个 Linux LAMP 服务器(fqdn = webserver.domain.local)。
  3. 我的网站托管在 Linux 服务器上,可以通过 HTTPS 访问,名称如下:site.domain.local

我主要按照以下说明设置了我的 Kerberos 身份验证:https://serverfault.com/a/753956/506532(我的 SPN 是) 我在 IE 设置中也将其注册为“内联网网站”。HTTPS/[email protected]
site.domain.local

当我使用 kinit 从 Web 服务器检查 kerberos 身份验证是否正常工作时,身份验证成功,但是当我从计算机(当然,它链接到域)访问 site.domain.local 时,它提示我使用 BASIC 进行身份验证。我可以使用我的凭据成功登录,但我认为 kerberos 无法正常工作,我不明白为什么。

访问该网站时,我在 Apache 日志中收到此错误:

gss_accept_sec_context() 失败:请求了不受支持的机制(,未知错误)

启用调试模式后,我收到以下日志:

kerb_authenticate_user 使用用户 (NULL) 和 auth_type Kerberos 输入

kerb_authenticate_user 使用用户 (NULL) 和 auth_type Kerberos 输入

获取 HTTPS/ 的凭证[电子邮件保护]

使用 KRB5 GSS-API 验证客户端数据

客户没有将他们的凭证委托给我们

警告:收到的令牌似乎是 NTLM,Kerberos 模块不支持该令牌。请检查您的 IE 配置。

GSS-API 主要状态:00010000,次要状态:00000000

我搜索了解决方案,每个有这种行为的人都通过在 IE 中将网站设置为“内联网网站”来解决这个问题,但这已经为我完成了......

有人有什么主意吗 ?

答案1

您的 SPN 不正确。应该是HTTP/site.domain.local

  • HTTP 和 HTTPS 被视为同一服务类(HTTP)。
  • 您不应在 SPN 中包含领域名称(至少对于 Active Directory 而言,不确定其他 Kerberos 实现)。

相关内容