IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Lotus  >

Netegrity SiteMinder 和基于 Domino 的协作服务

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Raj Balasubramanian (Raj_Balasubramanian@us.ibm.com), 咨询 IT 架构师, IBM

2004 年 1 月 01 日

想要将 SiteMinder 用于 Domino、Lotus Team Workplace(QuickPlace)和 Lotus Instant Messaging and Web Conferencing(Sametime)环境下的单点登录,但是又不知从何处着手吗?本文将为您提供实施这一任务的线路图。

越来越多的公司开始跨企业部署单点登录(single sign-on,SSO)。使用 SSO,用户可以登录某个应用程序,然后在该会话期间打开其他支持 SSO 的应用程序,而不需要再次登录。实现 SSO 的方式之一是使用 Netegrity SiteMinder,以跨各种基于 Web 的应用程序提供这项功能。然而在这样做之前,您需要理解 SSO 如何影响现有的 Domino 环境。当您部署 Netegrity SiteMinder 作为基于 Web 的应用程序的 SSO 解决方案时,必须确保 Domino 和关联的 Lotus 协作软件能够在新的 SSO 环境中正常工作。

本文将介绍 SiteMinder 如何在 Domino 平台上实现 SSO 的基础知识,同时提供用于制定关键决策以便最佳地利用 SiteMinder 和 Domino 的蓝图。我们首先介绍 SiteMinder。然后提供用于在 Domino、Lotus Team Workplace(QuickPlace)和 Lotus Instant Messaging and Web Conferencing(Sametime)上实施 SiteMinder 的指导方针。本文假设您是一位对 Domino 和/或其他 Lotus 协作软件有经验的管理员。

SiteMinder 简介


Netegrity SiteMinder 是一个支持目录、基于标准的系统,它可以帮助您使用不同种类的 Web 和应用服务器、操作系统以及应用程序开发平台。使用 SiteMinder,您可以容易地实现安全策略,保护 Web 应用程序和资源。它使您能够按照以用户为中心的、基于策略的安全模型来管理身份验证和授权特权。SiteMinder 通过管理复杂的安全和管理需求,还能够帮助开发人员交付安全的 Web 应用程序。

SiteMinder 在它的基础设施中包括两个用于实现 SSO 的关键组件。第一个是 Policy Server。关于目录、用户和资源的规则及其他相关信息就存储在这里。第二个组件是 webagent,这是安装在需要实现 SSO 的 Web 服务器或应用服务器上的软件。下图描述了这些组件如何工作以及如何在支持 SiteMinder 的环境中交互:


图 1. SiteMinder 环境
SiteMinder 环境

SiteMinder 支持各种 Web 服务器,包括运行在 Windows NT/2000 和 Solaris 上的 Domino(还包括运行在 OS/390 上的 Domino Go Web 服务器)。

当前,最新的 SiteMinder 版本是 5.5 版。不过,本文提供的大多数配置信息也适用于 4.x 版(我们将在适当的场合指出特定于版本的区别)。欲了解关于 SiteMinder 的详细技术信息,请参考 SiteMinder Web 页





回页首


Domino 身份验证


Domino 通过 C API 和 DSAPI(Domino Server API)提供了基于 HTTP 的访问的身份验证机制。下图描绘了如何使用 DSAPI 来支持定制的身份验证:


图 2. 使用 DSAPI 的定制身份验证
使用 DSAPI 的定制身份验证

DSAPI 是作为一个共享库(Windows 2000/NT 上的一个 DLL 文件或 UNIX/Linux 上的一个共享对象)来实现的,它由 Domino HTTP 进程注册和调用。有一些关键事件与该 HTTP 任务相关联,并且这些事件已被 DSAPI 中的定制代码所改写。由于 DSAPI 实际上代替了 Domino 身份验证模型,它促成了:

  • 广泛的定制身份验证需求可通过实现 DSAPI 来满足。
  • 每个 HTTP 请求都由 DSAPI 拦截和处理。

Netegrity SiteMinder webagent for Domino 是作为 DSAPI 来实现的。

SiteMinder 通过提交用户会话的一个 SMSession cookie 来实现 SSO。配置用于在 SiteMinder 环境中工作的其他任何 Web 或应用服务器都能够验证该 cookie 中的凭证,并对关联的用户进行身份验证。该 cookie 使用秘密密钥来加密。除了提供基本的用户身份外,您还可以配置一些代理来从 HTTP 请求头部中查找用户身份。SiteMinder webagent for Domino 能够基于用户的请求头部中的值提供用户身份。

