Sun Java System Messaging Server 6 2005Q4 管理指南

第 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 登录屏幕登录后,就可以在其他窗口中访问其日历,而不必再次登录。

请注意,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。在这四个参数中,仅有 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 单点登录参数

参数 

说明 

local.webmail.sso.amnamingurl

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

默认值:未设置。 

local.webmail.sso.amcookiename

Access Manager cookie 名称。默认情况下,Access Manager 将其会话句柄保存在名为 iPlanetDirectoryPro 的 cookie 中。如果将 Access Manager 配置为使用其他 cookie 名称,则需要在 Messaging Server 中将该名称配置为此参数,以便在进行单点登录时 Messaging Server 知道要查找的内容。如果 IS 有默认配置,则不能更改默认值。

默认值: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 注销时的操作进行自定义。

默认值:是 

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

                                    到: 

 

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 部署方案仅包含 Messenger Express 和 Delegated Administrator。通过在同一计算机或不同计算机中添加使用相同 SSO 前缀(以便其位于同一信任环中)的 Calendar Express,可以创建较复杂的方案。如图 6–1 所示。

图 6–1 简单 SSO 部署

此图形显示了简单的 SSO 部署。

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

图 6–2 复杂 SSO 部署

此图形表示复杂的 SSO 部署。

设置信任环 SSO

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

Procedure为 Messenger Express、Delegated Administrator 和 Calendar Manager 设置 SSO

步骤
  1. 配置 Messenger Express 以实现 SSO。

    1. 设置适当的 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?"
      
    2. 更改配置后重新启动 Messenger Express HTTP 服务器。


      cd instance_root./stop-msg http
      ./start-msg http
      
  2. 配置 Directory Server 用于 SSO。

    1. 在目录中创建代理用户帐户。

      代理用户帐户使 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
    2. 为代理用户帐户验证创建适当的 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
      
  3. 配置 Delegated Administrator

    1. 将代理用户证书和上下文的 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/

    2. 添加参与的服务器的验证 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/

  4. 添加 Delegated Administrator 单点登录 cookie 信息并启用 UTF8 参数编码。

    1. 定义 Delegated Administrator 的上下文标识符。

      编辑 servlets.properties 文件,并取消包含文本 servlet.*.context=ims50 的所有行的注释。其中 * 表示任意字符串。

      servlets.properties 文件位于以下目录中:

      Web_Svr_Base/https-instancename/config/

    2. 在 Enterprise Server 配置中指定上下文的 cookie 名称。

      编辑 Enterprise Server 的 contexts.properties 文件,并将以下行添加到文件底部、#IDACONF-Start 行之前:

      context.ims50.sessionCookie=ssogrp1-ida

      contexts.properties 文件位于以下目录中:

      Web_Svr_Base/https-instancename/config/

    3. ims5 上下文启用 UTF8 参数编码。

      要在 Enterprise Server 配置中为 ims5 上下文启用 UTF8 参数编码,请将以下条目添加到 Enterprise Server 的 contexts.properties 文件中:

      context.ims50.parameterEncoding=utf8

  5. 重新启动 Messenger Express。

    按照步骤 1a 至 2c 中所述更改配置之后,您必须重新启动 Messenger Express 才能使更改生效:


    Web_Svr_Base/https-instance_name/stop
    Web_Svr_Base/https-instancename/start
    
  6. 如果在此 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?
  7. 重新启动 Calendar Server

    start-cal

  8. 重新启动 Messenger Express HTTP 服务器:


    msg_svr_base/sbin/stop-msg http
    msg_svr_base/sbin/start-msg http
    

Messenger Express 信任 SSO 配置参数

您可以使用 configutil 命令修改 Messenger Express 的单点配置参数,如Messenger Express 信任 SSO 配置参数所示。有关 configutil 的更多信息,请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》

表 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 功能。 

默认值为空。 

该字符串必须与 Delegated Administrator 在其 resource.properties 文件中所使用的字符串(不带结尾字符 -)相匹配。例如,如果:

NDAAuth-singleSignOnID=ssogrp1-

则应该在此处将该值设置为 ssogrp1


local.webmail.sso.singlesignoff

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

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

默认值为零。