使用 LDAP 协议将 ClearQuest 用户与 Windows 域用户统一管理
 

2009-09-04 作者:刘强 来源:IBM

 
本文内容包括:
IBM Rational ClearQuest 产品拥有自身的一套用户管理系统。用户可以在 IBM Rational ClearQuest 用户管理工具中,添加 / 修改 / 设置用户的访问权限。通过 LDAP 协议,可以将 ClearQuest 中的用户验证从 ClearQuest 转移到 LDAP 服务器上。本文介绍如何通过配置 ClearQuest 使用 LDAP 实现将 CQ 用户以及 Windows 域用户统一管理。

背景介绍

IBM Rational ClearQuest 产品拥有自身的一套用户管理系统。用户可以在 IBM Rational ClearQuest 用户管理工具中,添加 / 修改 / 设置用户的访问权限。那么在使用 Windows 域管理用户的企业中,部署 IBM Rational ClearQuest 时,就会面临这样一个问题:一个用户需要使用自己的 Windows 域帐号来登录操作系统,再使用 ClearQuest 的帐号来登录使用 ClearQuest。这样需要维护两套用户信息系统,极其容易产生用户信息不匹配的情况。那么是否有可能将两套系统通过一个统一的途径来管理帐号信息呢?答案是可以的。

IBM Rational ClearQuest 从 2003.06.15 版本起支持 LDAP 协议。通过 LDAP 协议,可以将 ClearQuest 中的用户验证从 ClearQuest 转移到 LDAP 服务器上,这样我们可以在 LDAP 服务器上进行用户身份验证管理,在 ClearQuest 的用户管理里面对用户进行 ClearQuest 操作权限的设定,从而将用户的管理统一化。

基于 Windows 动态目录的域服务器,也具有 LDAP 功能。下面我们就将介绍,如何通过配置 ClearQuest 实现将 CQ 用户以及 Windows 域用户统一管理。

LDAP 协议简介

LDAP (轻量级目录访问协议,Lightweight Directory Access Protocol) 是实现提供被称为目录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化,因此它不同于常见的关系型数据库。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的事务管理或回卷策略。而目录服务的更新则一般都非常简单。这种目录可以存储包括个人信息、web 链结、jpeg 图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在 TCP/IP 之上的访问协议 —— LDAP。

LDAP 目录中的信息是是按照树型结构组织,具体信息存储在条目 (entry) 数据结构中。条目相当于关系数据库中表的记录;条目是具有区别名 DN (Distinguished Name)的属性(Attribute),DN 是用来引用条目的,DN 相当于关系数据库表中的关键字(Primary Key)。属性由类型(Type)和一个或多个值(Values)组成,相当于关系数据库中的字段(Field)由字段名和数据类型组成,只是为了方便检索的需要,LDAP 中的 Type 可以有多个 Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP 中条目的组织通常按照地理位置和组织关系进行组织,这样会非常的直观。

图 1. LDAP 信息的树型结构存储
图 1. LDAP 信息的树型结构存储

如图 1 所示,LDAP 的信息是以树型结构存储的,在树根一般定义国家 (c=CN) 或域名 (dc=com),在其下则往往定义一个或多个组织 (organization)(o=CSDL) 或组织单元 (organizational units) (ou=Regular)。一个组织单元可能包含诸如正式雇员、合同工类型雇员等信息。

此外,LDAP 支持对条目能够和必须支持哪些属性进行控制,这是有一个特殊的称为对象类别 (objectClass) 的属性来实现的。该属性的值决定了该条目必须遵循的一些规则,其规定了该条目能够及至少应该包含哪些属性。例如: Person 对象类需要支持 sn(surname) 和 cn(common name) 属性,但也可以包含可选的如邮件 (E-mail),电话号码 (Phone) 等属性。dc:一条记录所属区域;ou:一条记录所属组织;cn/uid:一条记录的名字 /ID。

如何设定 CQ 用户和 Windows 域用户之间设定绑定映射关系

在了解了 LDAP 服务器端如何保存用户信息节点后,如何才能利用 LDAP 服务器实现对 ClearQuest 用户与 Windows 域用户的统一管理呢?我们首先来看看 ClearQuest 是如何保存用户信息的。

图 2. ClearQuest 是如何保存用户信息
图 2. ClearQuest 是如何保存用户信息

从图 2 中可以看出,一个 ClearQuest 用户拥有登录名,全名(名称),电子邮件,电话等若干属性。而一个用户在 Windows 域服务器中也拥有类似的属性,比如全名,电子邮件,电话等属性。

假设在 Windows 域服务器中有某个属性,例如电子邮件,可以用来唯一标示一个用户节点,同时在 ClearQuest 中,如果用户的电子邮件信息可以唯一标识一个用户,并且 ClearQuest 中某用户的电子邮件属性与域帐号中的某用户节点的电子邮件属性相同话,则两者之间可以建立起来一个一一映射关系。这样在 ClearQuest 中输入这个邮件地址和对应的域用户密码时,ClearQuest 会在 Windows 域服务器端进行用户身份验证;当身份验证通过后,该用户取得其在 ClearQuest 中所拥有的权限并登录 ClearQuest。