除了提供 SSO 外,您还可以配置 webagent 来提供一个防止 Cross Site Scripting(CSS)攻击的安全环境,通过生成 Web 资源的高级授权列表来检查不正常的 URL,从而提供仅允许受信任的 IP/主机授权访问资源的规则,以及提供其他许多分布式的安全特性。这些配置通常是在目标 Web 服务器(在 4.x 或 5.x 版的 SiteMinder 中)或 Policy Server(在 5.x 版的 SiteMinder 中)上的 webagent 配置文件中设置的。目标 Web 服务器上包含 webagent 配置的文件名为 webagent.conf。

在使用 SiteMinder 来启用 Domino 服务器的 SSO 的同时,您可以使用 Domino 的 ACL 特性来进行授权或生成 SiteMinder 中的授权列表。我们的经验表明,SiteMinder 经常用于身份验证,而 Domino 的 ACL 特性经常用于应用程序授权。因此,您可以在 SiteMinder 提供的 SSO 环境中利用所有级别的 ACL(服务器、数据库、视图和文档级)。





回页首


为 webagent 配置 SiteMinder Policy Server


让我们查看一下 Policy Server 是如何用于执行 SiteMinder 环境中的 SSO 的。Policy Server 是存储 webagent 的策略定义的中心位置。在任何目标 Web 服务器上部署 webagent 之前,您需要在 Policy Server 上定义各种策略和特定于代理的对象。

Policy Server 提供了确定已安装的 webagent 应该如何操作的选项。每个 webagent 都应该在 Policy Server 上定义以下内容:

  • 代理概要文件包含关于代理的 IP 地址或主机名称的信息。
  • Agent Configuration 对象是在 SiteMinder 5.x 中可用的一个特性,它包含关于代理的 IP 地址或主机名称的信息。
  • Host Configuration 对象在 SiteMinder 5.x 中可用,它包含关于 Policy 主机和 Policy Server 相关设置的信息。
  • Policy Domain 是一组相关的领域(realm)、规则、答复以及策略(请参阅下面这些列表项)。
  • 领域使用身份验证方案的一个定义来定义要保护/解除保护的资源。
  • 规则定义了受保护的/不受保护的资源的特定 Web 操作。它还允许或拒绝访问。
  • 答复是一个可选特性,它定义了发送给目标 Web 服务器的 HTTP 头部。它们可以是静态的,或者是根据每个请求而定制生成的。
  • 用户目录定义了一个用户资源库(基本上都是基于 LDAP 的)。
  • 策略定义了规则、领域、用户目录和答复的组合。

下图描绘了 Policy Server 上为 webagent 配置的组件之间的关系:


图 3. Policy Server 上为 webagent 配置的组件之间的关系
Policy Server 上为 webagent 配置的组件之间的关系

对于这个例子,我们使用 CN=Albert Einstein/OU=Physicists/O=Scientists 格式的 Domino 用户名称,以及 uid=emc2,ou=physicists,o=scientists 格式的 LDAP 专有名称(distinguished name,DN)。





回页首


Domino 专用的 webagent 配置


SiteMinder webagent for Domino 具有一些特殊的参数,它们给 Domino 服务器上的 webagent 的工作带来了灵活性。欲了解详细的参数列表,请参考 SiteMinder webagent 指南。本文要讨论的关键参数如下:

  • SkipDominoAuth 在设置为 Yes 时忽略身份验证。为了使 webagent 能在 Domino 中正常工作,应该将这个参数设置为 No。
  • DominoSuperUser 识别一个能够访问所有资源的用户名称。如果将 SkipDominoAuth 设置为 No,这个参数就很少使用(虽然设置它是一个好习惯)。这个参数的值是加密的。
  • DominoDefaultUser 识别这样一个用户名称,该名称在无法进行 SiteMinder 身份验证或无法获得该会话的一个有效用户身份时充当默认 Domino 用户。这个参数的值也是加密的。 请将这个值设置为 Anonymous 或 Nobody。
  • DominoUseHeaderForLogin 是 SiteMinder 头部的值,用于识别 Domino 环境中的用户。这是一个非常强有力的参数,它允许您基于各种因素动态地改变用户身份。
  • DominoLookupHeaderForLogin 被设置为 Yes 或 No。当设置为 Yes 时,webagent 将对底层 Domino Dirctory 执行本地名称查找调用,以便基于 DominoUseHeaderForLogin 中的值获得一个 Domino 用户名称。




