1. 用户需求与面临的问题
当前用户已有MS Active Directory Server(简称:AD)作为统一用户管理平台。AD对多个应用的用户验证和用户的基本信息进行维护,其中包括对用户的新增、重名、删除、信息修改与用户组的维护。
IBM Lotus Domino 平台是业界流行的办公自动化(简称:OA),为企业快速建立其符合企业要求和管理思路的办公自动化软件系统。在Domino 平台也内含符合国际标准的用户目录系统,提供企业级用户目录与认证服务。
AD是已存在的统一用户目录系统,Domino是非常先进应用最广的OA开发平台,如何使两者有一个好的结合和集成?如何使用户管理可以得以统一?如何满足OA系统中用户信息、权限管理超出AD管理范围的额外需求?
2. 解决方案
在此我们提出两种解决方案供选择,每种解决方案具有自己的优点和缺点,可以在不同的情况下进行选择使用。
2.1. 方案一
第一种方案我们采用Lotus Domino Active Directory Synchronization(简称:ADSync)统一管理和同步Domino用户目录。
ADSync 允许管理员来保持 Domino Directory 和 Active Directory 用户和组的同步。管理员可以注册、同步属性和密码,而且在 Active Directory 中对用户和组执行重命名和删除操作时,还会在 Domino Directory 中执行同样的操作,反之亦然。其特性包括两个目录之间的容器映射和属性映射,以及注册用户时所使用的策略。
2.1.1. 工作原理与适用范围
ADSync是Lotus Note Administrator的一个组件,提供一个组件与Windows 管理控制台集成,提供一个集成的操作环境在创建AD用户的同时有可选项向Domino目录中注册用户名。在注册用户时,提供用户验证字、用户组织单元、用户密码一并完成用户在Domino重的注册。由于ADSync是MMC(Microsoft Management Console)的一个组件并不是Windows的一个后台服务,所以不通过MMC所有改的用户信息(如:密码,人员信息)不会自动同步到Domino目录中,必须手动促发其同步。
使用 ADSync 时比较棘手的问题之一就是:要全面了解哪一方可执行哪些操作;即哪些操作可由 Active Directory 执行,哪些操作可由 Domino Administrator 客户机执行。但是,如果使用表 1 中的信息,上述内容是比较容易理解的。表中的第一列包含任务,后面两列指明任务是否在其原始平台上进行操作。
|
操作 |
从 Active Directory 平台 |
从 Lotus Domino 平台 |
| 注册用户 | 可以 | 可以 |
| 重命名在 Active Directory 中创建的用户 | 只能重命名 Active Directory 用户 | 只能重命名 Active Directory 用户 |
| 重命名在 Lotus Domino 中创建的用户 | 可以 | 可以 |
| 同步用户数据 | 可以 | 不可以 |
| 删除用户 | 可以 | 可以 |
| 创建组 | 可以 | 不可以 |
| 重命名组 | 可以 | 不可以 |
| 同步组数据 | 使用 Active Directory 中所定义的成员关系来重写 Domino Directory Members 字段 | 不可以 |
| 删除组 | 不可以 | 可以 |
| 批量导入现有用户密码 | 不可以 | 不可以 |
表 1. 从 Active Directory 和 Lotus Domino 发起的 ADSync 操作
快速浏览上表,您会发现可以从任一方创建并删除用户,但是用户的注册将取决于创建用户的位置。在 Active Directory 中可以很轻松地实现用户数据在系统间的同步,而在 Lotus Domino 上却不可以。最后,组创建只是一个 Active Directory 任务。因此在您的环境中使用 ADSync 时需要熟悉该表。
使用 Active Directory Users and Computers 工具的 Synchronize with Domino 按钮可以实现 ADSync 的密码同步。通过按下 Ctrl + Alt + Del 而发起的密码更改不会触发同步。若要同步 Active Directory 和 Notes HTTP 的密码,应在 Active Directory Users and Computers 工具中高亮显示用户,然后单击 Synchronize with Domino。
ADSync 是 MMC 管理单元,旨在简化系统管理员的工作。但是,它没有提供任何编程选项可简化用户或组的创建和/或同步的操作。
2.2. 方案二
第二种方案是我们把AD作为外部的LDAP来使用,Domino使用其作为额外的认证中心完成认证,由Domino自带的用户用户目录完成授权和额外信息的存储。
2.2.1. 工作原理与适用范围
在Domino中可以启用“Directory Assistance”外部目录服务来连接和使用外部LDAP目录来进行外部人员认证和信息查询。“Directory Assistance”是一种服务器可以用来查找在本地主 Domino 目录之外的某个目录中的信息的功能。采用了这种内外部同时认证的方式,当用户没有在Domino认证通过时,会自动到AD中去进行认证。即同一个用户名在AD和Domino中的口令不一样也可以通过认证,但是由于AD和Domino中对用户名的表达方式不同会造成Domino中的ACL和用户名获取不正确。
我们通过下图来说明整体的实现思路。

我们假设在AD中和Domino中都有用户名为test1的用户,此用户在AD中的唯一标识为: CN=test1,CN=users,DC=ibm,Dc=com; 在Domino中的唯一标识为:cn=test1,o=ibm 。
首先用户使用test1与口令password登录Domino系统。如果用户名和口令与Domino目录中的用户名和口令相符,则通过验证返回cn=test1,o=ibm (即:test1/ibm)。如果用户名和口令与Domino目录中的用户名和口令不相符,则Domino会通过Directory Assistance到AD中去进行验证。如果用户名和口令与AD目录中的用户名和口令不相符,则通过验证返回CN=test1,CN=users,DC=ibm,Dc=com。由于CN=test1,CN=users,DC=ibm,Dc=com会和原有在Domino中的用户名不一样导致ACL出错,所以需要通过Directory Assistance 将AD中预存Domino用户的信息(cn=test1,o=ibm)替换掉CN=test1,CN=users,DC=ibm,Dc=com。最终返回符合Domino使用的cn=test1,o=ibm (即:test1/ibm)。此方案的优势在于我们可以不用担心AD与Domino中的用户验证问题,对于Domino应用来说可以灵活的控制Domino中的用户信息和组织结构等等,对AD同步完全可以通过LDAP标准的操作来完成,可控力比较强。但需要AD一个属性放置Domino用户,和一套LDAP同步程序。