Sun Java System Messaging Server 6 2004Q2 管理指南 |
第 6 章
启用单点登录 (SSO)单点登录是指最终用户进行一次验证(即使用用户 ID 和口令登录)后即可访问多个应用程序的功能。Sun Java System Identity Server 是用于 Sun Java System 服务器的 SSO 的正式网关。也就是说,用户必须登录到 Identity Server 才能访问其他配置了 SSO 的服务器。
例如,如果正确配置,用户在 Sun Java System Identity Server 登录屏幕登录后,可以在其他窗口访问 Messenger Express,而不必再次登录。同样,如果正确配置了 Sun Java System Calendar Server,用户可以在 Sun Java System Identity Server 登录屏幕登录,然后在其他窗口中访问其 Calendar Server,而无需再次登录。
请注意,Messaging Server 提供了两种部署 SSO 的方法。第一种方法是通过 Sun Java System Identity Server,第二种方法是通过通信服务器信任的范围技术。使用信任范围是实现 SSO 的传统方法。尽管此方法提供了 Identity Server SSO 所没有的一些功能,但是不建议使用此方法,因为未来所有开发都将使用 Identity Server。但是,在以下各节中对这两种方法都进行了介绍:
用于 Sun Java System 服务器的 Identity Server SSO本节介绍使用 Identity Server 的 SSO。其中包括以下各节:
SSO 限制和注意事项
配置 Messaging Server 以支持 SSO
有四个 configutil 参数支持 Messaging Server SSO。对 Messaging Server 启用 SSO 时,只有其中一个参数 local.webmail.sso.amnamingurl 是必需的。要启用 SSO,请将此参数设置为 Identity Server 在其中运行命名服务的 URL。通常此 URL 是 http://server/amserver/namingservice。示例:
configutil -o local.webmail.sso.amnamingurl -v http://sca-walnut:88/amserver/namingservice
注
Identity Server SSO 不查看 local.webmail.sso.enable,该参数启用旧的 SSO 机制。应该将 local.webmail.sso.enable 保留为 off 或不对其进行设置,否则将记录关于缺少配置参数的警告消息,而这些配置参数只为旧的 SSO 机制所需。
您可以使用 configutil 命令修改表 6-3 中所示的 SSO 配置参数。
错误诊断 SSO
如果 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 仍有问题,请确认在登录过程中是否使用了 Identity Server 和 Messaging Server 的全限定主机名。Cookie 仅在同一域中的服务器之间共享,而浏览器不知道本地服务器名称的域,因此必须在浏览器中使用全限定名称才能使 SSO 工作。
信任范围 SSO(传统)本节介绍了信任范围 SSO。由于将来所有的开发都将使用 Identity Server,因此不建议使用此种方法的 SSO。但是,信任范围 SSO 的某些可用功能是 Identity Server SSO 现在不具有的。本节包含以下内容:
信任范围 SSO 概述和定义
部署 SSO 之前,请务必了解以下术语。
- SSO:单点登录。登录到一个应用程序即可访问其他应用程序的功能。用户身份标识在所有应用程序中相同。
- 信任的应用程序。共享 SSO 方案(SSO 前缀)并信任彼此的 cookie 和验证的应用程序。也称为对等 SSO 应用程序。
- 信任范围。信任的应用程序的圈子。这些应用程序共享同一个 SSO 前缀。
- SSO 前缀。一个字符串,SSO 的部署者定义并告知应用程序,以便应用程序可以使用该字符串查找同一信任范围中其他应用程序生成的 cookie。具有不同前缀的应用程序不在同一圈中,用户在这些应用程序之间移动时需要重新验证。在配置设置中,前缀有时(但不始终)明确地以 -(“-”)作为结尾字符。
- 应用程序 ID。(appid)。SSO 部署者为 SSO 圈中每个应用程序定义的唯一字符串。
- SSO Cookie。浏览器用于记住用户已经通过某个应用程序验证的标记。Cookie 名称的格式为 SSO_前缀-应用程序 ID。Cookie 的值为 SSO 密钥,通常是应用程序生成的会话 ID。
- Cookie 域。应用程序被限制为只能在此域中发送 cookie。这是 DNS 意义的域。
- 验证 URL。某个应用程序用于向其他应用程序验证其查找到的 cookie 的 URL。
信任范围 SSO 应用程序
实现 SSO 之前,您必须首先考虑哪些应用程序将位于此信任范围中。可位于此信任范围内的应用程序包括 Messenger Express(带有或不带有 Messenger Express Multiplexor)、Calendar Express 和旧版 iPlanet Delegated Administrator for Messaging(由于仅支持 Sun LDAP Schema 1,因此不建议使用)。
表 6-2 显示了可通过 SSO 彼此访问的应用程序。从用户的角度来看,如果登录到第一列中某个应用程序后,无需重新输入用户 ID 和口令即可访问顶端行中的应用程序,则 SSO 工作。
信任范围 SSO 限制
- 协同工作的 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 部署方案示例
最简单的 SSO 部署方案仅由 Messenger Express 和 iPlanet Delegated Administrator for Messaging 组成。在同一计算机中或不同计算机中添加使用相同 SSO 前缀(以便其位于同一信任范围中)的 Calendar Express 可以创建较复杂的方案。如图 6-1 所示。
图 6-1 简单 SSO 部署
更复杂的部署将包括 Messenger Express Multiplexors 和负载平衡器。
图 6-2 复杂 SSO 部署
设置信任范围 SSO
本节介绍如何为 Messenger Express、iPlanet Delegated Administrator for Messaging 和 Calendar Manager 设置 SSO。
- 配置 Messenger Express 用于 SSO。
- 设置适当的 SSO configutil 参数。
要为具有 Delegated Administrator 的 Messenger Express 启用单点登录,请按照以下方法设置配置参数(假定缺省域是 siroe.com)。表 6-3 中介绍了这些参数。您必须是超级用户。使用 cd 命令进入到 instance_root
- 更改配置后重新启动 Messenger Express HTTP 服务器。
cd instance_root
./stop-msg http
./start-msg http- 配置 Directory Server 用于 SSO。
- 在目录中创建代理用户帐户。
代理用户帐户使 Delegated Administrator 可以绑定到 Directory Server 以进行代理验证。使用以下 LDIF 代码 (proxy.ldif),您可以创建使用 ldapadd 的代理用户帐户条目。
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: proxypasswordldapadd -h mysystem.siroe.com -D "cn=Directory Manager" -w password -v -f proxy.ldif
- 为代理用户帐户验证创建适当的 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 iDA_server_root/nda/classes/netscape/nda/servlet/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=siroe.com, o=isp
LDAPDatabaseInterface-ldapauthpw=proxypassword
NDAAuth-singleSignOnId=ssogrp1-
NDAAuth-applicationId=ida- 添加参与的服务器的检验 URL。
要检验接收到的单点登录 cookie,Delegated Administrator 必须知道联系的对象。您必须为所有已知的参与的服务器提供检验 URL。
按照示例,假定已安装 Messenger Express 并且其应用程序 ID 是 msg5。编辑 Delegated Administrator iDA_server_root/nda/classes/netscape/nda/servlet/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?- 添加 Delegated Administrator 单点登录 cookie 信息并启用 UTF8 参数编码。
- 重新启动 Messenger Express。
按照步骤 1a 至 2c 所述更改了配置后,您必须使用以下命令重新启动 Messenger Express 才能使更改生效:
WebServer_Root/https-iinstance_name/stop
WebServer_Root/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 httpMessenger Express 信任 SSO 配置参数
您可以使用 configutil 命令修改 Messenger Express 的单点登录配置参数(如表 6-3 所示)。有关 configutil 的详细信息,请参见 Messaging Server Reference Manual。
表 6-3 信任范围单点登录参数
参数
说明
local.webmail.sso.enable
启用或禁用所有单点登录功能,包括获取登录页面后接受和检验客户机提供的 SSO cookie、在成功登录的情况下将 SSO cookie 返回给客户机以及响应来自其他 SSO 同伴的要求检验其 cookie 的请求。
如果设置为任何非零值,服务器将执行所有 SSO 功能。
如果设置为零,服务器将不执行任何 SSO 功能。
缺省值为零。
local.webmail.sso.prefix
对 Messenger Express HTTP 服务器设置的 SSO cookie 进行格式化时,将此参数的字符串值用作前缀值。服务器只能识别带有此前缀的 SSO cookie;将忽略其他所有 SSO cookie。
此参数的空值将有效禁用服务器中所有 SSO 功能。
缺省值为空。
该字符串必须与 iPlanet Delegated Administrator for Messaging 在其 resource.properties 文件中使用的字符串(不带有结尾字符 -)相匹配。例如,如果:
NDAAuth-singleSignOnID=ssogrp1-
则应该在此处将该值设置为 ssogrp1。
local.webmail.sso.id
对 Messenger Express HTTP 服务器设置的 SSO cookie 进行格式化时,将此参数的字符串值用作应用程序 ID 值。缺省值为空。
这可以是任意字符串。它的值必须与您在 Delegated Administrator 的 resource.properties 文件中为其指定的值相匹配。resource.properties 中相应的条目是:
Verifycationurl-XXX-YYY=http://webmailhost:webmailport/VerifySSO?
其中 XXX 是上文中设置的 local.webmail.sso.prefix 值,而 YYY 是此处设置的 local.webmail.sso.id 值。
local.webmail.sso.
cookiedomain此参数的字符串值用于设置由 Messenger Express HTTP 服务器设置的所有 SSO cookie 的 cookie 域值。缺省值为空。
该域必须与 Messenger Express 浏览器用于访问服务器的 DNS 域相匹配。它不是托管的域名。
local.webmail.sso.
singlesignoff此参数的整数值(如果设置为任何非零值)将在客户机注销时清除客户机(如果其前缀值与 local.webmail.sso.prefix 中配置的值相匹配)中的所有 SSO cookie。
如果设置为零,则客户机注销时 Messenger Express 将清除自己的 SSO cookie。
缺省值为零。
local.sso.appid.verifyurl
为对等 SSO 应用程序设置验证 URL 值。appid 是 SSO cookie 将生效的对等 SSO 应用程序的应用程序 ID。例如,Delegated Administrator 的缺省 appid 是 nda45。其实际值由 Delegated Administrator resource.properties 文件条目 NDAAuth-applicationID 指定。
应该为每个信任的对等 SSO 应用程序定义一个参数。检验 URL 的标准格式为:
http://nda-host:port/VerifySSO?
如果在多个 Messenger Express Multiplexor 和邮件存储服务器(运行 Messenger Express)前端或日历前端使用负载平衡器,请确保为 verifyurl 中带有真实主机名的每个物理系统指定不同的 appid。这将确保使用正确的系统来检验 cookie