我遇到了如下所述的类似问题:ARR 3 IIS 7.5 Windows 身份验证不起作用
不幸的是,该解决方案在我们的服务器上不起作用。
在我们的测试环境中,我们有一个 ARR 服务器(Win 2012、IIS 8.0)和一个 Web 服务器(Win 2008R2)。Web 服务器上的 Web 应用程序需要 Windows 身份验证,当客户端使用 NTLM 作为协商请求的响应时,它已经可以正常工作。但是当客户端发送 Kerberos 票证时,请求不会转发到 Web 服务器,而是由 ARR 服务器使用 HTTP 401 消息进行应答。
我已经尝试了很多建议,但都没有成功。ARR 或 Web 服务器上的身份验证失败。
我们已经运行了 ARR 2.5,但我也已经测试过 ARR 3.0,但没有成功。
我还为 ARR 和 Web 服务器配置了 SPN 条目(http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/the-biggest-mistake-serviceprincipalname-s.aspx)。并尝试对 ARR 和 Web 服务器上的应用程序池使用相同的用户帐户。
- - - - 编辑 - - - -
- 我尝试了其他工作解决方案的整个方法(ARR 3 IIS 7.5 Windows 身份验证不起作用)
- 在 ARR 和 Web 上(分别)禁用 Kerberos,以便仅支持 NTLM(在 ARR 上失败)
- 具有应用程序池标识和真实帐户的应用程序池(在 ARR 和 Web 上相同)采用不同的 SPN 方法
- 升级至 ARR 3.0 并重复所有尝试
问题始终是,即使 ARR 配置为匿名,ARR 服务器也会对协商标头做出反应。
顺便说一句:KB 2732764 很久以前就安装了
答案1
我终于找到了适合我们的解决方案:
由于我们不需要“多跳”身份验证(=kerberos),因此我能够强制使用 NTLM。在身份验证(站点)下的 Web 服务器上,我更改了 Windows 身份验证的提供程序并删除了除 NTLM 之外的所有内容。因此,NTLM 是唯一可用的身份验证方式。
在 ARR 上,我将所有内容改回原始设置并仅启用匿名访问。然后 ARR 能够将身份验证传递到 Web 服务器。
在我看来,微软在 Kerberos 处理方面有一个错误,它不依赖于身份验证是在内核中还是通过 ARR 进行。