回页首


向 Domino 环境引入 SiteMinder 的方案


向现有 Domino 环境引入 SSO 的核心问题在于这样一个事实,即所有 Domino 应用程序 ACL 和身份验证都基于 Domino Directory,而 SSO 引擎却可能在利用某个 LDAP 目录。这种情形可以基于设置引入一个不同的用户身份。因此在向 Domino 环境引入 SiteMinder 时,理解可能的选项就变得很关键了。

我们需要在 Domino 环境中考虑的三种关键机制如下:

  • 身份验证(验证用户的凭证,确保用户拥有他所声称的身份)。
  • 授权(允许用户执行哪些操作)。
  • 感知(经过身份验证的用户的在线存在状态)。

正如前一节所讨论的,身份验证是由给定 Domino 服务器上的 webagent 来处理的,授权是由每个应用程序的 Domino ACL 来执行的。 感知是由 Instant Messaging and Web Conferencing 来处理的。授权和感知都依赖成功通过身份验证过程的给定的用户身份。因此,对于任何给定的 Domino、Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 服务器,如果它们参与了 SSO 或需要基于 Domino 的授权和即时消息或基于 Web 会议的用户感知,那么给定用户的身份在这些服务器上都应该是相同的。

如何向 Domino 环境引入 SiteMinder 取决于以下问题的答案:

  • 是否存在一个现有的 Domino 基础设施?
  • 您是否想要将 Domino LDAP 用于 SiteMinder 基础设施?
  • 是否存在 SiteMinder 所使用的现有 LDAP 目录?
  • 您是否希望应用程序使用 Domino 用户名称?
  • 您是否将在本地 Domino Directory 中查找名称?
  • 您是否能够向 LDAP 目录添加属性?
  • 您是否能够修改 Domino Directory?

下面几节将提供相应的指导方针,分别针对这些问题的不同答案的组合所定义的各种方案。此外,您还要知道两种类型的身份和目录模式:单身份/单目录,以及多身份/多目录。单身份和单目录模式支持将单个 LDAP 目录(基于 Domino 或不是基于 Domino)同时用于 Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 以及 SiteMinder 环境的概念。身份验证将产生一个跨越 SiteMinder 和 Lotus Team Workplace 以及 Lotus Instant Messaging and Web Conferencing 的标准 DN,授权列表和感知就基于这个用户身份:


图 4. 单身份和单目录模式
单身份和单目录模式

多身份和多目录模式支持这样的概念,即将 Domino Directory 用于 Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing,而将一个不同的 LDAP 目录(基于 Domino 或不是基于 Domino)用于 SiteMinder 环境。身份验证将在非 Lotus 平台中产生一个 LDAP DN,而在 Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 中产生一个 Domino DN。授权列表和感知基于用户身份的 Domino DN,因而也就基于 Domino Directory:


图 5. 多身份和多目录模式
多身份和多目录模式

方案 1


这个方案适用于以下情况:

  • 存在一个现有的 Domino 基础设施。
  • 您想要将 Domino LDAP 用于 SiteMinder 基础设施。

由于 Domino LDAP 受 Siteminder 支持,您可以使用它作为 SiteMinder SSO 环境的用户目录。由于 Domino 群组默认情况下不具有层次,我们建议您重命名或重新创建具有层次的群组。这样将会给 Policy Server 中的群组提供一个基 DN。

如果 Domino Directory 与已部署的目标 Web 服务器(Domino、Lotus Team Workplace,以及 Lotus Instant Messaging and Web Conferencing)属于不同的 Domino 域,那么您需要在这些 Domino 服务器上设置 Directory Assistance 才能成功地进行名称解析。

SiteMinder webagent 验证过的用户名将使用 Domino 格式。不需要额外的步骤来进行 webagent 设置。继续配置 Domino 上的 webagent。请参阅前一节中关于单身份和单目录的描述以获得更多信息。

方案 2