基于上述分析,我们使用一系列的 ClearQuest 内部命令来完成上述 ClearQuest 用户与 Windows AD 域用户绑定的设置过程:

在安装有 ClearQuest 的 Windows 上打开一个命令行,运行如下命令 ( 注: 由于 Unix/Linux 操作系统上安装好 ClearQuest 后没有 installutil 这个命令,这个设置 ClearQuest LDAP 的步骤都需要在 Windows 上完成 ):

<1> installutil setauthenticationalgorithm <CQ 数据库连接,如 7.0.0> <CQ 管理员帐号,如 admin> <CQ 管理员密码 > CQ_ONLY

此命令正确完成后,返回值为 0。此时 ClearQuest 的用户验证方式为只有 ClearQuest 验证。收回了通过 LDAP 验证用户的途径。

<2> installutil setldapinit <CQ 数据库连接,如 7.0.0> <CQ 管理员帐号,如 admin> <CQ 管理员密码 > "-h <Windows 域服务器域名 > -p < 域服务器 LDAP 服务端口,默认为 389> -D 'cn=< 域用户的全称,此域用户有权限能遍历所有用户节点 >,ou=< 该用户节点的组织单元信息 >,dc=< 域名 >,dc=< 域名 >,dc=< 域名 >' -w < 域用户对应密码 >"

此命令正确完成后,返回值为 0。该命令只是设定了 ClearQuest 在做 LDAP 验证时的一些初始信息,比如验证服务器地址,用什么用户登录来验证。在 cn 处设定的域用户要求具有能遍历所有用户叶节点的权限。切记,此用户信息必须写成 DN 的格式。

<3> installutil setcqldapmap <CQ 数据库连接,如 7.0.0> <CQ 管理员帐号,如 admin> <CQ 管理员密码 > CQ_EMAIL mail

此命令正确完成后,返回值为 0。该命令了设置了在 ClearQuest 中,通过用户的电子邮件属性与 Windows 域服务器中的用户电子邮件属性进行映射。

<4> installutil setldapsearch <CQ 数据库连接,如 7.0.0> <CQ 管理员帐号,如 admin> <CQ 管理员密码 > "-s sub -b ou=< 目标用户节点所在的组织单元信息 >,dc=< 域名 >,dc=< 域名 >,dc=< 域名 > (&(objectCategory=Person)(mail=%login%)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"

此命令正确完成后,返回值为 0。此命令中设定了目标用户节点的搜索路径。此处 !(userAccountControl:1.2.840.113556.1.4.803:=2) 是用来标识在 Windows 动态目录中处于 Active 状态的用户。

<5> installutil setauthenticationalgorithm <CQ 数据库连接,如 7.0.0> <CQ 管理员帐号,如 admin> <CQ 管理员密码 > CQ_FIRST

此命令正确完成后,返回值为 0。此命令从表面上与步骤 <1> 中的命令十分类似,仅仅是将 CQ_ONLY 替换成了 CQ_FIRST。但是这个变动的含义表示将步骤 <1> 中设置只有 ClearQuest 管理用户验证改为使用 ClearQuest 与 LDAP 双重用户验证。

ClearQuest 用户 LDAP 设置的步骤到此已经结束,那么之前的设置是否正确呢 ? 我们需要用下面这个命令来进行一个验证:

<6> installutil validateldap <CQ 数据库连接,如 7.0.0> <CQ 管理员帐号,如 admin> <CQ 管理员密码 > <LDAP_USER> <LDAP_PWD>

在这里,我们把 <LDAP_USER> 替换为我们需要输入的 Windows 域用户的电子邮件信息,<LDAP_PWD> 替换为此 Windows 域用户对应的密码。如果命令的返回值为 0,那么说明我们上面的 LDAP 设定是正确的,否则则有问题,需要我们来做一些调整。

<7> 用户验证无误的情况下,现在我们来把 ClearQuest 中的具体用户设定为通过 LDAP 验证 (ClearQuest 在建立用户帐号时,默认为通过 ClearQuest 验证 ),如图 3 所示

图 3. ClearQuest 验证
图 3. ClearQuest 验证
  1. 进入 ClearQuest 用户管理,选中你需要 LDAP 身份验证的用户,打开其属性页面
  2. 选中 LDAP 已认证的 CHECK BOX
  3. 并且在 LDAP 登录后的文本框中输入 Windows 域用户的电子邮件信息
  4. 点击确认按钮。
    如果没有错误的话,那么我么就可以在 ClearQuest 用户管理中看到这个用户的图标变成了
图 4. 身份验证为 LDAP 验证
图 4. 身份验证为 LDAP 验证

