尝试访问属于 IIS 6.0 应用程序池的网站时收到错误消息“HTTP 错误 401.1 - 未经授权:由于凭据无效,访问被拒绝”。

文章翻译 文章翻译
文章编号: 871179 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

当您尝试访问配置为只使用集成 Windows 身份验证的 Microsoft Internet 信息服务 (IIS) 6.0 网站时,系统会提示您输入用户凭据。尝试登录时,您会再次收到登录提示。在进行三次登录尝试后,您会收到以下错误消息:
HTTP 错误 401.1 - 未经授权:由于凭据无效,访问被拒绝。

原因

如果存在以下情况,则可能出现此问题:
  • IIS 6.0 网站属于 IIS 应用程序池。
  • 应用程序池在本地帐户或域用户帐户下运行。
  • 网站配置为只使用集成 Windows 身份验证。
在这种情况下,当集成 Windows 身份验证尝试使用 Kerberos 时,Kerberos 身份验证可能不起作用。若要使用 Kerberos 身份验证,服务必须在 Active Directory 目录服务中的帐户(运行服务所使用的帐户)下注册自己的服务主体名称 (SPN)。默认情况下,Active Directory 注册网络基本输入/输出系统 (NetBIOS) 的计算机名称。Active Directory 还允许网络服务或本地系统帐户使用 Kerberos。

解决方案

如果在本地帐户下运行应用程序池时出现此问题,请按照“替代方法”部分中的步骤操作。

若要解决在域用户帐户下运行应用程序池时出现的此问题,请使用 NetBIOS 名称和运行应用程序池所使用的域用户帐户的完全限定的域名 (FQDN) 来设置 HTTP SPN。为此,请在域控制器上按照下列步骤操作:

重要说明 服务的 SPN 只能与一个帐户相关联。因此,如果使用此推荐解决方案,则在不同域用户帐户下运行的其他任何应用程序池都不能仅与集成 Windows 身份验证结合使用。
  1. 安装 Setspn.exe 工具。若要获取适用于 Microsoft Windows Server 2003 的 Setspn.exe 工具,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    970536 Windows Server 2003 的 Setspn.exe 支持工具更新
  2. 启动命令提示符,然后更改为 Setspn.exe 安装目录。
  3. 在命令提示符处,键入下列命令。键入每个命令之后按 ENTER。
    setspn.exe -S http/IIS_computer's_NetBIOS_name DomainName\UserName

    setspn.exe -S http/IIS_computer's_FQDN DomainName\UserName
    注意 UserName 是运行应用程序池所使用的用户帐户。也请注意,如果您要在 Windows 2000 计算机上运行 setspn.exe 命令,请使用 -A 开关,而不是 -S 开关。
在将 HTTP 服务的 SPN 设置为运行应用程序池所使用的域用户帐户后,便可以成功地连接到网站,而不会收到输入用户凭据提示。

替代方法

如果您有多个应用程序池,这些池在不同的域用户帐户下运行,若要解决此问题,则必须强制 IIS 将 NTLM 用作身份验证机制(如果您希望只使用集成 Windows 身份验证的话)。为此,请在运行 IIS 的服务器上按照下列步骤操作:
  1. 启动命令提示符。
  2. 进行定位,然后更改为包含 Adsutil.vbs 文件的目录。默认情况下,该目录是 C:\Inetpub\Adminscripts。
  3. 键入以下命令,然后按 ENTER:
    cscript adsutil.vbs set w3svc/NTAuthenticationProviders "NTLM"
  4. 若要验证 NtAuthenticationProviders 元数据库属性是否设置为 NTLM,请键入以下命令,然后按 ENTER:
    cscript adsutil.vbs get w3svc/NTAuthenticationProviders
    应该返回以下文本:
    NTAuthenticationProviders       :(STRING) "NTLM"

状态

这是一种设计上的问题。

更多信息

如果您只使用运行 IIS 的服务器的 FQDN 来设置 SPN,则在 30 分钟后系统会提示您输入用户凭据。由于 Internet Explorer 缓存域名系统 (DNS) 信息的方式,将会出现 30 分钟的超时。30 分钟过后,Internet Explorer 将恢复为 NetBIOS 名称。因此,您必须确保同时使用运行 IIS 的服务器的 NetBIOS 名称来注册 SPN,以免系统提示您输入用户凭据。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
263558 Internet Explorer 如何缓存 DNS 主机条目
若要为运行应用程序池所使用的用户帐户验证注册的 SPN,请启动命令提示符,从 Setspn.exe 的安装目录键入以下命令,然后按 ENTER:
setspn.exe -l UserName
系统会返回用户帐户的已注册 SPN 列表。

Internet 信息服务 (IIS) 7.0

如果存在以下任一情况,本文中讨论的主题也适用于 IIS 7.0。
  • 内核模式身份验证已禁用。
  • 内核模式身份验证已启用,useAppPoolCredentials 属性设置为 TRUE。

参考

有关将集成 Windows 身份验证和 IIS 应用程序池结合使用的其他信息,请访问以下 Microsoft 网站:
集成 Windows 身份验证 (IIS 6.0)
有关 IIS 中身份验证故障或访问控制故障的其他信息,请访问以下 Microsoft 网站:
身份验证和访问控制诊断版本 1.0 (IIS 6.0)
注意 AuthDiag 工具用于在您看到以下两个错误消息中的任意一个时为您提供帮助:
  • 401.1 登录失败
  • 401.3 ACL
当您遇到 Kerberos 问题时,AuthDiag 工具也可以为您提供帮助。

属性

文章编号: 871179 - 最后修改: 2014年1月27日 - 修订: 5.0
这篇文章中的信息适用于:
  • Microsoft Internet Information Services 6.0
  • Microsoft Internet Information Services 7.0
关键字:?
kbtshoot kbprb KB871179
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com