最近我们开始在这个应用程序中遇到身份验证问题.通过“启用集成Windows身份验证”选项连接IE的用户(与服务器位于不同的域)选中“未授权.HTTP错误401.请求的资源需要用户身份验证”.消息,即使他们提供有效的凭据.从Firefox访问应用程序时,不会出现问题.此外,当使用IE“启用集成Windows身份验证”未选中时,一切正常.
从我读过的有关Internet上类似问题的内容来看,我发现我们在Kerberos配置不正确时遇到了一些问题.事实证明,NTLM身份验证工作得很好.我检查了SPN并且它们似乎配置正确(有默认配置,因为我们的应用程序正由服务器的netBios名称访问).
有趣的是,我们有另一台服务器(让我们称之为DEV),它们拥有完全相同的应用程序,并且位于完全相同的域中,并且具有相同的身份验证和身份验证提供程序配置,并且应用程序池在相同的帐户下运行,并且身份验证仅适用于精细.唯一的区别是PROD最近安装了.NET 4,但我不认为这可能是一个问题.此外,PROD在IIS中的以下虚拟目录中托管此应用程序:Sites / XYZ / XYZ,以便您通过URL http:// server:8666 / XYZ访问该站点. DEV上的应用程序直接在Sites / XYZ中托管在IIS中,并通过URL http:// server2:8666访问.
你能告诉我还能检查一下吗?我尝试打开Kerberos日志记录但在尝试访问应用程序后在事件查看器中找不到日志.我没有其他想法在哪里查看和检查什么.
接下来,我怀疑http授权标头大小可能超过IIS限制.由于IIS限制实际上非常低,因此集成Kerberos授权非常容易受到此问题的影响,并且它不需要许多组成员资格来使令牌超过限制.
每个请求都包含http授权标头中的用户Kerberos令牌.因为令牌是编码的,所以它通常比实际使用的内存大得多.
您可以使用以下文档增加值:
Windows的Http.sys注册表设置
http://support.microsoft.com/kb/820129
我会使用以下值:
MaxRequestBytes – 设置为1048576
MaxFieldLength – 设置为65534
另一个有用的实用程序DelegConfig.您可以将其作为应用程序放在任何网站上,并连接以获得有关如何配置Kerberos身份验证的有用报告.这将需要作为受害者帐户(或适当配置的测试帐户,以显示受害者域中的症状)进行测试.
您可能还需要查看:
配置Internet Information Services上承载的Web应用程序时如何使用SPN
http://support.microsoft.com/kb/929650
特别:
“在Active Directory中,验证帐户是否敏感且无法委派复选框,以便访问该应用程序的用户清除.”
“验证属于Kerberos进程的所有计算机是否具有一致的名称解析并通过Kerberos信任进行连接.例如,验证Kerberos进程中涉及的计算机是在同一个林中还是跨林的一部分Kerberos信任.“
“验证令牌大小是否超过为MaxTokenSize属性设置的值.” (MaxTokenSize应设置为65535).
Internet Explorer 6无法使用Kerberos身份验证协议连接到使用非标准端口的网站
http://support.microsoft.com/kb/908209
特别是,使用NetMon或KerbSpy检查客户端是否连接到预期的SPN.