IIS7 + ASP.NET 模拟 + Windows Auth = 401 未授权

IIS7 + ASP.NET 模拟 + Windows Auth = 401 未授权

我有一个 asp.net 应用程序,它依赖于Request.LogonUserIdentity.Name使用登录到客户端计算机的人员的用户名进行填充。在 Web 服务器上的 IIS7 中,我已禁用Anonymous Authentication并启用ASP.NET Impersonation& Windows Authentication。(我使用服务帐户登录 Web 服务器,而不是我自己的帐户。)当我尝试从我的桌面浏览该站点时,系统提示我输入网络凭据,但失败了 - 401 Unauthorized...。我正在使用 .Net 3.5 sp 无论如何。服务器正在运行 IIS 7.5。

应用程序池:

  • 托管管道模式:经典的
  • 载入用户资料:错误的
  • 身份:应用程序池标识

Web应用程序:

  • .NET 身份验证规则:允许所有用户
  • 启用的身份验证类型:ASP.NET 模拟,Windows

文件系统文件夹权限:

  • 創作者所有者:特殊权限
  • 机器\IUsr:读取并执行、列出文件夹内容、读取
  • 机器\系统:完全控制
  • 我的域名账户:完全控制
  • 机器\管理员:完全控制
  • 机器\用户:读取并执行、列出文件夹内容、读取
  • 计算机\IIS_IUSRS:读取并执行、列出文件夹内容、读取
  • 受信任的安装程序:完全控制

我尝试添加Machine\Everyone 并Domain\Domain Users赋予其读取权限以及完全控制权限,但仍然被阻止。

答案1

这很可能是由于在服务器上本地测试时 loopbackcheck 造成的。我敢肯定,如果您从另一台服务器测试它,它会起作用。

使用此页面中的方法 2 关闭环回检查:http://support.microsoft.com/kb/896861. 重启不是您需要进行更改。

至于权限,启用模拟后,将需要经过身份验证的用户,此外还需要应用程序池用户的一些权限。因此,要使用的关键权限是 SYSTEM、管理员、“IIS APPPOOL\{apppoolname}”以及可能进行身份验证的用户组。

答案2

在 IIS 7.5 中,当您打开 Windows 身份验证时,还有一个提供程序选项。默认情况下,协商是第一首选项,然后是 NTLM。我见过协商由于其他设置相关问题而失败的问题,然后向用户提供凭据质询。我已经能够通过将 NTLM 设为第一个提供程序来解决这个问题。

您还可以使用 fiddler 查看站点流量,以了解当您的凭证被质疑时发生的情况。

相关内容