IIS-401.3-未授权

我正试图开始使用 IIS。我在 IIS Manager 上创建了一个新站点,将其映射到文件系统上的一个文件夹,并将 index.html 添加到该文件夹。我已经把这个网站的端口设置为85。当我尝试访问 http://localhost:85/index.html时,会得到以下错误消息:

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

我让文件夹上的每个人都可以读取,然后再试一次,我就可以访问这个页面了。

然后,我将文件夹的属性与 wwwroot 的属性进行比较。我发现 wwwroot 对 IIS _ IUSRS 进行了读访问... ... 当我对文件夹进行同样的操作并再次尝试时,我又得到了上面的错误。 我检查了默认情况下是否启用了匿名访问,但仍然得到这个错误。

为什么会发生这种情况? 解决问题的正确方法是什么?

166725 次浏览

因为您处理的是静态内容..。

在作为你网站根目录的文件夹中-如果你右键单击 > 属性 > 安全性,“用户”是否出现在列表中?如果没有点击“添加...”并键入它,一定要点击“应用”当你完成。

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

  • 在 IIS 管理控制台中,在站点配置的 Authentication 部分中,修改“匿名身份验证”行并检查帐户集为“ Special user”(我的是 IUSR)。
  • 将对站点文件夹的读取和执行权限授予列为特定用户的帐户。

或者

  • 在 IIS 管理控制台中,在站点配置的 Authentication 部分中,通过选择“ Identity of the application pool”而不是“ Special user”来修改“匿名身份验证”行。

Here is what worked for me.

  1. 将应用程序池标识设置为可以分配的帐户 对文件夹的权限。
  2. Ensure the source directory and all related files have been granted 对分配给应用程序池标识属性的帐户的文件的读取权限
  3. 在 IIS 中,在服务器根节点上,设置要从中继承的匿名用户 应用程序池身份(这是我纠结的部分)

若要将服务器匿名设置为从应用程序池标识继承,请执行下列操作。

  • 打开 IIS 管理器(inetmgr)
  • 在左侧窗格中选择根节点(服务器主机名)
  • 在中间面板打开“验证”小程序
  • Highlight 'Anonymous Authentication'
  • 在右侧面板中选择“ Edit...”(应该会打开一个对话框)
  • select 'Application pool identity'

;

在大多数情况下,granting access to the following account(s)(一个 | 两个)就足够了:

  1. 默认应用程序池
  2. IUSR

Access Rights合作:

  1. Read & Execute
  2. List folder contents

就是这样!

Read on for a more detailed explanation...


  1. 打开 IIS 并选择应用程序
  2. 在右侧单击 认证
  3. 选择“ 匿名认证” 给你。
  4. 弹出下面的对话框。

enter image description here

授予访问网络应用程序文件夹的 ACL 取决于在上面的图片中选择了什么:

  • Specific user: grant access for both IUSR (in my case) + IIS AppPool\DefaultAppPool
  • 应用程序池标识 : 只允许 IIS AppPool\DefaultAppPool访问

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


Give the following permissions to the account(s):

  1. Read & Execute
  2. List folder contents
  3. Read

enter image description here

以防其他人碰到这个。我故障排除所有这些步骤,原来是因为我解压缩一些文件从 MAC,微软自动没有任何通知加密的文件。经过几个小时的尝试设置文件夹权限,我走进去,看到文件名是绿色的,这意味着文件加密和 IIS 将抛出相同的错误,即使文件夹权限是正确的。

与接收未经授权的信息有关的另一个问题与 IIS 身份验证设置中使用的提供程序有关。 在我的情况下,我遇到了这个问题,如果我将 Windows 身份验证提供程序设置为“协商”。在我选择“ NTLM”选项后,访问被授予。

更多关于认证提供者的资料

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

请在 Windows2012R2中启用下列项目

enter image description here

如果您正在使用应用程序池身份验证(而不是 IUSR) ,那么这个 孙的支票清单是我能找到的处理 IIS 中401错误的最佳方法:


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

  1. 打开“高级设置”(在右侧的“操作”窗格中)。
  2. 记下应用程序池名称,然后关闭此窗口
  3. Double click on the Authentication icon to open the authentication settings
  4. 禁用 Windows 身份验证
  5. Right click on Anonymous Authentication and click Edit
  6. 选择 Applicationpool 标识单选按钮,单击 OK
  7. 从左侧的 IIS 管理器树中选择 ApplicationPools 节点,并选择您在步骤3中记录的 ApplicationPool 名称
  8. 右键单击并选择“高级设置”
  9. 展开“流程模型”设置,从“内置帐户”下拉列表中选择 ApplicationPoolIdentity,然后单击“确定”。
  10. 再次单击“确定”以保存和取消“应用程序池高级设置”页
  11. Open an Administrator command line (right click on the CMD icon and select "Run As Administrator". It'll be somewhere on your start menu, probably under Accessories.
  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)
    

Especially steps 5. & 6. are often overlooked and rarely mentioned on the web.

  1. Create a new Site, Right Click on Sites folder then click add Site
  2. 输入网站名称。
  3. 选择物理路径
  4. 选择叶澍坤地址
  5. Change Port
  6. 单击 OK
  7. 转到应用程序池
  8. 选择站点池
  9. 右键单击“预先设置”
  10. 将.Net CLR 版本更改为“ No Manage Code”
  11. 将标识更改为“ ApplicationPoolIdentity”
  12. 转到“网站”主页,然后单击“身份验证”
  13. 右键单击“匿名身份验证”,然后单击“编辑”
  14. 选择应用程序池标识
  15. 点击确定
  16. boom!

for routes add a 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>