SECOND请求的文件/ URL授权失败

时间:2016-06-01 18:02:41

标签: asp.net iis authorization windows-authentication

我遇到类似这样的问题:

URL authorization failed for the request

IIS File authorization failed for the request

我在IIS 7上运行了几个类似的网站。我正在使用Firefox进行测试,以便我可以充当除我之外的用户。

我一直在网站上完成所有工作1.我可以以网络用户administratorsys\bob身份登录。

我现在正在使用网站2和3.我可以正常登录administrator。问题是:当我以dom\bob身份登录时,初始登录已正确验证。在所有后续请求中,dom\bob因文件或URL身份验证失败而被拒绝。

应用程序事件日志条目与链接问题中引用的内容大致相似,只是自定义事件详细信息部分为空。

我已经检查过IIS管理器中的网站,但到目前为止没有发现任何差异。我已确认web.config文件是相同的,但连接字符串等特定于站点的信息除外。据我所知,我已经验证了文件夹权限是正确的。

特别是关于权限:

<authentication>模式在所有网站上均为Windows

<authorization>节点在网站之间特别相同。

本地域在所有情况下都是相同的MS Windows Server 2008虚拟机 - 一个托管多个网站的服务器映像。因此从理论上讲,用户授权在所有网站上应该是相同的。

- 编辑1-- 只是我的运气。我在网站1上弹出了这个授权问题,在一个JavaScript文件中,该文件在sprint审查期间运行得很好。有一种扭曲,在这种情况下,用户在授权失败之前能够经历相当多的页面。

我会尽快发布我的日志。

- 编辑2-- 我在这个问题开始之前不久做了一次环境更改:我更新了jQuery和Bootstrap。

这是packages.config中的差异:

之前

  <package id="AspNet.ScriptManager.bootstrap" version="3.3.5" targetFramework="net45" />
  <package id="AspNet.ScriptManager.jQuery" version="2.1.4" targetFramework="net45" />
  <package id="bootstrap" version="3.3.5" targetFramework="net45" />
  <package id="jQuery" version="2.1.4" targetFramework="net45" />

  <package id="AspNet.ScriptManager.bootstrap" version="3.3.6" targetFramework="net45" />
  <package id="AspNet.ScriptManager.jQuery" version="2.2.3" targetFramework="net45" />
  <package id="bootstrap" version="3.3.6" targetFramework="net45" />
  <package id="jQuery" version="2.2.3" targetFramework="net45" />

以下是应用程序事件日志中的两个典型条目,已正确清理。

1:

Event code: 4008 
Event message: File authorization failed for the request. 
Event time: 6/2/2016 2:31:29 PM 
Event time (UTC): 6/2/2016 6:31:29 PM 
Event ID: e4a0fd65d9e34686967f14429d21ab97 
Event sequence: 14 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/21/ROOT-1-131093658656731243 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\Users\Administrator\Documents\Visual Studio 2013\Projects\HAWK_WebForms\HAWK.Web.LogansRun\ 
    Machine name: BAH01 

Process information: 
    Process ID: 5288 
    Process name: iisexpress.exe 
    Account name: HAWK\administrator 

Request information: 
    Request URL: http://localhost:53104/Scripts/jquery-2.2.3.js 
    Request path: /Scripts/jquery-2.2.3.js 
    User host address: ::1 
    User: HAT\john.smith
    Is authenticated: True 
    Authentication Type: NTLM 
    Thread account name: HAWK\administrator 

Custom event details: 

2:

Event code: 4008 
Event message: File authorization failed for the request. 
Event time: 6/2/2016 2:28:51 PM 
Event time (UTC): 6/2/2016 6:28:51 PM 
Event ID: a43d7292a8894df193600e829e74c696 
Event sequence: 14 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/14/ROOT-1-131093657141125131 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\Users\Administrator\Documents\Visual Studio 2013\Projects\HAWK_WebForms\HAWK.Web.LogansRun\ 
    Machine name: BAH01 

Process information: 
    Process ID: 5248 
    Process name: iisexpress.exe 
    Account name: HAWK\administrator 

Request information: 
    Request URL: http://localhost:53752/Scripts/Pages/Admin/SelfRatingWizard.js 
    Request path: /Scripts/Pages/Admin/SelfRatingWizard.js 
    User host address: ::1 
    User: HAWK\james.jones
    Is authenticated: True 
    Authentication Type: NTLM 
    Thread account name: HAWK\administrator 

Custom event details: 

- 编辑3 -

我尝试从此答案添加注册表项:https://stackoverflow.com/a/13015279/2615836

它没有改变任何东西。我还仔细检查了身份验证提供程序的顺序。 NTLM已经领先于所有网站的谈判。

- 另一次更新 - 我回滚了Bootstrap和jQuery。令我惊讶的是,文件授权仍然失败!同样,jQuery.js是一个地方 - 几乎每个文件都会引发此投诉。这就像授权令牌被“遗忘”一样。

- 更新至编辑1-- 在网站1中引发问题的JavaScript文件没有Network Service的权限,就像所有其他JavaScript文件一样。一旦我解决了这个问题,网站1就解决了。唉,此修复程序无法解析网站2。

2 个答案:

答案 0 :(得分:0)

当多个因素同时存在时,可能会发生此行为(在不同的浏览器中):

  • 已启用Windows身份验证。 AnonymousAuthentication已禁用;
  • 服务器由IP地址(而不是别名)访问;
  • 第一个ajax请求已完成;
  • 1分钟超时已失效。

检查ajax request hangs when referring to server by IP address and WindowsAuthentication is enabled in IE11有关此问题的帖子。

检查此问题是否适用于您的情况。如果是这样,请尝试使用上面列表中的任何其他值来(暂时)克服此问题。

答案 1 :(得分:0)

我最终发现Project1的目录为域组Users提供了读取权限,而其他项目都没有。一旦我授予用户对Project2基本目录的读取权限,就解决了身份验证问题。

因此,这是操作系统级别的用户权限问题。