单点登录可让最终用户进行一次验证(即使用用户 ID 和密码登录)即可访问多个应用程序。Sun JavaTM System Access Manager 是用于 Sun Java System 服务器的 SSO 的官方网关。即,用户必须登录到 Access Manager 以访问其他配置了 SSO 的服务器。
例如,当正确配置时,用户可以在 Access Manager 登录屏幕中登录,并在另一个窗口访问 Instant Messenger 而无需重新登录。与此类似,如果正确配置了 Sun Java System Calendar Server,用户可以在 Access Manager 登录屏幕中登录,并在另一个窗口访问“日历”而无需再次登录。
其他 Communications Suite 服务器(如 Messaging Server)提供两种部署 SSO 的方法。第一种是通过 Access Manager,第二种是通过信任环技术。使用信任环是实现 SSO 的传统方法,Instant Messaging 并未采用此方法。尽管该方法提供了一些 Access Manager SSO 不具备的功能,但是未来的所有开发工作都将使用 Access Manager。本章的以下小节介绍了使用 Access Manager 为 Instant Messaging 启用 SSO 的信息:
Instant Messenger 会话仅在 Access Manager 会话有效时有效。如果用户从 Access Manager 注销,则 Instant Messenger 会话将在用户向服务器发送了另一个请求后自动关闭(单点注销)。
协同工作的 SSO 应用程序必须位于同一 DNS 域中。
SSO 应用程序必须能够访问 Access Manager 验证 URL(命名服务)。
浏览器必须启用 cookie。
有两个 iim.conf 参数支持 Instant Messaging SSO。
表 5–1 Instant Messaging 单点登录参数
参数 |
说明 |
---|---|
iim_server.usesso |
确定 Instant Messaging 服务器在验证期间是否应依靠 SSO 提供者。Access Manager 会话 API 为 Instant Messaging 服务器提供了验证由客户机发送的会话 ID 的能力。 可能的值包括: 0 – 不使用 SSO 提供者。 1 – 首先使用 SSO 提供者,如果 SSO 验证失败则默认使用 LDAP。 -1 – 仅使用 SSO 提供者,即使 SSO 验证失败也不尝试 LDAP 验证。 默认值:1,当运行 configure 实用程序时利用 Access Manager 进行 SSO 时。否则,默认值为 0。 |
iim_server.ssoprovider |
指定实现 com.sun.im.provider.SSOProvider 接口的类。如果 iim_server.usesso 不等于 0,且未设置该选项,则服务器使用在 Instant Messaging 中内部定义的默认基于 Access Manager 的 SSO 提供者。通常,您不会修改该参数。 默认值:无 |
请确保 Access Manager SDK 与 Instant Messaging 服务器安装在相同的主机上。
有关更多信息,参见《Sun Java Communications Suite 5 Installation Guide》。
确保将 Instant Messaging 服务指定给 Access Manager 控制台 (amconsole) 中的组织。
如果您正在部署中使用其他的 Communications Suite 服务器产品(例如 Messaging Server),则可能需要手动为 Instant Messaging 配置基于 Access Manager 的服务。
有关说明,参见在 Access Manager 中向子组织添加 Instant Messaging 和在线状态服务以支持单点登录和策略管理。。
运行 configure 实用程序。
有关说明,参见安装后配置 Instant Messaging。
提示是否要将 Access Manager 用于 SSO 时,选择“是”。
将 iim.policy.module 参数设置为 "identity":
重新启动 Instant Messaging 服务器:
imadmin start
如果 SSO 出现问题,则首先要做的是检查 xmppd.log 服务器日志文件和客户机日志文件是否有错误。提高日志记录级别可能会有所帮助。新的日志记录级别仅在服务器重新启动后生效。
确保已将 Instant Messaging 服务指定给 Access Manager 控制台 (amconsole) 中的组织及其父组织。有关信息,参见在 Access Manager 中向子组织添加 Instant Messaging 和在线状态服务以支持单点登录和策略管理。。
确保 iim.conf 中的 im_server.usesso 参数没有设置为 0。有关该参数的信息,参见表 A–4。如果该参数设置为 0,则完成为 Instant Messaging 启用 SSO中的步骤。
如果无法直接登录到 Instant Messaging 中,检查 xmppd.log 是否有类似以下之一的错误:
DEBUG xmppd [com.sun.im.service.util.Worker3] Service \\ URL not found:session.com.iplanet.sso.SSOException: Service URL not found: |
INFO xmppd [com.sun.im.service.util.Worker 3] [Identity] \\ Failed to create SSO token for USERNAME |
INFO xmppd [org.netbeans.lib.collab.util.Worker 1] [LDAP] \\ pops does not have required objectclass for storing to ldap |
如果存在任何这些错误,则使用以下步骤解决问题:
通过 amconsole
创建一个用户,并为该用户添加验证、配置、Instant Messaging 和在线服务。
尝试使用所创建的用户登录。
检查以确保通过 amconsole
正确填写了 amldapuser 的密码。
检查域(例如 o=siroe.com)是否有“验证配置服务实例”。
检查“验证配置服务实例”是否具有设置为 LDAP 或“成员资格”的验证模块。该值应显示 REQUIRED/SUFFICIENT 的状态。
Instant Messaging 仅支持使用用户名和密码登录。如果您使用“验证链”,则需要禁用它来使用 Instant Messaging。
在 LDAP 或验证模块中,为 CORE 输入 amldapuser 密码。
在“核心验证模块配置”中的“组织验证配置”下拉菜单和“管理员验证配置”下拉菜单中选择新创建的 ldapService 验证配置服务实例。
再次登录。