IIS 开发人员支持语音列

Kerberos 身份验证和委派问题疑难解答

为了根据需要自定义此列,我们希望邀请你提交有关你感兴趣的主题以及你希望在将来的知识库文章和支持语音专栏中看到的问题的想法。 可以使用“询问”表单提交你的想法和反馈。 此列底部还有一个指向窗体的链接。

我的名字是 <名称>,我使用的是 Microsoft Microsoft Internet Information Services (IIS) 严重问题解决组。 我在 Microsoft 工作了 9 年,在 IIS 团队工作了 9 年。 我收集了来自多个位置的信息,http://msdn.microsoft.comhttp://www.microsoft.com 有关 Kerberos 以及如何排查委派问题的信息。

IIS 6.0

以下白皮书介绍如何在 Microsoft Windows Server 2003 中设置委派。 白皮书提供了有关网络负载均衡 (NLB) 的具体信息,但详细介绍了如何在不使用 NLB 的情况下设置委托方案。 若要查看此白皮书,请访问以下 Microsoft 网站:

http://technet.microsoft.com/en-us/library/cc757299.aspx注意 使用 HTTP 服务主体名称 (SPN) ,尤其是在使用 NLB 时。最近另一个常见的 Kerberos 问题是需要允许多个应用程序池使用相同的 DNS 名称。 遗憾的是,使用 Kerberos 委派凭据时,无法将相同的服务主体名称 (SPN) 绑定到不同的应用程序池。 由于 Kerberos 的设计,无法执行此操作。 Kerberos 协议需要多个共享机密才能使协议正常工作。 通过对不同的应用程序池使用相同的 SPN,我们消除了其中一个共享机密。 由于存在安全问题,Active Directory 目录服务将不支持 Kerberos 协议的此配置。以这种方式配置 SPN 会导致 Kerberos 身份验证失败。 此问题的可能解决方法是使用协议转换。 将使用 NTLM 身份验证协议处理客户端与运行 IIS 的服务器之间的初始身份验证。 Kerberos 将处理 IIS 与后端资源服务器之间的身份验证。

Microsoft Internet Explorer 6 或更高版本

客户端浏览器可能会遇到问题,例如从运行 IIS 的服务器收到凭据的重复登录提示或“401 拒绝访问”错误消息。 我们发现以下两个问题可能有助于解决这些问题:

  • 验证是否在浏览器的属性中选择了 “启用集成 Windows 身份验证 ”。  

  • 如果在“添加/删除程序”中启用了 Internet Explorer 增强安全配置,则必须添加使用委派到“受信任的站点”列表的站点。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

    815141 Internet Explorer 增强的安全配置更改浏览体验  

IIS 5.0 和 IIS 6.0

从 IIS 4.0 升级到 IIS 5.0 或 IIS 6.0 后,委派可能无法正常工作,或者可能有人或应用程序修改了元数据库属性 NTAuthenticationProviders。  

设置 SPN 时,可能会出现特定问题区域

确定服务器名称

确定是使用服务器的实际 NetBIOS 名称还是使用别名(例如 DNS 名称 (www.microsoft.com) )连接到网站。 如果使用服务器的实际名称以外的名称访问 Web 服务器,则必须使用 Windows 2000 服务器资源工具包中的 Setspn 工具注册新的服务主体名称 (SPN) 。 由于 Active Directory 目录服务不知道此服务名称,因此票证授予服务 (TGS) 不会提供对用户进行身份验证的票证。 此行为强制客户端使用下一个可用的身份验证方法(即 NTLM)重新协商。 如果 Web 服务器正在响应 DNS 名称 www.microsoft.com 但服务器名为 webserver1.development.microsoft.com,则必须在运行 IIS 的服务器上的 Active Directory 中注册 www.microsoft.com。 为此,必须下载 Setspn 工具并将其安装在运行 IIS 的服务器上。若要确定是否使用实际名称进行连接,请尝试使用服务器的实际名称而不是 DNS 名称连接到服务器。 如果无法连接到服务器,请参阅“验证计算机是否信任委派”部分。如果可以连接到服务器,请按照以下步骤为用于连接到服务器的 DNS 名称设置 SPN:

  1. 安装 Setspn 工具。

  2. 在运行 IIS 的服务器上,打开命令提示符,然后打开 C:\Program Files\Resource Kit 文件夹。

  3. 运行以下命令,将此新的 SPN (www.microsoft.com) 添加到服务器的 Active Directory:

    Setspn -A HTTP/www.microsoft.com webserver1注意 在此命令中, webserver1 表示服务器的 NetBIOS 名称。

