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>部分下的身份验证或授权配置可能存在错误。 - 防火墙或代理: 某些防火墙或代理服务器可能会干扰身份验证请求。
如何排查和解决:
-
检查 IIS 身份验证设置:
- 打开 IIS 管理器。
- 选择你的网站或应用程序。
- 双击“身份验证”。
- 检查启用了哪些身份验证方法(匿名、ASP.NET 模拟、基本、Windows)。
- 对于匿名身份验证,确保“编辑”中的用户是 IUSR 或应用程序池身份,并且密码正确。
-
检查文件和文件夹权限:
- 导航到你的网站的物理路径。
- 右键点击网站文件夹 → “属性” → “安全”选项卡。
- 确保 IUSR、IIS_IUSRS 或应用程序池身份(通常是
IIS APPPOOL\YourAppPoolName)具有“读取”和“执行”权限。
-
检查应用程序池身份:
- 在 IIS 管理器中,点击“应用程序池”。
- 找到你的网站使用的应用程序池。
- 右键点击 → “高级设置” → “进程模型”下的“标识”。
- 如果使用 Custom account,请确保该账户的密码正确且没有被锁定。
-
查看 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 应用程序授权失败。
- IIS 日志通常位于
-
使用 Fiddler 或浏览器开发者工具:
- 这些工具可以帮助你查看 HTTP 请求和响应,包括请求头中的授权信息,从而了解客户端是否发送了正确的凭据。
-
暂时禁用其他身份验证方法进行测试:
- 在排查过程中,可以尝试只启用一种身份验证方法(例如,只启用匿名身份验证)来缩小问题范围。
-
检查
web.config文件:- 查找
<authentication>和<authorization>节,确保配置正确。
- 查找
通过系统地检查这些点,通常可以定位并解决 IIS 401 错误。




