IIS - 401.3 - 未经授权

时间:2013-10-03 15:00:39

标签: iis iis-7

我正在尝试使用IIS。我在IIS管理器上创建了一个新站点,将其映射到我的文件系统上的文件夹,并将index.html添加到该文件夹​​。我已将此站点的端口设置为85。当我尝试访问http://localhost:85/index.html时,收到以下错误消息:

  

401.3 - unathorized - 由于访问控制列表(ACL),您无权查看此目录或页面   Web上此资源的配置或加密设置   服务器

我给了文件夹上的所有人读取权限并再次尝试。然后我可以访问该页面。

然后我将我的文件夹的属性与wwwroot的属性进行了比较。我发现wwwroot在IIS_IUSRS上有读取权限...当我在我的文件夹上做同样的事情并再次尝试时,我又得到了上述错误。 我检查了默认情况下启用了匿名访问,但我仍然收到此错误。

为什么会这样?解决问题的正确方法是什么?

10 个答案:

答案 0 :(得分:124)

我已经在这个问题上挣扎了好几天。可以通过修改站点映射到的文件系统文件夹的安全用户访问属性来解决此问题。但IIS_IUSRS并不是您必须授权的唯一帐户。

  • 在IIS管理控制台中,在站点配置的身份验证部分中,修改“匿名身份验证”行并检查帐户设置为“特定用户”(薄荷为IUSR)。
  • 将您网站文件夹的读取和执行权限授予该帐户。

OR

  • 在IIS管理控制台中,在站点配置的“身份验证”部分中,通过选择“应用程序池的标识”而不是“特定用户”来修改“匿名身份验证”行。

答案 1 :(得分:43)

这对我有用。

  1. 将应用池标识设置为可分配的帐户 对文件夹的权限。
  2. 确保已授予源目录和所有相关文件 读取分配给应用程序池标识属性的帐户的文件权限
  3. 在IIS中,在服务器根节点上,将匿名用户设置为从中继承 应用程序池标识。 (这是我努力的部分)
  4. 要将服务器设置为匿名以从应用程序池标识继承,请执行以下操作..

    • 打开IIS管理器(inetmgr)
    • 在左侧窗格中,选择根节点(服务器主机名)
    • 在中间窗格中打开“身份验证”#39;小应用程序
    • 突出显示'匿名身份验证'
    • 在右侧窗格中选择'编辑...' (应打开一个对话框)
    • 选择'应用程序池标识'

答案 2 :(得分:11)

因为你正在处理静态内容......

在充当网站根目录的文件夹上 - 如果右键单击>属性>安全性,“用户”是否显示在列表中?如果没有单击“添加...”并输入,请务必在完成后单击“应用”。

答案 3 :(得分:6)

<强> TL; DR;

在大多数情况下授予对以下帐户的访问权限(一个|两个)就足够了:

  1. IIS AppPool \ DefaultAppPool
  2. IUSR
  3. 访问权限

    1. 阅读&amp;执行
    2. 列出文件夹内容
    3. 就是这样!

      继续阅读以获得更详细的解释...

      1. 打开IIS并选择您的应用
      2. 点击右侧的身份验证
      3. 选择“匿名身份验证” 这里。
      4. 弹出以下对话框。
      5. enter image description here

        根据上图中选择的内容授予对Web应用程序文件夹ACL的访问权限:

        • 特定用户 :授予IUSR(在我的情况下)+ IIS AppPool\DefaultAppPool
        • 的访问权限
        • 应用程序池标识 :仅授予IIS AppPool\DefaultAppPool访问权限

        IIS AppPool\DefaultAppPool帐户是新IIS Web应用程序的默认AppPool帐户,如果您已设置自定义帐户,请使用自定义帐户。

        为帐户授予以下权限:

        1. Read & Execute
        2. List folder contents
        3. Read
        4. enter image description here

          就是这样。

答案 4 :(得分:3)

答案 5 :(得分:1)

以防万一其他人遇到这个问题。我对所有这些步骤进行了故障排除,结果是因为我从MAC解压缩了某些文件,Microsoft却没有任何通知地自动将其加密。经过数小时的尝试设置文件夹权限,我走进去,看到文件名是绿色的,这意味着文件已加密,即使文件夹权限正确,IIS也会抛出相同的错误。

答案 6 :(得分:1)

  1. 创建一个新站点,右键单击“站点”文件夹,然后单击“添加站点”
  2. 输入站点名称。
  3. 选择物理路径
  4. 选择IP地址
  5. 更改端口
  6. 单击确定
  7. 转到应用程序池
  8. 选择站点池
  9. 右键单击“高级设置”
  10. 将.Net CLR版本更改为“无管理代码”
  11. 将身份更改为“ ApplicationPoolIdentity”
  12. 转到网站主页,然后单击“身份验证”
  13. 右键单击“ AnonymousAuthentication”,然后单击“编辑”
  14. 选择应用程序池标识
  15. 单击确定
  16. 轰!

对于路由,添加一个web.config

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="React Routes" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

答案 7 :(得分:0)

与接收未经授权有关的另一个问题可能与从IIS进行身份验证设置中使用的提供程序有关。 就我而言,如果我将Windows身份验证提供程序设置为“协商”,则会遇到该问题。选择“ NTLM”选项后,便授予访问权限。

有关身份验证提供程序的更多信息

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/providers/

答案 8 :(得分:0)

请在Windows 2012 R2中启用以下项目

enter image description here

答案 9 :(得分:0)

如果您应该使用应用程序池身份验证(而不是IUSR),那么此list of checks by Jean Sun是我能找到的最好的方式来处理IIS中的401错误:


打开IIS管理器,导航到您的网站或将网站部署到的应用程序文件夹。

  1. 打开“高级设置”(位于“操作”窗格的右侧)。
  2. 记下应用程序池名称,然后关闭此窗口
  3. 双击“身份验证”图标以打开身份验证设置
  4. 禁用Windows身份验证
  5. 右键单击“匿名身​​份验证”,然后单击“编辑”
  6. 选择“应用程序池标识”单选按钮,然后单击“确定”
  7. 从左侧的IIS管理器树中选择“应用程序池”节点,然后选择您在步骤3中记下的应用程序池名称。
  8. 右键单击并选择“高级设置”
  9. 展开“流程模型”设置,然后从“内置帐户”下拉列表中选择ApplicationPoolIdentity,然后单击“确定”。
  10. 再次单击“确定”以保存和关闭“应用程序池”高级设置页面
  11. 打开管理员命令行(右键单击CMD图标,然后选择“以管理员身份运行”。它将在开始菜单中的某个位置,可能在“附件”下。
  12. 运行以下命令:

    icacls <path_to_site> /grant "IIS APPPOOL\<app_pool_name>"(CI)(OI)(M)
    

    例如:

    icacls C:\inetpub\wwwroot\mysite\ /grant "IIS APPPOOL\DEFAULTAPPPOOL":(CI)(OI)(M)
    

尤其是步骤5和6.经常被忽略,在网络上很少提及。