摘抄笔记:http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1312multipldap/
FileNet P8 是整个内容管理以及流程管理平台的统称,需要使用企业级的目录服务器来满足其认证(Authentication)和授权(Authorization)的需求。FileNet P8 有三大核心组件,分别是 Workplace(也称为 Application Engine(AE))和 WorkplaceXT (WPXT),作为其面向终端用户的应用前端;Content Engine(CE),作为内容管理的核心;以及 Process Engine(PE),作为流程管理的核心。关于认证,AE,WPXT 和 CE 都是部署在应用服务器上,认证是通过调用应用服务器的 JAAS 服务(Java Authentication and Authorization Service)来完成的。而 PE 的认证是通过 CE 来完成,所以有关于认证的 LDAP 配置是在应用服务器上完成。而对于授权来说,三大组件都是自己管理授权,所以并没有用到应用服务器 JAAS 服务的授权模块的功能。而用户和组的信息是通过 CE 直接连接 LDAP 服务器来取回的,所以授权部分的配置部是在 CE 的企业管理器(FileNet Enterprise Manager)里完成,我会在接下来的章节里提供更详细的介绍。
而对于目录服务器来说,我们一般都是指 LDAP(轻量目录访问协议)目录服务器,因为大多数的企业级目录服务器都是使用这种协议来进行通讯的。现在 FileNet P8 最新版本是 P8 5.1,支持大多数市面上比较流行的 LDAP 目录服务器,包括 Microsoft Windows Active Directory (AD),IBM Tivoli Directory Server (TDS),Novell eDirectory,Sun Java Directory Server,Oracle Internet Directory,CA Directory。
一般来说,一个企业很可能拥有多种或者是多台 LDAP 服务器,原因可能是多方面的,包括但不限于:
与其花费大量的时间和精力迁移和合并多种或者多台 LDAP 服务器,更好的方法是配置一个多 LDAP 的环境,这就是这片文章的意义所在。
在下一章节中,我将会介绍一个同时拥有 AD 和 TDS 两种目录服务器的 FileNet P8 的实例。虽然文章是围绕这两种特定的 LDAP 产品展开,但是对于配置其他的目录服务器产品也是有指导意义的。涉及的主要概念和配置过程其实大同小异,当然对相关 LDAP 产品的熟悉也是必要的。作为最佳实践的一部分,建议读者跟着本文介绍的系统配置实践一遍,待熟悉整个过程及相关概念之后,再进而选择所需要使用的 LDAP 产品,实现最终需求的多 LDAP FileNet P8 环境。
以下假设一个使用 AD 作为目录服务器的 P8 5.1.0 的环境已经创建完成。在此基础上我会简要的介绍一下创建 AD 的过程,重点会放在 TDS 的创建以及后续联合到 P8 环境的配置过程上。
该实例使用的组件如下:
可以通过登录 Passport Advantage 网站来下载以上 IBM 相关的组件,同时也可以参考以下的技术文档来了解这些组件的安装包代码:
http://www-01.ibm.com/support/docview.wss?uid=swg24029638
相对于创建 TDS 目录服务器来说,创建 AD 服务器是比较简单的,这里就简要的介绍一下。
首先登陆 Windows 2008 Server,选择 Start|Administrative Tools|Server Manager|Roles,点击添加角色来启动引导程序添加角色 Active Directory Domain Services。在启动引导程序的时候,需要事先完成以下操作:
1. 管理员用户有强壮的密码设置
2. 服务器拥有一个静态的 IP
3. Windows 服务器升级了最新的安全补丁
注:该角色会要求安装组件 .NET Framework 3.5.1 。
角色添加成功后,可以看到角色条目中多出了一项 Active Directory Domain Services,如图 1 所示。
接下来,选择刚刚创建的角色 Active Directory Domain Services,在界面的右手边,启动该角色的安装引导程序。按着引导程序的提示完成域的创建,完成安装。最终该服务器变成预控服务器(Domain Controller)。需要提醒的一点是,AD 不能和 TDS 安装在同一个物理服务器上,其中的一个原因是这会产生端口冲突,因为它们都使用端口 389。
安装 TDS 6.3
TDS 目录服务器的正常运行需要 DB2 数据库和 Websphere 应用服务器的支持。TDS 使用 DB2 来存储目录信息,而使用 Websphere 来部署其网络管理工具(Tivoli Directory Server Web Administration Tool)。所以在安装 TDS 的时候,安装程序要首先检查是否系统里已经安装了 DB2 和 Websphere。如果没有安装的话,安装程序会安装自带的 DB2 和 Websphere(需要下载完整的安装包)。而笔者实际使用的是 TDS63 的基本安装包,这个包是不包括 DB2 和 Websphere 的安装包的。所以需要事先安装 DB2 数据库和 Websphere 应用服务器。在 DB2 缺失的情况下,安装程序将不会安装 TDS 服务器端组件(如图 2)。而当检测不到 Websphere 的情况下,安装程序将提示需要在安装完成之后,手动的把网络管理工具部署到应用服务器上去(如图 3)。鉴于手动部署比较麻烦,也较可能产生问题,还是建议在启动 TDS 安装程序前,预先安装 Websphere。
除了以上叙述的需要注意的两点之外,事实上,TDS 的安装还是比较简单的,只要选择默认配置就行,这里就不一一赘述了。安装成功之后,应该看到以下提示:
安装完成之后,安装程序会自动启动 TDS 实例管理工具(Instance Administration Tool),如图 5。要创建 TDS 目录服务器,首先我们要先创建一个目录服务器实例。在下面一个小节中,我们将会讨论这些内容。
创建TDS实例
在实例管理工具界面的右半部分,点击创建一个目录服务器的实例 (Create an instance),选择创建一个全新的实例。
下一步,我们需要创建目录服务器实例的系统用户。而这个用户必须是一个已经存在的系统用户。如果没有事先创建的话,引导程序也允许你直接创建这个用户。需要注意的一点是,建议把用户的密码策略改成永不过期(never expired),这样一方面能减轻管理员的日常维护工作量,另一方面也能避免因为密码过期而产生的问题。如果是使用引导程序创建的系统用户,建议在事后使用操作系统工具进行相应的修改。
接下来是配置 DB2 的实例,这里要注意两点:
如果一个物理服务器安装了多个网络适配器(所以多个 IP 地址),需要选定 TDS 要绑定的 IP 地址,如图 10 所示。下一步就是设置端口号(如图 11),这里如非必要,建议保持默认的设置。
基本配置完成之后,可以选择是否要继续配置 TDS 的管理员用户名,密码和配置数据库。这里笔者选择是,进行相关的后续配置。
默认情况下,TDS 的实例管理用户名是 cn=root ,在这个实例中,笔者沿用了该设置。
在配置数据库时保持默认设置就行。
下一步中,需要配置 TDS 连接 DB2 时的登陆用户以及要创建的 TDS 数据库(如图 15)。这里笔者使用了 DB2 的默认管理用户。对于这个登陆用户,需要注意三点:
当 TDS 实例创建成功之后,会看到如图 17,18 所示的界面。
配置网络管理工具
在这一节中,我们要配置网络管理工具来管理我们的 TDS 实例。在启动之前,要保证 TDS 所对应的 Websphere 是运行的。在启动时,在网络浏览器中输入以下链接:
http://localhost:12100/IDSWebApp/
在最初的登陆窗口出现之后,看起来像是要求输入上节我们设置的 TDS 的实例管理员用户名和密码,来登陆网络管理工具。如果你真这么做的话,唯一的结果就是遭遇登陆失败。事实上,这里需要首先使用控制台管理用户,登陆控制台管理界面 (Console admin)。默认情况下,控制台管理用户是一个内建用户(用户名:superadmin,密码:secret,如图 19)。登陆控制台管理界面的目的在于,虽然我们在前一个小节中已经创建了一个目录服务器的实例 TivAdmin。但是在这个时候,TDS 控制台并不知道有这个实例存在,因而也就无从管理。所以我们下一步就是要通过相关的配置通知控制台,该实例运行在哪个服务器上。具体操作是,在登入控制台后,选择 Console administration | Manage console servers,点击添加键,如图 20。
在添加了 TDS 实例之后,登出控制台管理界面,返回网络管理工具登陆框,你会发现登录窗口有了一些变化(如图 22)。现在就可以使用之前定义的实例管理员用户(cn=root)登录到我们定义的 TDS 实例。
目前为止,我们已经完成了对实例和网路管理工具的配置,接下来我们就要开始真正的创建我们的目录结构。
创建目录
首先我们要创建后缀(Suffix)。TDS 把目录数据分成不同的逻辑分区,每一个分区都有一个唯一的名称,也就是后缀。所以我们在定义目录时,首先要先创建后缀。步骤是
注:在某些情况下,你可能需要重启目录服务器才能见到添加的后缀。重启的话,选择 Server administration | Stop/start/restart server .
在创建了后缀,也就是我们的基节点之后,我们就可以在此基础上创建用户和组。选择 Directory adminstration|Manage entries,首先会看到我们刚刚创建的后缀。
在后缀的基础上,分别创建两个组,一个是 groups,另一个 people。
在组 people 下创建一个用户 alexqiu,选择 person 作为该用户的类。除了 cn,sn 这两个必填属性外,另一个重要的属性就是其密码(userPassword),用户名和密码将作为我们登录 P8 系统的凭证,所以不要让它为空值,如图 27 所示。
在所有的配置完成之后,建议使用第三方的 LDAP 工具来验证刚刚配置完的 TDS 目录服务器,确认是否能用新用户 alexqiu 及密码登录目录服务器。笔者使用的是 LDAP browser,以下是登录成功的提示信息。
在前面的章节我们提到,CE 使用 Websphere 来做验证,也就是验证是否用户是真正存在的,而这个是通过 Websphere 和目录服务的合作来完成的,这个过程中,并不涉及任何的 CE 的代码。所以关于验证的 LDAP 设置完全是在 Websphere 的管理控制台中完成。
在 Websphere 的管理控制台中配置多目录服务器,一个重要的概念就是联合存储库(Federated repositories)。联合存储库的功能使你可以在 Websphere 里同时使用多种资源库,这些资源库可以是基于文件的资源库或者是 LDAP 目录服务器,联合存储库可以把它们组织起来成为一个统一的 realm。关于联合存储库更多的基本概念,请参考文章最后的参考资料,这里就不再赘述。值得一提的是,如果你的 p8 环境起初是配置成独立 LDAP 目录服务器(Standalone),也不用担心,也可以使用下面介绍的方法转变成联合存储库。
在配置多 LDAP 目录服务器的过程中,最常见的问题就是配置完成之后,无法再登陆到 Websphere 管理控制台。这是因为在所有 Websphere 的联合目录服务器中(包括其自带的基于文件的目录),要保证短名字(short name)唯一。比如说在一个目录服务器中有一个用户的 DN 是 cn=test, dc=ldapserver1,dc=com, 另一目录服务存在一个用户的 DN 是 cn=test,dc=ldapserver2,dc=com。这在 Websphere 来看来是不允许的(如果以 cn 为登陆属性的话)。一旦出现这个情况,如果该用户被用于 LDAP 的绑定用户和 Websphere 控制面板的登陆用户,那所有的用户都无法登陆 Websphere。这里提供一个方法,可以在不重装的情况解决这个问题。方法如下:
1. 在 websphere 的 bin 目录下,运行 waadmin -conntype NONE 命令,以下是一个实例:
\IBM\WebSphere\AppServer\profiles\profile\bin\wsadmin -conntype NONE.
2. 进入 wsadmin 提示符后,键入命令 securityoff
3. 键入 exit 退出
4. 重启应用服务器。
5. 进入 Websphere 管理控制台(这时安全设置已经关闭)。修改相关的 LDAP 设置错误,重新激活安全设置。
注:在某些情况下,可能需要重启操作系统才能够重新启动 Websphere 应用服务器。
具体的配置流程如下:
虽然我们也可以选择使用 Websphere 的管理控制台来手动的添加目录服务器,但是作为最佳实践的一部分,还是建议使用 FileNet 自带的配置管理器(Configuration Manager)来操作。该工具操作简单且不易犯错,并且还自带一个测试 LDAP 连接的功能,能够测试 LDAP 的连通性。
首先在 Websphere 联合目录服务器中加入 AD 目录服务器(该操作其实在 P8 环境创建的时候已经完成)。在配置管理器中建立一个 AD 目录服务器条目,并运行。配置如下:
接来下,在 Websphere 联合存储库中加入 TDS 目录服务器。具体做法是在配置管理器中建立一个 TDS 目录服务器条目,并运行,如图 30。
注:在 Tivoli 里,如果用户类没有被设置成 inetOrgPerson(像本例中,笔者使用 person class),需要进行下面的附加操作:
配置完成之后,在 Websphere 的联合存储库配置中,会看到 AD 和 TDS 目录服务都已经被添加。可以通过选择 User and Groups|Manage Users 或者是 User and Groups|Manage Groups 来验证是否目录服务器已经连通并工作正常。
注:使用配置管理器完成添加 LDAP 目录服务器之后,需要重启 Websphere 才能使该配置生效。在重启 Websphere 之前,一定要检查一下是否多 LDAP 目录服务器存在短名字重名的现象,如果是的话,必须及时修改。
到目前为止,虽然我们已经完成了多项配置,但是 CE 仍然不知道 TDS 目录服务器的存在。我们接下来要做的,就是让 CE 知道该如何连接该服务器。并且这部分设置和 CE 的授权有关。实际上,CE 会直接连接目录服务器来完成相关的授权的操作。
具体的配置流程为:
首先登陆企业管理器,选择 Enterprise Manager|Properties|Directory Configuration,点击添加来启动创建目录服务器的引导程序。
引导程序启动之后,先选择目录服务器的种类以及命名该服务器,这里我们选择 IBM Tivoli。
接下来配置目录服务器的主机名及服务用户。
下一步就是配置用户和组的信息。
引导程序的最后一步是对所有之前配置的一览表,建议在点击完成之前再重新确认一遍。配置成功之后,会看到 Tivoli 目录服务器显示在列表当中。
这里还要着重强调的一点是,不管企业管理器中配置了多少个 LDAP 目录服务器,都要保证这些服务器是正常运行的并且和 CE 服务器是连接畅通的。因为在 CE 启动的时候,会尝试连接所有的登记在册的 LDAP 目录服务器。任何一个目录服务器出了问题,CE 都不能正常的运行。一旦发生这种问题,对终端用户意味着:
1. 登陆企业管理器失败,如图 38。
2. 登陆客户端应用程序比如 Workplace 失败,如图 39。
作为最佳实践的一部分,建议使用第三方的 LDAP 浏览器来直接连接目录服务器,从而验证是否目录服务器可以连通并工作正常。