在安装 Windows Server 2003 Service Pack 1 后访问 IIS 6.0 或查询 Microsoft SQL Server 2000 中的网页时,用户会遇到身份验证问题

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

本文内容

症状

升级到 Windows Server 2003 Service Pack 1 (SP1) 运行 Microsoft Internet Information Services (IIS) 6.0 或 Microsoft SQL Server 2000 的基于 Microsoft Windows Server 2003 的计算机。执行此操作后,用户在使用 Web 应用程序时,或使用查询数据库的程序时遇到身份验证问题。例如对于用户可能会出现类似于以下任一症状:
  • 当用户试图访问一个 Web 页,从后端数据库中检索数据时,用户将收到"访问被拒绝"错误消息。
  • 用户无法连接到位于 Network Load Balancing (NLB) 群集中的另一个数据库服务器。要在数据库服务器查询失败。
用户遇到的症状可能会有所不同,具体取决于您的特定环境。

原因

如果服务主体名称 (SPN) 服务的未经过身份验证,则会出现此问题。如果该 SPN 服务帐户未注册 SPN 未经过身份验证。Windows Server 2003 SP1 包含了存储在以下注册表项中的环回检查功能:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck
默认状态下,环回检查功能已打开在 Windows Server 2003 SP1 中,并且 DisableLoopbackCheck 注册表项设置为 0 (零)。环回检查功能可防止程序注册 SPN。

解决方案

重要此分区、 方法,或任务包含告诉您如何修改注册表的步骤。但是,如果注册表修改不当可能会出现严重问题。因此,请确保您仔细按照这些步骤。附加的保护注册表之前先备份您对其进行修改。 然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756如何备份和还原在 Windows 注册表

重要默认状态下,环回检查功能已打开在 Windows Server 2003 SP1 中,和 DisableLoopbackCheck 注册表项设置为 0 (零)。禁用身份验证环回检查,并打开 NTLM 的拦截中 (MITM) 攻击在 Windows Server 2003 服务器时,会降低安全性。若要不必 MITM 攻击的注册表项的值应返回到零 (0) 后进行了 SPN 的更改。 此外,方法 1 是首选的解决方案。

方法 1: 创建可以引用的本地安全机构主机名 (首选) NTLM 身份验证请求中

  1. 单击 开始、 单击 运行,键入 regedit,然后单击 确定
  2. 在注册表编辑器中找到并单击下面的注册表项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  3. 用鼠标右键单击 MSV1_0,指向 新建,然后单击 多字符串值
  4. 键入 BackConnectionHostNames,然后按 ENTER 键。
  5. 用鼠标右键单击 BackConnectionHostNames,然后单击 修改
  6. 数值数据 框中键入主机名或主机名的该站点,是在本地计算机上,然后单击 确定
  7. 退出注册表编辑器,然后重新启动服务器,此更改才能生效。

方法 2: 禁用身份验证环回检查和注册 SPN 与运行服务帐户

若要解决此问题,禁用身份验证环回检查,然后与该帐户下运行该服务注册 SPN。若要执行此操作将设置 DisableLoopbackCheck 条目中
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
注册表子项为 1,然后确定的 SPN 名称。

步骤 1: 设置为 1 的 DisableLoopbackCheck 注册表项

  1. 单击 开始, 单击 运行,键入 regedit,然后单击 确定
  2. 找到并单击以下注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
  3. 用鼠标右键单击 DisableLoopbackCheck,然后单击 修改
  4. 数值数据 框中键入 1,然后单击 确定

步骤 2: 确定的 SPN 名称

  1. 添加在下面的注册表项,然后设置每个注册表项为适当的值,如下所示:
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\LogLevel

      值: 1
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\LogToFile

      值: 1
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\KerbDebugLevel

      值: c3
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters\LogLevel

      值: 1 1
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters\LogToFile

      值: 1
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters\KerbDebugLevel

      值: c3
    若要向注册表项,请按照下列步骤操作:
    1. 找到并单击要添加注册表项的注册表子项。
    2. 编辑 菜单上指向 新建,然后单击 DWORD 值
    3. 键入要向其添加,该注册表项的名称,然后按 ENTER 键。
    4. 用鼠标右键单击该注册表项中添加步骤 2 的 c,然后单击 修改
    5. 键入适当的值为该的注册表条目,然后单击 确定
    6. 重复步骤 2a 2e 通过为每个要添加的注册表项。
    7. 退出注册表编辑器。
  2. 重新启动在的计算机,然后再重现该问题。执行此操作后,在系统日志中记录与以下内容类似的事件 ID 错误消息:
    类型: 错误
    源: Kerberos
    类别: 无
    事件 ID: 3
    描述: Kerberos 错误收到消息:
    上登录会话
    客户端时间:
    服务器时间: TimeDate
    错误代码: 0x7 KDC_ERR_S_PRINCIPAL_UNKNOWN
    扩展的错误:
    客户端领域:
    客户端名称:
    服务器领域: DomainName.com
    服务器名称: MSSQLSvc / DomainName.com:1433
    目标名称: MSSQLSvc / ServerNameDomainName: 1433年 @ DomainName.com
    错误文本:
    文件: 9
    行: ab8
    错误的数据是在记录数据中。
    确定从事件 ID 错误消息 SPN。在此的示例 SPN 是 MSSQLSvc / DomainName.com:1433。

步骤 3: 使用 Setspn.exe 命令行工具来注册 SPN 到适当的服务帐户

在 IIS 6.0 中服务帐户通常是运行 WWW 服务帐户或该应用程序池使用的帐户。在 Microsoft SQL Server 2000,服务帐户是 SQL Server 2000 下运行的帐户。若要添加新的 SPN 使用以下语法:
setspn-一个 SPN DomainName \ AccountName

以下是如何使用 Setspn.exe 命令行工具来添加一个 SPN 的示例:
setspn-a MSSQLSvc/NLBNAME.corp.domain.com:1433 DomainName \ AccountName

更多信息

有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
970536Windows Server 2003 Setspn.exe 支持工具更新


有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
837361Kerberos 协议的注册表项和 Windows Server 2003 中的 KDC 配置项


安装安全更新 957097 后,如 SQL Server 或 Internet Information Services (IIS) 的应用程序可能无法进行本地 NTLM 身份验证请求时。 有关如何解决此问题的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
957097了 068: SMB 中的漏洞可能允许远程代码执行
请参阅此安全更新的问题的已知"一节的知识库文章 957097 详细信息的有关如何解决此问题。

属性

文章编号: 887993 - 最后修改: 2009年2月10日 - 修订: 4.1
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Web Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
关键字:?
kbmt kbtshoot KB887993 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 887993
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