它表示此用户的身份验证为 LDAP 验证。

  1. 点击数据库操作 -> 升级,将刚才所作的变动更新到用户数据库中。

应用实例以及应用技巧

在实际应用中我们发现,可以通过一定的变量参数化,将上述一系列 ClearQuest 命令制成一个批处理文件,供我们使用,这样既方便又快捷。 下面给出一个实际应用的例子供参考:

ECHO off

REM
REM usage: ldap.bat <DBSET Name> <ADMINUSER Name> <ADMIN_PSWD>
REM

set DBSET=%1
set ADMINUSER=%2
set ADMIN_PSWD=%3
set LDAP_SVR=<ldap server address>

REM set CQ_ONLY so LDAP parameters can be adjusted safely
installutil setauthenticationalgorithm %DBSET% %ADMINUSER% %ADMIN_PSWD% CQ_ONLY
installutil setldapinit %DBSET% %ADMINUSER% %ADMIN_PSWD% "-h %LDAP_SVR% 
  -D cn=ldapadmin,cn=Users,dc=cqldapmsft,dc=com -w <password>"
installutil setcqldapmap %DBSET% %ADMINUSER% %ADMIN_PSWD% CQ_EMAIL mail
installutil setldapsearch %DBSET% %ADMINUSER% %ADMIN_PSWD% "
  -s sub -b ou=People,dc=cqldapmsft,dc=com (&(objectCategory=person)
  (mail=%%login%%)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"
installutil setauthenticationalgorithm %DBSET% %ADMINUSER% %ADMIN_PSWD% CQ_FIRST

REM you need to verify the user login with the following cmd:
REM installutil validateldap %DBSET% %ADMINUSER% %ADMIN_PSWD% 
REM  <LDAP_USER> <LDAP_PWD>

我们在将 ClearQuest 用户进行 LDAP 验证设定时,需要注意对 ClearQuest 超级用户的设定,切忌将所有的 ClearQuest 超级用户均用 LDAP 验证。否则一旦 LDAP 服务器不能正常连接的话,无论你是 ClearQuest 超级用户还是普通用户,都将无法登录 ClearQuest。所以如果存在一个 ClearQuest 验证的超级用户,那么可以在 LDAP 服务发生异常时,用此用户登录,将 LDAP 验证用户恢复成 ClearQuest 验证的用户,就可以避免由 LDAP 服务器异常所导致的问题。

如何将一个 LDAP 验证的用户恢复为 ClearQuest 验证的用户?

  1. 打开 ClearQuest 用户管理工具,然后找到需要取消 LDAP 验证的账户,双击打开其属性页面。
  2. 取消 LDAP 已验证这个 CHECK BOX。
  3. 不要为此用户设定密码,直接点 OK。退出用户属性界面。
  4. 再次双击此用户进入其属性页面。
  5. 然后为其设置密码。
  6. 点击 OK,退出该用户属性界面。
  7. 点击数据库操作 -> 升级,将刚才的变动反应到数据库中。

这样就可以将一个 ClearQuest 中 LDAP 验证的用户恢复为 ClearQuest 验证。

ClearQuet 与 Windows Active Directory 之间常见的属性映射关系

在 ClearQuest 与 Windows Active Directory 之间建立属性映射时,不仅我们可以使用 Email 这个属性字段,我们也可以使用例如,全名 (CQ_FULLNAME),电话 (CQ_PHONE) 等属性字段进行验证匹配。只要它们能够符合在 CQ 方以及 Windows Active Directory 中能够唯一标示一个用户的要求即可。以下是这些常见的字段在 ClearQuest 以及 Windows Active Directory 中的属性参数名,仅供参考

ClearQuest Windows Active Directory
CQ_Email mail
CQ_FULLNAME samAccountName
CQ_PHONE telephoneNumber

如果需要更改 ClearQuest 与 LDAP 之间映射字段,比如把 CQ_Email<->mail 需要改成 CQ_FULLNAME<-> samAccountName,只需要重新运行修改好的脚本。它会自动覆盖之前的设置。运行之后,重新运行 installutil validateldap 的命令来验证 LDAP 设定是否正确即可。

结束语

本文简要介绍了 ClearQuest 与 Windows Active Directory 域服务器进行 LDAP 用户验证的配置。希望通过本文,能为使用 ClearQuest 的人员在用户统一管理方面,提供一定的参考。

免责声明

本文发表的话题仅为介绍性内容,并非代表 IBM 的立场、策略和观点。本文档所介绍的信息仅仅限于本文的环境。本文档不提供任何类型的包括显式或隐含的担保,不对任何(但不限于)收入或利润的损失或其它间接的、特殊的、偶然的、必然的损失负责,使用者将自行承担由于使用本文档所造成的各类经济损失和法律责任,本文作者、IBM 以及发表本文的站点不负相关责任。相关技术细节,请咨询 IBM 公司、操作系统服务提供商。

参考资料

学习 获得产品和技术

讨论


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织