iis – 使用401的Kerberos身份验证失败

前端之家收集整理的这篇文章主要介绍了iis – 使用401的Kerberos身份验证失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在 Windows 2008服务器上的IIS 7中部署了一个.NET MVC 3应用程序(我们称之为PROD).该应用程序启用了匿名和Windows身份验证 – 所有其他人都被禁用. applicationHost.config中指定的身份验证提供程序按此顺序为Negotiate和NTLM.

最近我们开始在这个应用程序中遇到身份验证问题.通过“启用集成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日志记录但在尝试访问应用程序后在事件查看器中找不到日志.我没有其他想法在哪里查看和检查什么.

首先,我要确认这是从客户端发生的,其中IE显示站点位于“受信任的站点”区域,并且“受信任的站点”区域配置为“使用当前用户名和密码自动登录”.

接下来,我怀疑http授权标头大小可能超过IIS限制.由于IIS限制实际上非常低,因此集成Kerberos授权非常容易受到此问题的影响,并且它不需要许多组成员资格来使令牌超过限制.

每个请求都包含http授权标头中的用户Kerberos令牌.因为令牌是编码的,所以它通常比实际使用的内存大得多.

您可以使用以下文档增加值:

Windows的Http.sys注册表设置
http://support.microsoft.com/kb/820129

我会使用以下值:

MaxRequestBytes – 设置为1048576
MaxFieldLength – 设置为65534

另一个有用的实用程序DelegConfig.您可以将其作为应用程序放在任何网站上,并连接以获得有关如何配置Kerberos身份验证的有用报告.这将需要作为受害者帐户(或适当配置的测试帐户,以显示受害者域中的症状)进行测试.

http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/delegconfig-delegation-configuration-reporting-tool.aspx

您可能还需要查看:

配置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

以下文章中还有一些很好的提示.

https://blogs.msdn.com/b/friis/archive/2009/12/31/things-to-check-when-kerberos-authentication-fails-using-iis-ie.aspx

特别是,使用NetMon或KerbSpy检查客户端是否连接到预期的SPN.

猜你在找的Windows相关文章