7

我正在解决为什么我无法通过为 Windows 身份验证和模拟配置的 ASP.Net 站点上的登录对话框。

我有一个 ASP.Net 2.0 应用程序,我正在尝试将它部署在带有 IIS 7.5 的 Windows 7 上。我创建了一个新站点,并将其绑定到 localhost 和一个完全限定的域名。FQDN 在我的 hosts 文件中,并被重定向到 127.0.0.1

该站点还使用我创建的 AppDomain 运行,具有集成管道模式,并且流程模型标识设置为 ApplicationPoolIdentity。

Web.config 包括以下内容:

<trust level="High" />
<authentication mode="Windows" />
<authorization>
  <deny users="?"/>
</authorization>
<identity impersonate="true"/>`

站点目录上的 ACL 设置为所有人(完全控制 - 用于测试)。应用程序池虚拟帐户(Windows 7 事物)也设置为完全控制站点的物理目录。

IIS 身份验证启用了 ASP.Net 模拟并启用了 Windows 身份验证。

当我作为 localhost 连接到该站点时,它允许我通过登录提示并且应用程序加载而不会发生意外。

当我作为该站点/ip/端口的主机头绑定中设置的 FQDN 连接到该站点时,我无法通过登录提示。单击取消会生成 http 401.1 错误页面。

为什么?

4

2 回答 2

7

这个问题的答案将是一种称为身份验证环回检查的安全功能,早在 Windows 2003 SP1 中就引入了,根据:http: //support.microsoft.com/kb/926642

我试图使用在我的 /etc/hosts 文件中定义为指向 127.0.0.1 的主机头连接到我的 iis 主机头实例,同时在运行 iis 的机器上登录 - 这是环回方案。

它会在各种情况下咬你,比如这个(http://blogs.bluethreadinc.com/thellebuyck/archive/2008/10/30/401.1-error-when-accessing-sharepoint-from-server.aspx)或这个世界谷歌的伤害(http://www.google.ca/search?q=authentication+loopback+check&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

修复涉及一些简单的注册表编辑工作:http: //blogs.bluethreadinc.com/thellebuyck/archive/2008/10/30/401.1-error-when-accessing-sharepoint-from-server.aspx

我也不需要为我的情况启用模拟,所以我禁用了它,现在我可以在本地和远程使用我伪造的 fqdn 进行连接

于 2010-06-11T14:21:20.773 回答
7

Velvet 提供的 URL 已关闭。我在archive.org 上找到了一个缓存版本:

" 从服务器访问 SharePoint 时出现 401.1 错误

我过去在设置 SharePoint 环境(供内部开发使用和客户使用)时多次遇到此问题,所以我认为是时候写一篇关于它的博客文章了。如果您在 Windows Server 2003 SP1 或更高版本上运行 SharePoint Server 2007 或 WSS 3.0,如果您尝试使用服务器本身的主机标头访问 SharePoint 站点(即主机文件已指向 portal.mydomain.com),则会遇到身份验证问题到 127.0.0.1)。此问题表现为 Microsoft 在 Windows Server 2003 SP1 及更高版本中内置的环回安全检查的结果。环回检查的目的是消除拒绝服务攻击,但它会导致从服务器本地访问 SharePoint 网站时出现问题。在典型的生产环境中,这通常不是问题,因为您很少从前端 Web 服务器本身访问 SharePoint 网站(除了中央管理员)。但是,我确实有物理和虚拟开发环境,所有活动都在服务器上进行,所以这可能会导致一些胃灼热,除非你以前解决过这个问题。您可以在以下位置阅读详细的知识库文章KB926642KB896861。以下是如何解决该问题的简要说明。我通常禁用环回检查,但不建议将其用于生产服务器环境。

方法 1:禁用身份验证环回检查 通过将注册表子项中的 DisableLoopbackCheck 注册表项设置为 1,重新启用 Windows Server 2003 中存在的行为HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa。要将注册表项设置DisableLoopbackCheck为 1,请在客户端计算机上执行以下步骤:

  1. 单击开始,单击运行,键入 regedit,然后单击确定。
  2. 找到并单击以下注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
  3. 右键单击 Lsa,指向新建,然后单击 DWORD 值。
  4. 键入DisableLoopbackCheck,然后按 Enter。
  5. 右键单击DisableLoopbackCheck,然后单击修改。
  6. 在数值数据框中,键入 1,然后单击确定。
  7. 退出注册表编辑器。
  8. 重新启动计算机。注意您必须重新启动服务器才能使此更改生效。默认情况下,Windows Server 2003 SP1 中打开了环回检查功能,并且 DisableLoopbackCheck 注册表项设置为 0(零)。当您禁用身份验证环回检查并打开 Windows Server 2003 服务器以对 NTLM 进行中间人 (MITM) 攻击时,安全性会降低。

方法 2:创建可以在 NTLM 身份验证请求中引用的本地安全机构主机名为此,请对客户端计算机上的所有节点执行以下步骤:

  1. 单击开始,单击运行,键入 regedit,然后单击确定。
  2. 找到并单击以下注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  3. 右键单击 MSV1_0,指向新建,然后单击多字符串值。
  4. 在“名称”列中,键入BackConnectionHostNames,然后按 Enter。
  5. 右键单击BackConnectionHostNames,然后单击修改。
  6. 在数值数据框中,键入用于计算机上本地共享的 CNAME 或 DNS 别名,然后单击确定。

注意 在单独的行中键入每个主机名。

注意如果BackConnectionHostNames注册表项以 REG_DWORD 类型存在,则必须删除该BackConnectionHostNames注册表项。7. 退出注册表编辑器,然后重新启动计算机。
"

来自: http: //blogs.bluethreadinc.com/thellebuyck/archive/2008/10/30/401.1-error-when-accessing-sharepoint-from-server.aspx,2009年 6 月 5 日

于 2011-08-22T20:50:31.550 回答