Sun logo      上一个      目录      索引      下一个     

Sun ONE Messaging Server 6.0 管理员指南

第 4 章
启用单一登录 (SSO)

单一登录是指最终用户进行一次验证(即使用用户 ID 和密码登录)后即可访问多个应用程序的功能。Sun One Identity Server 是用于 Sun ONE 服务器的 SSO 的正式网关。也就是说,用户必须登录到 Identity Server 才能访问其它配置了 SSO 的服务器。

例如,如果正确配置,用户在 Sun One Identity Server 登录屏幕登录后,可以在其它窗口访问 Messenger Express,而不必再次登录。同样,如果正确配置了 Sun ONE Calendar Server,用户可以在 Sun One Identity Server 登录屏幕登录,然后在其它窗口中访问其 Calendar Server,而无需再次登录。

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


用于 Sun ONE 服务器的 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 命令修改表 4-3 中所示的 SSO 配置参数。

表 4-1 Identity Server 单一登录参数

参数

说明

local.webmail.sso.amnamingurl

Identity Server 运行命名服务的 URL。用于通过 Identity Server 单一登录的强制性变量。通常此 URL 是 http://<server>/amserver/namingservice。

缺省值:未设置

local.webmail.sso.amcookiename

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

缺省值: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 到 Identity Server 的单一注销。Identity Server 是中心验证权威,将始终启用从 Identity Server 到 Messaging Server 的单一注销。此选项允许站点配置 Webmail 中的“注销”按钮是否还应将用户从 Identity Server 中注销(保存某些定制工作)。缺省情况下,将启用此选项。如果禁用此选项,从缺省的 Webmail 客户机注销的用户将自动重新登录,因为只要 Identity Server 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 仍有问题,请确认在登录过程中是否使用了 Identity Server 和 Messaging Server 的全限定主机名。Cookie 仅在同一域中的服务器之间共享,而浏览器不知道本地服务器名称的域,因此必须在浏览器中使用全限定名称才能使 SSO 工作。


信任范围 SSO(传统)

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

信任范围 SSO 概述和定义

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

信任范围 SSO 应用程序

实现 SSO 之前,您必须首先考虑哪些应用程序将位于此信任范围中。可位于此信任范围内的应用程序包括 Messenger Express(带有或不带有 Messenger Express Multiplexor)、Calendar Express 和旧版 iPlanet Delegated Administrator for Messaging(由于仅支持 Sun ONE LDAP 模式 v.1,因此不建议使用)。

表 4-2 显示了可通过 SSO 彼此访问的应用程序。从用户的角度来看,如果登录到第一列中某个应用程序后,无需重新输入用户 ID 和密码即可访问顶端行中的应用程序,则 SSO 工作。

表 4-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 可以创建较复杂的方案。如图 4-1 所示。

图 4-1 简单 SSO 部署

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

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

图 4-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)。表 4-3 中介绍了这些参数。您必须是 root 用户。使用 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 的代理用户帐户条目。

      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

      ldapadd -h mysystem.siroe.com -D "cn=Directory Manager" -w password -v -f proxy.ldif

    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 参数编码。

      要在 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 的单一登录配置参数(如表 4-3 所示)。有关 configutil 的详细信息,请参见 Messaging Server Reference Manual

表 4-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 的缺省 appidnda45。其实际值由 Delegated Administrator resource.properties 文件条目 NDAAuth-applicationID 指定。

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

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

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



上一个      目录      索引      下一个     


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