你会收到类似于以下内容的输出: 注册 CN=webserver1,OU=域控制器,DC=microsoft,DC=com 的 ServicePrincipalNames HTTP/www.microsoft.com 更新的对象 若要查看服务器上的 SPN 列表以查看此新值,请在运行 IIS 的服务器上键入以下命令:

Setspn -L webservername 请注意,无需注册所有服务。 许多服务类型(如 HTTP、W3SVC、WWW、RPC、CIFS (文件访问) 、WINS 和不间断电源 (UPS) )将映射到名为 HOST 的默认服务类型。 例如,如果客户端软件使用 HTTP/webserver1.microsoft.com 的 SPN 在 webserver1.microsoft.com 服务器上创建与 Web 服务器的 HTTP 连接,但此 SPN 未在服务器上注册,则 Windows 2000 域控制器会自动将连接映射到 HOST/webserver1.microsoft.com。 仅当 Web 服务在本地系统帐户下运行时,此映射才适用。

验证计算机是否信任委派

如果此运行 IIS 的服务器是域的成员,但不是域控制器,则必须信任计算机才能使委派 Kerberos 正常工作。 为此,请按照下列步骤操作:

  1. 在域控制器上,单击“开始”,指向“设置”,然后单击“控制面板”。

  2. 在 控制面板 中,打开“管理工具”。

  3. 双击“Active Directory 用户和计算机”。

  4. 在你的域下,单击“ 计算机”。

  5. 在列表中,找到运行 IIS 的服务器,右键单击服务器名称,然后单击“ 属性”。

  6. 单击“常规”选项卡,单击以选中“受信任的委派检查”框,然后单击“确定”。

请注意,如果同一 URL 访问了多个网站,但在不同的端口上,委派将不起作用。 若要执行此操作,必须使用不同的主机名和不同的 SPN。 当 Internet Explorer 请求 http://www 时。mywebsite.com 或 http://www。mywebsite.com:81,Internet Explorer 请求 SPN HTTP/www.mywebsite.com 的票证。 Internet Explorer 不会将端口或 vdir 添加到 SPN 请求。 此行为对于 http://www 相同。mywebsite.com/app1 或 http://www。mywebsite.com/app2。 在此方案中,Internet Explorer 将请求 SPN http://www 的票证。密钥分发中心的 mywebsite.com (KDC) 。 每个 SPN 只能声明一个标识。 因此,如果尝试为每个标识声明此 SPN,也会收到KRB_DUPLICATE_SPN错误消息。

委派和 Microsoft ASP.NET

有关使用 ASP.NET 应用程序时用于委派凭据的配置的详细信息,请单击下面的序列号以查看 Microsoft 知识库中的文章:

810572 如何为委派方案配置 ASP.NET 应用程序 模拟和委托是服务器代表客户端进行身份验证的两种方法。 决定使用哪种方法及其实现可能会导致一些混乱。 必须查看这两种方法之间的差异,并检查其中哪些方法可能想要用于应用程序。 我的建议是阅读以下白皮书以了解更多详细信息:

http://msdn2.microsoft.com/en-us/library/ms998351.aspx

参考

http://technet.microsoft.com/en-us/library/cc757299.aspxhttp://msdn.microsoft.com/msdnmag/issues/05/09/SecurityBriefs/default.aspx

262177 如何启用 Kerberos 事件日志记录

排查 Internet Explorer 中的 Kerberos 故障

和往常一样,可以使用“询问”表单,随时提交有关将来的列或知识库中要处理的主题的想法。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。