在本方案中:

  • 或者存在一个现有的 Domino 基础设施,但是没有用于 Siteminder 基础设施的 Domino LDAP;或者没有现有的 Domino 基础设施。
  • 不存在 SiteMinder 所使用的现有 LDAP 目录。

由于该环境中没有 LDAP 目录,因此要建立一个同时受 SiteMinder 以及 Domino、Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 支持的 LDAP 目录。使用关系数据库需要进一步定制该环境,因为 Domino、Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 不支持将关系数据库用于用户注册表。请参考前一节中关于多身份和多目录的描述以获得更多信息。

方案 3


对于方案 3:

  • 或者存在一个现有的 Domino 基础设施,但是没有用于 Siteminder 基础设施的 Domino LDAP;或者没有现有的 Domino 基础设施。
  • 存在 SiteMinder 所使用的一个现有 LDAP 目录。
  • 您不希望应用程序使用 Domino 用户名称。

您已选择不使用 Domino 用户名称格式,因此必须注意,如果不修改具有该 LDAP DN 的 Person 文档和邮件文件 ACL,就不能在 SSO 环境中访问任何 Domino 邮件文件。

只要映射到相同的 LDAP 目录,Domino、Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 就能够继续正常工作,因为它们使用底层的 LDAP DN 内在地识别用户。也请参阅前一节中关于单身份和单目录的描述。

方案 4


方案 4 适用于以下情况属实时:

  • 或者存在一个现有的 Domino 基础设施,但是没有用于 Siteminder 基础设施的 Domino LDAP;或者没有现有的 Domino 基础设施。
  • 存在 SiteMinder 所使用的一个现有 LDAP 目录。
  • 您希望应用程序使用 Domino 用户名称。
  • 将在本地 Domino Directory 中查找名称。

由于已作出了允许查找本地 Domino Directory 的选择,因此结果用户身份将具有 Domino 用户名称格式。这通常是在目标 Web 服务器(在 4.x 或 5.x 版的 SiteMinder 中)或 Policy Server(在 5.x 版的 SiteMinder 中)上通过一个特殊的 webagent 配置参数来实现的。这个参数名为 DominoLookupHeaderForLogin,并且需要启用它,如下所示:

DominoLookupHeaderForLogin="Yes"

这个参数确保该 webagent 对底层 Domino Directory 执行名称查找调用,同时提供 DominoUseHeaderForLogin 中所指定的值作为键。如果 LDAP 目录和 Domino Directory 都包含该用户的 EmployeeID,那么就可以通过完成以下步骤,使用 EmployeeID 来作为执行用户查找的键。

  1. 如果该用户使用他的雇员 ID 来登录 Siteminder,就不需要设置任何答复。否则,请(在 Policy Server 上)为 Domino 相关的领域配置一个答复。例如,将该答复设置为 LDAP 属性 EmployeeID。
  2. (可选)将新创建的答复与为 Domino webagent 定义的策略关联起来。
  3. 在目标 Domino 服务器上,向 webagent 配置文件(webagent.conf)添加以下参数:如果该答复是 EmployeeID: DominoUseHeaderForLogin="HTTP_EMPLOYEEID" ; 如果用户使用他的 EmployeeID 来登录 SiteMinder: DominoUseHeaderForLogin="HTTP_SMUSER"
  4. 在目标 Domino 服务器上,向 webagent 配置文件(webagent.conf)添加以下参数: DominoLookupHeaderForLogin="YES"
  5. 要确保 EmployeeID 的值出现在该用户在 Domino Directory 中的 Person 文档中。

由于该身份是基于 Domino 的,这意味着 Domino、Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 应该使用 Domino Directory 作为它们的用户注册表来进行用户查找,从而创建 ACL 或感知。请参阅前一小节关于身份/目录模式的描述。

方案 5


在本方案中:

  • 或者存在一个现有的 Domino 基础设施,但是没有用于 Siteminder 基础设施的 Domino LDAP;或者没有现有的 Domino 基础设施。
  • 存在 SiteMinder 所使用的一个现有 LDAP 目录。
  • 您希望应用程序使用 Domino 用户名称。
  • 将不在本地 Domino Directory 中查找名称。
  • 您能够向 LDAP 目录添加属性。

