单点登录是指最终用户进行一次验证(即,使用用户 ID 和密码登录)后即可访问多个应用程序的功能。Sun Java System Access Manager(请注意,它以前称为 Identity Server)是用于 Sun Java System 服务器的 SSO 的正式网关。也就是说,用户必须登录到 Access Manager 才能访问其他配置了 SSO 的服务器。
例如,如果正确配置了 Messenger Express,则用户在 Sun Java System Access Manager 登录屏幕登录后,就可以在其他窗口中访问 Messenger Express,而不必再次登录。同样,如果正确配置了 Sun Java System Calendar Server,则用户在 Sun Java System Access Manager 登录屏幕登录后,就可以在其他窗口中访问其日历,而不必再次登录。
请注意,Messaging Server 提供了两种部署 SSO 的方法。第一种方法是通过 Sun Java System Access Manager,第二种方法是通过通信服务器信任环技术。使用信任环是实现 SSO 的传统方法。尽管此方法提供了 Access Manager SSO 所没有的一些功能,但是不建议使用此方法,因为未来所有开发都将使用 Access Manager。但是,在以下各节中对这两种方法都进行了介绍:
本节介绍了使用 Access Manager 的 SSO。其中包含以下各节:
Messenger Express 会话仅在 Access Manager 会话有效时才有效。如果用户从 Access Manager 注销,Webmail 会话将自动关闭(单点注销)。
协同工作的 SSO 应用程序必须位于同一 DNS 域中。(也称作 cookie 域)。
SSO 应用程序必须具有对 Access Manager 验证 URL(命名服务)的访问权限。
浏览器必须具有 cookie。
有四个 configutil 参数支持 Messaging Server SSO。在这四个参数中,仅有 local.webmail.sso.amnamingurl 参数是为 Messaging Server 启用 SSO 时所必需的。要启用 SSO,请将此参数设置为 Access Manager 运行命名服务所在的 URL。通常此 URL 为 http://server/amserver/namingservice。示例:
configutil -o local.webmail.sso.amnamingurl -v http://sca-walnut:88/amserver/namingservice |
Access Manager SSO 不查看 local.webmail.sso.enable,该参数启用较旧的 SSO 机制。应该将 local.webmail.sso.enable 保留为 off 或不对其进行设置,否则系统将记录关于缺少配置参数的警告消息,而这些配置参数是旧的 SSO 机制所需的。
您可以使用 configutil 命令修改表 6–3 中所示的 SSO 配置参数。
表 6–1 Access Manager 单点登录参数
如果 SSO 有问题,首先应检查 webmail 日志文件 msg_svr_base/log/http,以查找错误。提高日志记录级别可能会很有帮助 (configutil -o logfile.http.loglevel -v debug)。如果这样做没有帮助,请先检查 msg_svr_base/log/http_sso 中的 amsdk 消息,然后提高 amsdk 日志记录级别 (configutil -o local.webmail.sso.amloglevel -v 5)。请注意,新的日志级别只有在服务器重新启动后才能生效。
如果 SSO 仍然有问题,请确保您在登录过程中使用了 Access Manager 和 Messaging Server 的全限定主机名。Cookie 仅在同一域中的服务器之间共享,而浏览器不知道本地服务器名称所使用的域,因此必须在浏览器中使用全限定名称才能使 SSO 工作。
本节介绍了信任环 SSO。由于将来所有的开发都将使用 Access Manager,因此不建议使用此种方法的 SSO。但是,信任环 SSO 能够提供 Access Manager SSO 目前所没有的某些功能。本节包含以下几个部分:
部署 SSO 之前,请务必了解以下术语。
SSO:单点登录。登录到一个应用程序即可访问其他应用程序的功能。用户身份标识在所有应用程序中相同。
信任的应用程序。共享 SSO 方案(SSO 前缀)并信任彼此的 cookie 和验证的应用程序。也称为对等 SSO 应用程序。
SSO 前缀。一个字符串,SSO 的部署者定义并告知应用程序,以便应用程序可以使用该字符串查找同一信任环中其他应用程序生成的 cookie。具有不同前缀的应用程序不在同一环中,用户在这些应用程序之间移动时需要重新验证。在配置设置中,前缀有时(但不总是)明确地包含结尾字符 ("-")。
SSO Cookie。浏览器用于记住用户已经通过某个应用程序验证的标记。cookie 名称的格式为 SSO_prefix-application ID。Cookie 的值为 SSO 密钥,通常是应用程序生成的会话 ID。
Cookie 域。应用程序被限制为只能在此域中发送 cookie。这是 DNS 意义的域。
验证 URL。某个应用程序用于向其他应用程序验证其查找到的 cookie 的 URL。
实现 SSO 之前,您必须首先考虑哪些应用程序将位于此信任环中。可位于此信任环内的应用程序包括 Messenger Express(带有或不带有 Messenger Express Multiplexor)、Calendar Express 和旧版 iPlanet Delegated Administrator for Messaging(由于仅支持 Sun LDAP Schema 1,因此不建议使用)。
表 6–2 显示了可通过 SSO 互相访问的应用程序。从用户的角度来看,如果登录到第一列中某个应用程序后,无需重新输入用户 ID 和密码即可访问顶端行中的应用程序,则 SSO 工作。
表 6–2 SSO 互操作性
到:
From: |
Calendar Express |
Messenger Express |
Messenger Express Multiplexor |
Delegated Administrator |
---|---|---|---|---|
Calendar Express |
SSO |
SSO |
SSO |
SSO |
Messenger Express |
SSO |
N/A |
N/A |
SSO |
Messenger Express Multiplexor |
SSO |
N/A |
N/A |
SSO |
Delegated Administrator |
SSO |
SSO |
SSO |
N/A |
协同工作的 SSO 应用程序必须位于同一域中。
SSO 应用程序必须具有对彼此的 SSO 验证 URL 的访问权限。
浏览器必须支持 Cookie。
为安全起见,不应该在运行浏览器的计算机中使用 SSO。
要切换为其他身份标识,需要重新启动浏览器。
假设既在 Messenger Express 中启用了单点注销,又为 Sun Java System Calendar Server 启用了单点注销,如果您从 Sun Java System Calendar Server 注销,则必须重新登录到 Messenger Express。如果从 Messenger Express 注销,则必须重新登录到 Sun Java System Calendar Server。但是,目前并不是这样工作的。从一个应用程序注销后,您可能仍然在另一个应用程序中保持登录状态。
最简单的 SSO 部署方案仅包含 Messenger Express 和 Delegated Administrator。通过在同一计算机或不同计算机中添加使用相同 SSO 前缀(以便其位于同一信任环中)的 Calendar Express,可以创建较复杂的方案。如图 6–1 所示。
更复杂的部署将包括 Messenger Express Multiplexors 和负载平衡器。
本节介绍如何为 Messenger Express、Delegated Administrator 和 Calendar Manager 设置 SSO。
配置 Messenger Express 以实现 SSO。
设置适当的 SSO configutil 参数。
要为具有 Delegated Administrator 的 Messenger Express 启用单点登录,请按照以下方法设置配置参数(假定默认域为 siroe.com)。表 6–3 中介绍了这些参数。您必须是超级用户。使用 cd 命令进入到 instance_root
configutil -o local.webmail.sso.enable -v 1 configutil -o local.webmail.sso.prefix -v ssogrp1 |
ssogrp1 是 iDA 使用的默认 SSO 前缀,尽管您可以选择其他前缀,但是使用默认前缀可以在配置 iDA 和 iCS 时省去一些键入操作。
configutil -o local.webmail.sso.id -v ims5 |
ims5 是您选择用于标识 Messenger Express (ME) 以使其区别于其他应用程序的名称。
configutil -o local.webmail.sso.cookiedomain -v ".siroe.com" |
以上域必须与 ME/浏览器客户机使用的域匹配,才能连接到服务器。因而,尽管此服务器上的托管域可能称为 xyz.com,但我们必须使用 DNS 中的真实域。该值必须以句点开头。
configutil -o local.webmail.sso.singlesignoff -v 1 configutil -o local.sso.ApplicationID.verifyurl -v \ "http://ApplicationHost:port/VerifySSO?" |
ApplicationID 是我们给予 SSO 应用程序的名称(例如:对于 Delegated Administrator 为 ida、对于 Calendar Server 为 ics50)。ApplicationHost:port 是应用程序的主机和端口号。对于每个非 Messaging Server 应用程序,您将具有上述行中的其中一行。示例:
configutil -o local.sso.ida.verifyurl -v \ "http://siroe.com:8080/VerifySSO?" |
更改配置后重新启动 Messenger Express HTTP 服务器。
cd instance_root./stop-msg http ./start-msg http |
配置 Directory Server 用于 SSO。
在目录中创建代理用户帐户。
代理用户帐户使 Delegated Administrator 可以捆绑至 Directory Server,以进行代理验证。使用以下 LDIF 代码 (proxy.ldif),您可以创建使用 ldapadd 的代理用户帐户条目。
ldapadd -h mysystem.siroe.com -D "cn=Directory Manager" -w password -v -f proxy.ldif
dn: uid=proxy, ou=people, o=siroe.com, o=isp objectclass: top objectclass: person objectclass: organizationalperson objectclass: inetorgperson uid: proxy givenname: Proxy sn: Auth cn: Proxy Auth userpassword: proxypassword |
为代理用户帐户验证创建适当的 ACI。
使用 ldapmodify 实用程序为安装 Delegated Administrator 时创建的每个后缀创建一个 ACI。
osiroot—您输入的用于存储用户数据的后缀(默认值为 o=isp)。osiroot 是组织树的根。
dcroot—您输入的用于存储域信息的后缀。(默认值为 o=internet。)
osiroot—您输入的用于存储配置信息的后缀,应当与您输入的用于存储用户数据的值相同。
以下是早期创建的代理用户的 osiroot ACI 条目 (aci1.ldif) 的示例:
dn: o=isp changetype: modify add: aci aci: (target="ldap:///o=isp")(targetattr="*")(version 3.0; acl "proxy";allow (proxy) userdn="ldap:///uid=proxy, ou=people, o=siroe.com, o=isp";) |
ldapmodify -h siroe.com -D "cn=Directory Manager" -w password -v -f aci1.ldif |
为 dcroot 创建类似的 ACI 条目 (aci2.ldif):
dn: o=internet changetype: modify add: aci aci: (target="ldap:///o=internet")(targetattr="*")(version 3.0; acl "proxy";allow (proxy) userdn="ldap:///uid=proxy, ou=people, o=siroe.com, o=isp";) |
ldapmodify -h siroe.com -D "cn=Directory Manager" -w password -v -f aci2.ldif |
配置 Delegated Administrator
将代理用户证书和上下文的 cookie 名称添加到 Delegated Administrator 的 resource.properties 文件。
在 Delegated Administrator resource.properties 文件中取消以下条目的注释并对其进行修改:
LDAPDatabaseInterface-ldapauthdn=Proxy_Auth_DN LDAPDatabaseInterface-ldapauthpw=Proxy_Auth_Password NDAAuth-singleSignOnId=SSO_Prefix- NDAAuth-applicationId=DelAdminID |
例如:
LDAPDatabaseInterface-ldapauthdn= uid=proxy,ou=people,o=cesta.com,o=isp LDAPDatabaseInterface-ldapauthpw=proxypassword NDAAuth-singleSignOnId=ssogrp1- NDAAuth-applicationId=ida |
resource.properties 文件存储在以下位置:
iDA_svr_base/nda/classes/netscape/nda/servlet/
添加参与的服务器的验证 URL。
要检验接收到的单点登录 cookie,Delegated Administrator 必须知道联系的对象。您必须为所有已知的参与的服务器提供检验 URL。
按照示例,假定已安装 Messenger Express,并且其应用程序 ID 为 msg5。编辑 Delegated Administrator 的 resource.properties 文件并添加如下条目:
verificationurl-ssogrp1-msg5=http://webmail_hostname:port/VerifySSO? verificationurl-ssogrp1-ida=http://iDA_hostname:port/VerifySSO? verificationurl-ssogrp1-ics50=http://iCS_hostname:port/VerifySSO? |
resource.properties 文件位于以下目录中:
iDA_svr_base/nda/classes/netscape/nda/servlet/
添加 Delegated Administrator 单点登录 cookie 信息并启用 UTF8 参数编码。
定义 Delegated Administrator 的上下文标识符。
编辑 servlets.properties 文件,并取消包含文本 servlet.*.context=ims50 的所有行的注释。其中 * 表示任意字符串。
servlets.properties 文件位于以下目录中:
Web_Svr_Base/https-instancename/config/
在 Enterprise Server 配置中指定上下文的 cookie 名称。
编辑 Enterprise Server 的 contexts.properties 文件,并将以下行添加到文件底部、#IDACONF-Start 行之前:
context.ims50.sessionCookie=ssogrp1-ida
contexts.properties 文件位于以下目录中:
Web_Svr_Base/https-instancename/config/
为 ims5 上下文启用 UTF8 参数编码。
要在 Enterprise Server 配置中为 ims5 上下文启用 UTF8 参数编码,请将以下条目添加到 Enterprise Server 的 contexts.properties 文件中:
context.ims50.parameterEncoding=utf8
重新启动 Messenger Express。
按照步骤 1a 至 2c 中所述更改配置之后,您必须重新启动 Messenger Express 才能使更改生效:
Web_Svr_Base/https-instance_name/stop Web_Svr_Base/https-instancename/start |
如果在此 SSO 组中部署 Calendar Server,请配置 Calendar Server。
编辑 ics.conf 并添加以下内容:
sso.appid = "ics50" sso.appprefix = "ssogrp1" sso.cookiedomain = ".red.iplanet.com" sso.enable = "1" sso.singlesignoff = "true" sso.userdomain = "mysystem.red.iplanet.com" sso.ims5.url="http://mysystem.red.iplanet.com:80/VerifySSO?" sso.ida.url=http://mysystem.red.iplanet.com:8080/VerifySSO? |
重新启动 Calendar Server
start-cal
重新启动 Messenger Express HTTP 服务器:
msg_svr_base/sbin/stop-msg http msg_svr_base/sbin/start-msg http |
您可以使用 configutil 命令修改 Messenger Express 的单点配置参数,如Messenger Express 信任 SSO 配置参数所示。有关 configutil 的更多信息,请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》。
表 6–3 信任环单点登录参数