首页 > 解决方案 > ASP.NET Windows 身份验证拒绝来自 RDP 用户的访问

问题描述

我已经从 VS 模板 (MVC) 设置了一个 Web 应用程序,然后启用了 Windows 身份验证。

<authentication mode="Windows" />
<authorization>
  <allow roles="ABC\Domain Users" />
  <deny users="*" />
</authorization>

然后将 Web 应用程序发布到 IIS 服务器。

它工作正常,当从客户端机器请求应用程序的索引页面时,它会自动让我登录,并使用以下链接使用 IE 进行测试http://myteamserver.mycompany/myapplication

但是,如果我 RDP 到服务器(\\myteamserver.mycompany托管 IIS 的地方),并在 IE 中打开相同的链接,它会不断提示输入凭据,即使在输入正确的凭据后,我也被拒绝访问。

错误信息:

HTTP 错误 401.2 - 未经授权 由于身份验证标头无效,您无权查看此页面。

问题:在客户端机器上运行 IE 和在服务器上运行 IE 有什么区别?

我检查服务器上的 IE 设置,选中“启用集成 Windows 身份验证”。我也将 RDP 连接到另一台服务器,从那里我可以毫无问题地访问 Web 应用程序。

标签: c#asp.netinternet-exploreriiswindows-authentication

解决方案


原来是 Windows 的一项安全功能:

当您浏览使用集成身份验证并托管在 IIS 5.1 或更高版本上的网站时,您会收到错误 401.1

症状:

当您使用完全限定域名 (FQDN) 或自定义主机标头浏览运行 Microsoft Internet 信息服务 (IIS) 5.1 或更高版本的计算机上托管的本地网站时,您可能会收到一条错误消息类似于以下内容:HTTP 401.1 - 未经授权:登录失败

当网站使用集成身份验证并且具有映射到本地环回地址的名称时,会出现此问题。

注意如果您尝试直接在服务器上浏览网站,您只会收到此错误消息。如果您从客户端计算机浏览该网站,该网站将按预期工作。

原因:

.. 一种环回检查安全功能,旨在帮助防止对您的计算机进行反射攻击。因此,如果您使用的 FQDN 或自定义主机标头与本地计算机名称不匹配,则身份验证将失败。

如果我使用 localhost 或 IP 而不是 FQDN,它可以工作。


推荐阅读