asp.net-mvc-3 - IIS7.5 上的 ASP.NET MVC 3 Intranet 站点 w Windows 身份验证提供 401.3 并且尝试登录时请求的文件授权失败

标签 asp.net-mvc-3 iis-7.5 windows-authentication acl http-status-code-401

我创建了一个启用了 Windows 身份验证的 ASP.NET MVC 3 Intranet 站点:

  • 在 Visual Studio 项目文件属性
  • 在 web.config 中,即 <authentication mode="Windows"/>
  • 在 IIS 7.5 中的站点属性上。服务器

  • 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-userUSER-AD\Domain用户Read用户可以登录并实际查看该站点的站点根文件夹 (D:\Public\BlahblahManager) 的权限。

    为什么是这样?一定有某种我缺少的配置。 NETWORK SERVICE 在站点的根文件夹中读取还不够吗?我已经用谷歌搜索了一段时间,到处都提到了冒充,但似乎还没有定论。一些网站声称您应该使用模仿,并且他们提供了如何做到这一点的示例,但是当我尝试这些示例时,它仍然不起作用。其他网站说模拟不是要走的路,在这些情况下您需要授予文件夹权限。但这似乎是一件很奇怪的事情。用户在实际服务器上没有业务,他们应该只通过网站工作。

    有什么建议么?使其工作所需的最少配置量通常是多少?有关如何解决此类问题并找到根本原因的任何提示?

    最佳答案

    我推荐你看这个post声明所有 MVC 身份验证方法。但请确保您已在您的 mvc 应用程序上启用最低要求的身份验证。请注意,匿名身份验证适用于您的组策略。您可以通过以下方式进行配置:Internet 选项 -> 安全选项卡 -> 本地 Intranet -> 自定义级别,在您的浏览器上。

    1-可能导致问题的另一件事是 IIS 可能未配置为授权的相关用户。他们之中有一些是 :

  • iis服务
  • IUSR
  • IIS_IUSRS
  • 网络服务

  • 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/

    相关文章:

    c# - 如何在 C# MVC3 中使用 MPXJ .net 读取 .mpp 文件?

    asp.net-mvc-3 - 在 MVC3 项目中使用 Apicontroller

    websocket - IIS 7.5 上的 SignalR WebSockets

    url-rewriting - 是否可以从 IIS 7.5 中的 URL 重写模块导出规则?

    java - native 库 sqljdbc_auth.dll 已在另一个类加载器中加载

    asp.net-mvc-3 - MVC3隐藏字段的强制验证

    asp.net-mvc-3 - 使用 Asp.net MVC 的 Kendo UI 图表

    asp.net - MVC 1 和 IIS 7 错误代码 4011

    asp.net-mvc-4 - Windows 身份验证和 Asp.Net Web API

    c# - 在 AngularJS/WebApi 应用程序中使用 Windows 身份验证的 CORS 问题 - 仅适用于 IE