Sun Java logo     上一页      目录      索引      下一页     

Sun logo
Sun Java System Messaging Server 6 2005Q1 管理指南 

第 6 章
启用单点登录 (SSO)

单点登录是指最终用户进行一次验证(即使用用户 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 登录屏幕登录后,就可以在其他窗口中访问 Calendar Server,而不必再次登录。

请注意,Messaging Server 提供了两种部署 SSO 的方法。第一种方法是通过 Sun Java System Access Manager,第二种方法是通过通信服务器信任的范围技术。使用信任范围是实现 SSO 的传统方法。尽管此方法提供了 Access Manager SSO 所没有的一些功能,但是不建议使用此方法,因为未来所有开发都将使用 Access Manager。但是,在以下各节中对这两种方法都进行了介绍:


用于 Sun Java System 服务器的 Access Manager SSO

本节介绍了使用 Access Manager 的 SSO。其中包含以下各节:

SSO 限制和注意事项

将 Messaging Server 配置为支持 SSO

有四个 configutil 参数支持 Messaging Server SSO。对 Messaging Server 启用 SSO 时,只有其中一个参数 local.webmail.sso.amnamingurl 是必需的。要启用 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 单点登录参数

参数

说明

local.webmail.sso.amnamingurl

Access Manager 运行命名服务所在的 URL。通过 Access Manager 进行单点登录的强制性变量。通常此 URL 是 http://server/amserver/namingservice。

默认值:未设置。

local.webmail.sso.amcookiename

Access Manager cookie 名称。如果将 Access Manager 配置为使用其他 cookie 名称,则需要在 Messaging Server 中将该名称配置为 local.webmail.sso.amcookiename,以便在进行单点登录时 Messaging Server 知道要查找的内容。默认值是 iPlanetDirectoryPro,如果 Access Manager 有默认配置,则不能对其进行更改。

默认值:iPlanetDirectoryPro

local.webmail.sso.amloglevel

AMSDK 日志记录级别。Messaging Server 使用的 SSO 库有自己的日志机制,不同于 Messaging Server 的日志机制。其邮件记录在 msg_svr_base/log 下名为 http_sso 的文件中。默认情况下,仅记录具有 info 或更高优先级的邮件,但可以通过将日志级别设置为 1 到 5 之间的值(1 = errors、2 = warnings、3 = info、4 = debug、5 = maxdebug)来提高日志级别。请注意,库的邮件重要性的概念不同于 Messaging Server,将级别设置为 debug 可能会导致大量无意义的数据。另外,http_sso 日志文件不由通用的 Messaging Server 日志代码管理,无法清除或翻过此日志文件。将日志级别设置为高于默认级别时,系统管理员将负责将其清除。

默认值: 3

local.webmail.sso.singlesignoff

从 Messaging Server 到 Access Manager 的单点注销。Access Manager 是中心验证权威,将始终启用从 Access Manager 到 Messaging Server 的单点注销。此选项允许站点配置 Webmail 中的“注销”按钮是否还应将用户从 Access Manager 中注销(保存某些定制工作)。默认情况下,将启用此选项。如果禁用此选项,从默认的 Webmail 客户机注销的用户将自动重新登录,因为只要 Access Manager cookie 存在并有效,注销将引用文档根目录,而文档根目录将引用收件箱显示。因此,选择禁用此选项的站点需要对 Webmail 注销时的操作进行自定义。

默认值:yes

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 仍有问题,请确认在登录过程中是否使用了 Access Manager 和 Messaging Server 的全限定主机名。Cookie 仅在同一域中的服务器之间共享,而浏览器不知道什么域用于本地服务器名称,因此必须在浏览器中使用全限定名称才能使 SSO 工作。


信任范围 SSO(传统)

本节介绍了信任范围 SSO。由于将来所有的开发都将使用 Access Manager,因此不建议使用此种方法的 SSO。但是,信任范围 SSO 的某些可用功能是 Access Manager SSO 现在没有的。本节包含以下几部分:

信任范围 SSO 概述和定义

部署 SSO 之前,请务必了解以下术语。

信任范围 SSO 应用程序

实现 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 互操作性

                           到:

 

从:

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 部署方案仅由 Messenger Express 和 iPlanet Delegated Administrator for Messaging 组成。在同一计算机中或不同计算机中添加使用相同 SSO 前缀(以便其位于同一信任范围中)的 Calendar Express 可以创建较复杂的方案。如图 6-1 所示。

图 6-1 简单 SSO 部署

此图形显示了在一个 SSO 前缀下使用三个应用程序的简单 SSO 部署。

更复杂的部署将包括 Messenger Express Multiplexors 和负载平衡器。

图 6-2 复杂 SSO 部署

此图形显示了使用七个服务器应用程序的复杂 SSO 部署。

设置信任范围 SSO

本节介绍如何为 Messenger Express、iPlanet Delegated Administrator for Messaging 和 Calendar Manager 设置 SSO。

  1. 配置 Messenger Express 用于 SSO。
    1. 设置适当的 SSO configutil 参数。
    2. 要为具有 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?"

    3. 更改配置后重新启动 Messenger Express HTTP 服务器。
    4. cd instance_root
      ./stop-msg http
      ./start-msg http

  2. 配置 Directory Server 用于 SSO。
    1. 在目录中创建代理用户帐户。
    2. 代理用户帐户使 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

    3. 为代理用户帐户验证创建适当的 ACI。
    4. 使用 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

  3. 配置 Delegated Administrator
    1. 将代理用户证书和上下文的 cookie 名称添加到 Delegated Administrator resource.properties 文件。
    2. 在 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

    3. 添加参与的服务器的检验 URL。
    4. 要检验接收到的单点登录 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?

  4. 添加 Delegated Administrator 单点登录 cookie 信息并启用 UTF8 参数编码。
    1. 定义 Delegated Administrator 的上下文标识符。
    2. 编辑 Web_Server_Root/https-instancename/config/servlets.properties,并取消包含文本 servlet.*.context=ims50 的所有行的注释。其中 * 表示任意字符串。

    3. 在 Enterprise Server 配置中指定上下文的 cookie 名称。
    4. 编辑 Enterprise Server 文件 Web_Server_Root/https-instancename/config/contexts.properties,并将以下行添加到文件底部、#IDACONF-Start 行之前:

      context.ims50.sessionCookie=ssogrp1-ida

    5. ims5 上下文启用 UTF8 参数编码。
    6. 要在 Enterprise Server 配置中为 ims5 上下文启用 UTF8 参数编码,请将以下条目添加到 Enterprise Server WebServer_Root/https-instancename/config/contexts.properties 文件中:

      context.ims50.parameterEncoding=utf8

  5. 重新启动 Messenger Express。
  6. 按照步骤 1a 至 2c 所述更改了配置后,您必须使用以下命令重新启动 Messenger Express 才能使更改生效:

    WebServer_Root/https-iinstance_name/stop
    WebServer_Root/https-instancename/start

  7. 如果在此 SSO 组中部署 Calendar Server,请配置 Calendar Server。
  8. 编辑 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?

  9. 重新启动 Calendar Server
  10. start-cal

  11. 重新启动 Messenger Express HTTP 服务器:
  12. msg_svr_base/sbin/stop-msg http
    msg_svr_base/sbin/start-msg http

Messenger Express 信任 SSO 配置参数

您可以使用 configutil 命令修改 Messenger Express 的单点登录配置参数(如表 6-3 所示)。有关 configutil 的详细信息,请参见 Messaging Server Reference Manual

表 6-3 信任范围单点登录参数

参数

说明

local.sso.appid.verifyurl

为对等 SSO 应用程序设置验证 URL 值。appid 是 SSO cookie 将生效的对等 SSO 应用程序的应用程序 ID。例如,Delegated Administrator 的默认 appidnda45。其实际值由 Delegated Administrator resource.properties 文件条目 NDAAuth-applicationID 指定。

应该为每个信任的对等 SSO 应用程序定义一个参数。检验 URL 的标准格式为:

http://nda-host:port/VerifySSO?

如果在多个 Messenger Express Multiplexor 和邮件存储服务器(运行 Messenger Express)前端或日历前端使用负载平衡器,请确保为 verifyurl 中带有真实主机名的每个物理系统指定不同的 appid。这将确保使用正确的系统来检验 cookie

local.webmail.sso.
cookiedomain

此参数的字符串值用于设置由 Messenger Express HTTP 服务器设置的所有 SSO cookie 的 cookie 域值。默认值为空。

该域必须与 Messenger Express 浏览器用于访问服务器的 DNS 域相匹配。它不是托管的域名。

local.webmail.sso.enable

启用或禁用所有单点登录功能,包括获取登录页面后接受和检验客户机提供的 SSO cookie、在成功登录的情况下将 SSO cookie 返回给客户机以及响应来自其他 SSO 同伴的要求检验其 cookie 的请求。

如果设置为任何非零值,服务器将执行所有 SSO 功能。

如果设置为零,服务器将不执行任何 SSO 功能。

默认值为零。

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.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.
singlesignoff

此参数的整数值(如果设置为任何非零值)将在客户机注销时清除客户机(如果其前缀值与 local.webmail.sso.prefix 中配置的值相匹配)中的所有 SSO cookie。

如果设置为零,则客户机注销时 Messenger Express 将清除自己的 SSO cookie。

默认值为零。



上一页      目录      索引      下一页     


版权所有 2005 Sun Microsystems, Inc. 保留所有权利。