| 介绍 | |
| 根据集群名称服务主要名称设置 Kerberos 身份验证 |
Kerberos 是一种身份验证机制,用于验证用户或主机的身份。本文阐述了如何配置 Kerberos,以使应用程序能够充分利用其身份验证功能,同时利用 NLB 实现负载平衡。
注意:本文所描述的步骤仅适用于 Windows Server 2003 系列产品。在 Windows 2000 中,不支持对使用 NLB 实现负载平衡的应用程序使用 Kerberos。
请遵循本白皮书中的步骤,将集群名称服务主要名称(SPN)注册到域用户帐户上,然后在该用户帐户身份下,配置 IIS 6.0 以便在工作进程隔离模式(Worker Process Isolation Mode)中运行。
在实施 Kerberos 身份验证解决方案之前,请先完成以下步骤。
1. | 把将要加入网络负载平衡(NLB)集群的 Windows Server 2003 计算机加入到 Windows 域(不是工作组)。 |
2. | 设置 NLB 集群。 |
3. | 为集群指定一个名称(即“集群名称”),并将其映射到 DNS/WINS 上的 NLB 集群 IP 地址。这个名称不一定通过“网络负载平衡属性”对话框中的“集群参数”选项卡上所输入的“Internet 全名”。 |
根据集群名称 SPN 设置 Kerberos 身份验证的过程共分为三个阶段,每个阶段针对不同的实体进行。下列步骤提供了推荐的配置范例,但是您也可以使用不同的配置。
在 Windows Server 2003 域控制器上,执行以下步骤。您必须拥有管理员证书,才能执行这一步骤。
1. | 创建一个 IIS 6.0 域用户帐户 例如,在域控制器上,运行“net user /add <iisid> <nlb>”,其中“<iisid>”是用户名,“<nlb>”是密码。 |
2. | 如果还没有域用户帐户,请先为客户端创建一个域用户帐户。 例如,在域控制器上,运行“net user /add <iistst> <nlb>”,其中“<iistst>”是用户名,“<nlb>”是密码。 |
3. | 注册服务主要名称(SPN)。客户端将使用这个 SPN 来验证使用 setspn.exe 工具在步骤 1 内创建的域用户帐户服务。 例如,如果客户端程序是 Internet Explorer,而“testweb”是集群名称,请在域控制器上运行“setspn -a HOST/testweb nlb.net\iisid”以便把“HOST/testweb”的 SPN 注册到“nlb.net\iisid”域用户帐户上。 |
注意:SPN 将格式化为“<Service-Class>/<Host>”形式。“<Service-Class>”的值取决于客户端程序。Internet Explorer 在“<Service-Class>”部分使用字符串“HOST”,其它客户端程序可能使用“http”或其它字符串。“<Host>”的值是集群名称。
请在加入 NLB 集群的每台 Windows Server 2003 计算机上执行这些步骤。
1. | 将 IIS 设定为在工作进程隔离模式中执行。启动“IIS 管理器”,展开“本地计算机”,右击“Web 站点”,然后点击“属性”。点击“服务”选项卡,清除“以 IIS 5.0 隔离模式运行 WWW 服务”复选框,然后点击“确定”。 如果向工作进程隔离模式的切换失败,“IIS 管理器” 中将出现一个为您的本地计算机列出的名为“应用程序池”的文件夹,如下图所示: |
2. | 为您希望用于运行网站的应用程序池指定域用户帐户(在第 1 阶段步骤 1 中创建)身份。在本例中,DefaultAppPool 是所使用的应用程序池。右击相应的应用程序池文件夹,选择“属性”,点击“身份”选项卡,然后在“应用程序池身份”下,选择“可配置”,并输入事先创建的用户名和密码。 |
3. | 把在第 1 阶段步骤 1 中创建的域用户帐户添加到本地 IIS_WPG 组(即 IIS 工作进程组(IIS Worker Process Group))中。此项操作可以使用“计算机管理”对话框或通过运行命令“net localgroup iis_wpg add <iisid>”来完成。 |
4. | 创建您的网站。请参阅帮助完成这一步骤的 IIS 文档。 |
5. | 把网站指定到步骤 2 中使用的应用程序池。右击网站文件夹,选择“属性”,点击“主目录”选项卡,然后在“应用程序池”下拉菜单中的“应用程序设置”选项中,选择适当的应用程序池。 |
6. | 如果使用主机标头名称(host header names),则右击网站文件夹,选择“属性”,点击“Web 站点”选项卡,然后在“Web 站点身份验证”中,点击“高级”,并在“主机标头值”中输入集群名称。 |
7. | 右击网站文件夹,选择“属性”,点击“目录安全”选项卡,然后在“身份验证和访问控制”中,点击“编辑”,然后在“经验证的访问”下,清除“基本身份验证”复选框,并选择“完整的 Windows 身份验证”。 |
8. | 要想强制使 Kerberos 的优先级高于 NTLM,打开 Inetpub\AdminScripts 目录,其中包含了一个名为 adsutil.vbs 的脚本文件。运行以下命令“adsutil set w3svc/ntauthenticationproviders Negotiate, Kerberos”。 |
在客户端没有什么特殊的步骤需要执行。客户端计算机必须使用在第 1 阶段步骤 1 中创建的域用户帐户上注册的 SPN。此外,如果在步骤 2 中创建了任何域用户帐户,客户端应使用它进行登录。在我们的配置范例中,Internet Explorer 是客户端程序,我们是作为管理员进行登录。因此,我们通过在“工具/Internet 选项/安全/自定义级别/用户身份验证/登录”中选择提示的用户名和密码,强制 Internet Explorer 接受新的证书(在第 1 阶段步骤 2 中创建)。
当您完成这三个阶段之后,可以对配置进行验证。客户端应能够访问使用 Kerberos 进行身份验证的网站。在我们的配置范例中,我们使用 Internet Explorer 来访问 http://testweb/test.htm。为了验证确实使用了 Kerberos(而不是 NTLM)来进行身份验证,请在服务器 Windows 事件日志的“安全(Security)”文件夹中查找是否有以下类似事件 。