IIS 401 - Unauthorized: Access is denied due to invalid credentials. 错误原因

IIS 401.1 错误表示由于凭据无效,访问被拒绝。这通常发生在以下几种情况:

1. 匿名身份验证问题:

  • IUSR 账户密码不正确或锁定: IIS 匿名用户(通常是 IUSR)的密码可能已更改,或该账户在 Active Directory 中被锁定。
  • IUSR 账户没有访问网站文件或文件夹的权限: IUSR 账户需要对网站的物理路径有“读取”权限。
  • Web 应用程序池身份不正确: 应用程序池的身份(通常是 ApplicationPoolIdentity)可能没有足够的权限访问网站内容。

2. Windows 身份验证问题 (NTLM/Kerberos):

  • 域账户密码不正确或锁定: 如果网站配置为使用 Windows 身份验证,并且用户输入的域账户密码不正确,或者该账户在域中被锁定,则会发生此错误。
  • 域控制器不可用: 如果域控制器不可用,IIS 无法验证用户的域凭据。
  • SPN 配置不正确(Kerberos): 在某些复杂的 Kerberos 环境中,如果服务主体名称 (SPN) 配置不正确,也可能导致 401 错误。
  • 客户端浏览器未发送凭据: 某些浏览器或代理设置可能阻止客户端发送 Windows 凭据。

3. 基本身份验证问题:

  • 用户账户密码不正确: 如果使用基本身份验证,并且用户提供的用户名或密码不正确。
  • 用户账户没有访问网站的权限: 即使密码正确,如果该用户账户没有访问网站文件或文件夹的权限,也可能导致 401。
  • 密码通过 HTTP 明文传输被阻止: 如果网站没有使用 HTTPS,并且基本身份验证通过 HTTP 传输,某些网络设备或安全策略可能会阻止此行为。

4. 授权规则问题:

  • IIS 授权规则限制了访问: 即使身份验证通过,如果 IIS 配置了“授权规则”来拒绝特定用户或组的访问,也会导致 401 错误。例如,你可能配置了一个规则,只允许特定的 Windows 用户组访问某个文件夹。

5. 其他不常见原因:

  • 文件或文件夹权限问题: 即使是 IUSR 账户,如果网站的物理路径上的某个文件或文件夹的 NTFS 权限配置不正确,也可能导致访问拒绝。
  • 第三方模块或筛选器: 某些自定义的 IIS 模块或 HTTP 筛选器可能会干扰身份验证过程。
  • Web.config 配置错误: <system.webServer><system.web> 部分下的身份验证或授权配置可能存在错误。
  • 防火墙或代理: 某些防火墙或代理服务器可能会干扰身份验证请求。

如何排查和解决:

  1. 检查 IIS 身份验证设置:

    • 打开 IIS 管理器。
    • 选择你的网站或应用程序。
    • 双击“身份验证”。
    • 检查启用了哪些身份验证方法(匿名、ASP.NET 模拟、基本、Windows)。
    • 对于匿名身份验证,确保“编辑”中的用户是 IUSR 或应用程序池身份,并且密码正确。
  2. 检查文件和文件夹权限:

    • 导航到你的网站的物理路径。
    • 右键点击网站文件夹 → “属性” → “安全”选项卡。
    • 确保 IUSR、IIS_IUSRS 或应用程序池身份(通常是 IIS APPPOOL\YourAppPoolName)具有“读取”和“执行”权限。
  3. 检查应用程序池身份:

    • 在 IIS 管理器中,点击“应用程序池”。
    • 找到你的网站使用的应用程序池。
    • 右键点击 → “高级设置” → “进程模型”下的“标识”。
    • 如果使用 Custom account,请确保该账户的密码正确且没有被锁定。
  4. 查看 IIS 日志:

    • IIS 日志通常位于 C:\inetpub\logs\LogFiles
    • 查找 401 错误的详细子状态码(例如 401.1、401.2、401.3 等),这可以提供更具体的错误信息。
      • 401.1:登录失败。
      • 401.2:服务器配置不允许登录。
      • 401.3:由于 ACL 对资源的限制而未经授权。
      • 401.4:筛选器授权失败。
      • 401.5:ISAPI/CGI 应用程序授权失败。
  5. 使用 Fiddler 或浏览器开发者工具:

    • 这些工具可以帮助你查看 HTTP 请求和响应,包括请求头中的授权信息,从而了解客户端是否发送了正确的凭据。
  6. 暂时禁用其他身份验证方法进行测试:

    • 在排查过程中,可以尝试只启用一种身份验证方法(例如,只启用匿名身份验证)来缩小问题范围。
  7. 检查 web.config 文件:

    • 查找 <authentication><authorization> 节,确保配置正确。

通过系统地检查这些点,通常可以定位并解决 IIS 401 错误。

IIS发布网站后“401 - 未授权: 由于凭据无效,访问被拒绝。

主要原因还是文件夹权限问题。

配置方法

进入 IIS 然后选择授权。

选择匿名用户授权。

单击右上角的编辑按钮。

确定 IUSR 用户被选上。

进入文件夹系统,给 IIS_IUSR 用户赋权。

如果赋权成功后还是不能显示内容或者提示 401 错误,那么还需要给 Users 也赋权。