【发布时间】:2011-04-16 02:10:10
【问题描述】:
我们有一些使用集成 Windows 身份验证在虚拟目录中设置的 Web 内容。虚拟目录在使用自定义身份(自定义用户帐户)的应用程序池下运行。问题是 NTLM 身份验证有效,但 Kerberos 身份验证无效。这是在 IIS 6 下工作的相同配置,但我们需要迁移到 IIS 7 并且 Kerberos 身份验证不起作用。
以下是有关我的环境的更多信息:
虚拟目录身份验证设置:
- 除 Windows 身份验证外,所有功能均已禁用
- 启用内核模式身份验证:已启用
应用程序池设置:
- 托管管道模式:经典
- 身份:自定义本地用户
Web.config 设置:
- 身份验证模式 = "Windows"
- system.serviceModel/bindings/basicHttpBinding/binding/security/mode = TransportCredentialOnly
- system.serviceModel/bindings/basicHttpBinding/binding/security/transport/clientCredentailType = Windows
- serviceHostingEnvironment/aspNetCompatibilityEnabled = true
虚拟目录权限:
- 自定义本地组:我们将域用户添加到本地组以访问服务
操作系统设置:
- IIS 7
- Windows Server 2008 x64 标准 SP2
这是我从 fiddler 那里得到的比较 IIS 6 和 IIS 7 的分析。Kerberos 身份验证在 IIS 6 中运行良好,应用程序池以自定义身份运行。
参考(IIS 6)(作品):
提琴手:
(使用域\用户)
请求 1(无身份验证)
No Proxy-Authorization Header is present.
No Authorization Header is present.
响应 1 (401)(挑战)
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
请求 2(Kerberos 票证)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
响应 2 (401)(Kerberos 回复)
WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>
请求 3(Kerberos 票证)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
响应 3 (401)(Kerberos 回复)
WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>
请求 4(Kerberos 票证)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
响应 4 (200)(Kerberos 回复)
WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>
交易完成,浏览器显示页面。
(IIS 7)(不起作用):
提琴手:
(使用域\用户)
请求 1(无身份验证)
No Proxy-Authorization Header is present.
No Authorization Header is present.
响应 1 (401)(协商)
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
请求 2(Kerberos 票证)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
响应 2 (401)(协商)
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
请注意,IIS 7 在响应 2 中不接受我的 Kerberos 票证。知道为什么不?我是否需要重新配置 IIS 7 中的某些内容才能使 Kerberos 身份验证正常工作?
【问题讨论】:
标签: wcf authentication iis-7 kerberos ntlm