Windows Desktop SSO 验证模块是一个基于 Kerberos 的验证插件模块,用于 Windows 2000™。它允许已通过 Kerberos 分发中心 (Kerberos Distribution Center, KDC) 验证的用户无需重新提交登录条件即可验证到 Access Manager(单点登录)。
用户通过 SPNEGO(Simple and Protected GSS-API Negotiation Mechanism,简单且受保护的 GSS-API 协商机制)协议向 Access Manager 提供 Kerberos 令牌。要通过此验证模块执行基于 Kerberos 的 Access Manager 单点登录,用户必须在客户机端支持 SPNEGO 协议以验证本身。一般而言,支持此协议的任何用户应该都能使用此模块验证 Access Manager。根据客户机端令牌的可用性,此模块提供 SPENGO 令牌或 Kerberos 令牌(这两种情况下协议是相同的)。在 Windows 2000(或更高版本)上运行的 Microsoft Internet Explorer(5.01 或更高版本)当前支持此协议。此外,Solaris(9 和 10)上的 Mozilla 1.4 支持 SPNEGO,但返回的令牌只有一个 KERBEROS 令牌,因为 Solaris 上不支持 SPNEGO。
必须使用 JDK 1.4 或更高版本利用 Kerberos V5 验证模块和 Java GSS API 的新功能,以执行此 SPNEGO 模块中基于 Kerberos 的 SSO。
如果在进行 WindowsDesktopSSO 验证时使用 Microsoft Internet Explorer 6.x,并且浏览器不能访问与 WindowsDesktopSSO 模块中配置的 (KDC) 领域匹配的用户 Kerberos/SPNEGO 令牌,则浏览器在向 WindowsDesktopSSO 模块验证失败后无法对其他模块实施正确的行为。问题的直接原因是:在 Internet Explorer 对 WindowsDesktopSSO 模块失败后,浏览器若未重新启动,将无法传送回叫(其他模块的)给 Access Manager,即使系统提示该回叫。由于用户证书为空,因此 WindowsDesktopSSO 后的所有模块都将失败。
有关相关信息,参见以下文档:
http://support.microsoft.com/default.aspx?scid=kb;en-us;308074
http://www.wedgetail.com/jcsi/sso/doc/guide/troubleshooting.html#ieNTLM
此版本的 Access Manager 发行时,Microsoft 已修复了此限制。有关详细信息,参见以下文档:
http://www.microsoft.com/technet/security/bulletin/ms06-042.mspx
启用 Windows Desktop SSO 验证分为两个步骤:
在 Windows 2000 域控制器中创建用户。
设置 Internet Explorer。
在域控制器中,为 Access Manager 验证模块创建用户帐户。
在用户帐户与服务提供商名称间建立关联,并将密钥表文件导出至装有 Access Manager 的系统。为此,请运行以下命令:
ktpass -princ host/hostname.domainname@DCDOMAIN -pass password -mapuser userName-out hostname.host.keytab ktpass -princ HTTP/hostname.domainname@DCDOMAIN -pass password -mapuser userName-out hostname.HTTP.keytab |
ktpass 实用程序不会作为 Windows 2000 服务器的一部分安装。必须从安装 CD 将其安装到 c:\program files\support 工具目录。
ktpass 命令接受以下参数:
hostname。运行 Access Manager 的主机名(不含域名)。
domainname。Access Manager 的域名。
DCDOMAIN。域控制器的域名。它可能与 Access Manager 域名不同。
password。用户帐户的密码。请确保密码正确,因为 ktpass 不校验密码。
userName。用户帐户 ID。它应与主机名相同。
确保两个密钥表文件都已安全保管。
服务模板的值应与以下示例类似:
服务主体:HTTP/machine1.EXAMPLE.COM@ISQA.EXAMPLE.COM
密钥文件名:/tmp/machine1.HTTP.keytab
Kerberos 领域:ISQA.EXAMPLE.COM
Kerberos 服务器名:machine2.EXAMPLE.com
返回带有域名的主体:false
验证级别:22
如果使用的是 Windows 2003 或 Windows 2003 Service Pack,则使用以下 ktpass 命令语法:
ktpass /out filename /mapuser username /princ HTTP/hostname.domainname /crypto encryptiontype /rndpass /ptype principaltype /target domainname |
例如:
ktpass /out demo.HTTP.keytab /mapuser http /princ HTTP/demo.identity.sun.com@IDENTITY.SUN.COM /crypto RC4-HMAC-NT /rndpass /ptype KRB5_NT_PRINCIPAL /target IDENTITY.SUN.COM |
有关语法定义,参见 http://technet2.microsoft.com/WindowsServer/en/library/64042138-9a5a-4981-84e9-d576a8db0d051033.mspx?mfr=true Web 站点。
重新启动服务器。
以下步骤适用于 Microsoft Internet Explorer™ 6 及更高版本。如果您使用的是较早版本,请确保 Access Manager 位于浏览器的 Internet 区域并启用“本地 Windows 验证”。