我创建了一个启用了 Windows 身份验证的 ASP.NET MVC 3 Intranet 站点:
<authentication mode="Windows"/>
web.config 显示,以上三个都禁用匿名访问,
<deny users="?"/>
.通过身份 <impersonate="false"/>
在 web.config 中禁用模拟以及 IIS 7.5 服务器中的站点属性。最后,网络服务设置为运行应用程序池,并且在站点文件夹上也有读取(不确定是否需要它,你告诉我,但它肯定不足以解决我下面的问题)。现在,当通过标准 Windows 身份验证对话框登录时,域用户在 3 次有效登录尝试后会出现 401.3 错误。这似乎是在到达我的 MVC 站点代码之前,即它似乎完全与 IIS 相关。事件日志为所有尝试登录的用户提供了以下类型的条目(它是信息条目,而不是错误,我对其进行了一些混淆以保护我的客户端):
Event code: 4008
Event message: File authorization failed for the request.
Event time: 2012-02-20 18:45:41
Event time (UTC): 2012-02-20 17:45:41
Event ID: 6dd3b4bf99784ba1a0fe06694dd89691
Event sequence: 3
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/2/ROOT-1-129742335229554599
Trust level: Full
Application Virtual Path: /
Application Path: D:\Public\BlahblahManager\
Machine name: HUB01-XYZ123
Process information:
Process ID: 2920
Process name: w3wp.exe
Account name: NT AUTHORITY\NETWORK SERVICE
Request information:
Request URL: http://blahblahmanager.user.ad.blah.com/
Request path: /
User host address: 134.XXX.XXX.XXX
User: USER-AD\teh-user
Is authenticated: True
Authentication Type: Negotiate
Thread account name: NT AUTHORITY\NETWORK SERVICE
Custom event details:
只有当我特别授予
USER-AD\teh-user
或 USER-AD\Domain
用户Read
用户可以登录并实际查看该站点的站点根文件夹 (D:\Public\BlahblahManager) 的权限。为什么是这样?一定有某种我缺少的配置。 NETWORK SERVICE 在站点的根文件夹中读取还不够吗?我已经用谷歌搜索了一段时间,到处都提到了冒充,但似乎还没有定论。一些网站声称您应该使用模仿,并且他们提供了如何做到这一点的示例,但是当我尝试这些示例时,它仍然不起作用。其他网站说模拟不是要走的路,在这些情况下您需要授予文件夹权限。但这似乎是一件很奇怪的事情。用户在实际服务器上没有业务,他们应该只通过网站工作。
有什么建议么?使其工作所需的最少配置量通常是多少?有关如何解决此类问题并找到根本原因的任何提示?
最佳答案
我推荐你看这个post声明所有 MVC 身份验证方法。但请确保您已在您的 mvc 应用程序上启用最低要求的身份验证。请注意,匿名身份验证适用于您的组策略。您可以通过以下方式进行配置:Internet 选项 -> 安全选项卡 -> 本地 Intranet -> 自定义级别,在您的浏览器上。
1-可能导致问题的另一件事是 IIS 可能未配置为授权的相关用户。他们之中有一些是 :
2- 还要检查 IIS 中允许的动词。
3- 在应用程序的根文件夹中授予对 IIS AppPool\YourAppPool 的读取权限。
4- 另一个原因可能是应用程序中的分层访问规则取决于您使用的应用程序服务,例如网站面板访问规则。
5- Setting the clientaccesspolicy.xml file.
6- 检查 InitializeService() 方法,是否正确设置实体访问规则?例如:
config.SetEntitySetAccessRule("*", EntitySetRights.All);
7- 在网站级别检查 FileAuthentication 模块。
关于asp.net-mvc-3 - IIS7.5 上的 ASP.NET MVC 3 Intranet 站点 w Windows 身份验证提供 401.3 并且尝试登录时请求的文件授权失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9383695/