由于您决定更改 LDAP 目录,所以您可以扩展 LDAP 模式以包括以下内容:

  • 作为每个人员条目的属性来存储在 LDAP 中的 LDAPCN=Albert Einstein/OU=Physicists/O=Scientists 格式的 Domino 名称,它需要使用 SiteMinder SSO 来访问 Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing。
  • CN=LIM/O=Scientists 格式的 Lotus Instant Messaging and Web Conferencing Home Server 名称。如果 Lotus Instant Messaging and Web Conferencing 服务器在使用 LDAP 目录作为用户注册表,并且您的环境具有多个 Lotus Instant Messaging and Web Conferencing 服务器,那么这是必需的。

当在 LDAP 目录中成功传递该用户条目的 Domino 名称(在这里的例子中,我们称它为 Domino DN)之后,您可以完成以下步骤来执行到 Domino 专用名称的转换,而不是在 webagent 级针对每个目标 Domino 服务器执行到 LDAP DN 的转换。

  1. (在 Policy Server 上)为 Domino 相关的领域配置一个答复。将该答复设置为 LDAP 属性;在此例中,它是 Domino DN。
  2. 将新创建的答复与为 Domino webagent 定义的策略中的领域关联起来。
  3. 在目标 Domino 服务器上,向 webagent 配置文件(webagent.conf)添加以下参数: DominoUseHeaderForLogin="HTTP_DOMINODN"

在此方案中,SiteMinder 根据用户的 LDAP DN(例如,uid=emc2,ou=physicists,o=scientists)来对用户进行身份验证。当他们访问任何 Domino 资源(在具有此设置的 Domino 服务器上)时,webagent 将根据他们的 Domino 名称(例如,CN=Albert Einstein/OU=Physicists/O=Scientists)来识别他们。

由于该身份是基于 Domino 的,这意味着 Domino、Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 应该使用 Domino Directory 作为他们的用户注册表来进行用户查找,从而创建 ACL 或感知。

方案 6


最后,方案 6 适用于:

  • 或者存在一个现有的 Domino 基础设施,但是没有用于 Siteminder 基础设施的 Domino LDAP;或者没有现有的 Domino 基础设施。
  • 存在 SiteMinder 所使用的一个现有 LDAP 目录。
  • 您希望应用程序使用 Domino 用户名称。
  • 将不在本地 Domino Directory 中查找名称。
  • 您不能向 LDAP 目录添加属性。
  • 您能够修改 Domino Directory。

由于您希望修改 Domino Directory 以帮助进行名称解析,因此可以修改给定用户的 Person 文档,以添加 Domino 格式的 LDAP DN。用户 DN uid=emc2,ou=physicists,o=scientists 将输入为 uid=emc2/ou=physicists/o=scientists。这个条目是对 Person 文档的用户名称(FullName 字段)中的现有条目的补充。这样将确保:尽管 webagent 将已经过身份验证的用户设置为该用户的 LDAP DN,Domino 仍然会在 Domino Directory 中解析该用户的 Person 文档的 FullName 字段中的 First name 条目。


图 6. Person 文档
Person 文档

该身份是基于 Domino 的。这意味着 Domino、Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 应该使用 Domino Directory 作为它们的用户注册表来进行用户查找,从而创建 ACL 或感知。

如果除了修改 Domino Directory 外,前面列出的本方案中的其他所有标准都适用于您的环境,您或许应该重新考虑自己的选择,改变您的环境以使其符合本文讨论的六种方案之中的某一种方案。





回页首


结束语


SiteMinder 提供了跨企业的 SSO 环境,其中包括 Domino 和其他 Lotus 协作产品。正在考虑对他们的 Domino 环境启用 Siteminder 的公司需要在实施这项风险投资之前评估他们的选项。在计划这项活动时要考虑的关键因素包括用户目录、用户身份,以及该身份在 SSO 环境中是否会不同。本文展示了在为 Domino、Lotus Team Workplace 和 Lotus Instant Messaging and Web Conferencing 计划 SSO 环境时可考虑的几种潜在路径。



参考资料



关于作者

Raj Balasubramanian 是 IBM Software Services for Lotus(ISSL)部门的咨询 IT 架构师。他现在从事客户履约工作,为客户交付应用程序和基础设施相关的项目。他兴趣广泛,从技术到历史以至物理学的各个范畴都有所涉猎。在充裕的空余时间里,他很乐于跟儿子们谈论机器人。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款