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同步程序。
2.2.2. 安装和设置
在配置Domino 服务器之前,我们需要将AD中的用户注册到Domino目录中去,此过程可以使用方案一中的ADSync、Lotus Administrator批量用户注册、或LDAP操作进行。在这里我们使用手工将AD中的CN=test1,CN=users,DC=hongyi,DC=com,DC=cn的用户注册到Domino中,在Domino中其用户为cn=test1,o=hongyi(test1/hongyi)。
把Domino中的用户名添加到AD中,在这个样例中我们使用AD“描述”字段来存放Domino的用户名称。
我们在AD和Domino中都有了我们想要获得的统一用户名,接下来我们就需要让Domino能够自动的帮助我们获得用户名,返回给我们的应用。有以下两步要做:建立Directory Assistance 服务配置;配置Domino 服务器文档,启用Directory Assistance服务。
建立Directory Assistance 服务配置
打开Notes客户端创建Directory Assistance数据库。
1. 点击“文件”->“数据库”->“新建”
2. 输入文件名“da.nsf”,选择服务器,如:“server/hongyi”,选择数据库模板“Directory Assistance (7)”
打开已创建的Directory Assistance数据库,创建配置文档。
1. 从 Domino Administrator 中,选择“文件”“打开服务器”,然后选择已设置为使用“目录服务”数据库的服务器,并单击“确定”。
2. 单击“配置”附签,单击“添加目录服务”。
3. 在“基本”附签中,填写下列域:
域
|
输入
|
网络域类型 |
选择 LDAP。 |
网络域名称 |
选定的网络域名称,如:hongyi.com.cn |
公司名称 |
(可选) |
搜索顺序 |
(可选) |
使此网络域适用于 |
选择下列两个选项或二者之一: • “Notes clients and Internet Authentication/Authorization”可将此 LDAP 目录用于 Notes 邮件寻址、Internet 客户机验证(包括 LDAP 客户机验证)或在数据库授权时查找群组成员。 • 当 LDAP 搜索在所有 Domino 目录中都失败时,“LDAP 客户机”启用运行 LDAP 服务的服务器,以便让 LDAP 客户机查阅此 LDAP 目录。
|
群组授权 |
选择下列选项之一: • “Yes”,可在数据库授权时在此 LDAP 目录中搜索群组成员。 • “No”(缺省),在数据库授权时禁止在该目录中搜索群组成员。 请仅对在“目录服务”数据库中配置的一个目录(Notes 或 LDAP)选择“Yes”。 不必启用“Trusted for Credentials”规则。 如果选择了“Yes”,则在出现的“Nested group expansion”域中选择: • “Yes”(缺省),可搜索嵌套群组(为数据库 ACL 中列出的群组的成员)。 • “No”,仅搜索数据库 ACL 中列出的群组成员,而不搜索嵌套在那些群组中的群组成员。
|
启用 |
选择“Yes”,为此 LDAP 目录启用目录服务。 |
用于 SSO 令牌名称的属性(映射到 LTPA_ UserNm) |
输入目录属性名称,该名称应该在要求 LTPA_UserNm 域时被返回。该值可被用作由 Domino 生成的任意 SSO 令牌中的用户名。 |
4. 单击“命名上下文(规则)”附签,为要为该目录定义的每个规则填写下列域。缺省情况下,当“Trusted for Credentials”设置为“No”时会启用全星号规则。
域
|
输入
|
N.C. # |
描述 LDAP 目录中的用户名的命名上下文(规则)。 |
启用 |
选择下列选项之一: • “Yes”,启用规则 • “No”(缺省),禁用规则
|
Trusted for Credentials |
选择下列选项之一: • “Yes”,服务器可以使用 LDAP 目录中的证书验证目录中的专有名称与此规则对应的 Internet 对客户机。 • “No”(缺省),禁止服务器使用此目录验证专有名称与此规则对应的 Internet 客户机。
|
5. 在“LDAP”附签上,填写下列域:
域 |
输入 |
主机名 |
远程 LDAP 目录服务器的主机名,如 ldap.acme.com。Domino 服务器使用此主机名连接到远程 LDAP 目录服务器,或将 LDAP 客户机指向 LDAP 目录。 |
用于搜索的基本 DN |
搜索条件(如果 LDAP 目录服务器需要)。 |
通道加密 |
选择下列选项之一: • SSL(缺省),Domino 服务器连接到远程 LDAP 目录服务器时将使用 SSL • “无”,禁止使用 SSL。 如果使用远程 LDAP 进行客户机验证或查找群组成员以进行数据库授权,请保留“通道加密”域中的 SSL 选择。 如果选择了 SSL,请在下列相关域中做出选择: • “接受到期的 SSL 验证字” • “SSL 协议版本” • “使用远程服务器的验证字验证服务器名称”
|
端口 |
Domino 服务器用于连接远程 LDAP 目录服务器的端口号。 • 如果在“通道加密”域中选择了“SSL”,则缺省端口为 636。 • 如果在“通道加密”域中选择了“无”,则缺省端口为 389。 如果 LDAP 目录服务器未使用这些缺省端口,请手动输入不同的端口号。
|
超时 |
允许搜索远程 LDAP 目录的最长时间(秒);缺省为 60 秒。 如果远程 LDAP 目录服务器也有超时设置,则较低设置优先。
|
返回的最大项目数 |
LDAP 目录服务器可以为 Domino 服务器所搜索的名称返回的最大项目数。如果 LDAP 目录服务器也有最大值设定,则数值较小的设置优先。如果 LDAP 目录服务器超时,将返回到该时刻为止所找到的名称的数目。缺省为 100。 |
搜索时的别名反参照 |
选择下列选项之一以控制搜索远程 LDAP 目录时的别名非关联化范围: • “Never” • “Only for subordinate entries” • “Only for search base entries” • “Always”(default) 如果 LDAP 目录中未使用别名,选择“Never”可以提高搜索性能。
|
首选邮件格式 |
如果将目录服务设置为允许 Notes 用户向 LDAP 目录中用户发送邮件,则应使用此选项来指定在 Notes 邮件中的目录的地址格式。选择下列选项之一: • “Notes 邮件地址” - 例如,John Doe/Acme@Acme通常,只有在 LDAP 目录为 Domino 目录时才可以使用此选项。 • “Internet 邮件地址”(缺省)- 例如,[email protected]
|
用于 Notes 专有名称的属性 |
如果 Domino 服务器使用远程 LDAP 目录进行客户机验证或数据库授权,可以将用户的 LDAP 目录专有名称映射到相应的 Notes 专有名称。 在这里我们输入AD中存放Domino用户的标示符,如:cn=test1,o=hongyi
|
要使用的搜索过滤器类型 |
选择下列选项之一,以控制搜索目录时使用哪种 LDAP 搜索过滤器(标准 LDAP 适用于大多数情况下): • “Standard LDAP”(default) • “Active Directory” “Custom”
|
6. 单击“保存并关闭”。
配置Domino服务器文档
1. 在Notes中打开Domino配置文档。
2. 在“基本”->“Directory Assistance 数据库名称:”中填入上一步创建的da.nsf。
3. 保存文档。
4. 重启服务器。
到现在已经配置成功与AD的验证配置,此时无论使用AD的密码还是Domino的密码都能够顺利登录Domino (B/S),同时Domino始终能够获得一种用户名格式,满足了对数据库授权的要求。