根据许可协议,特此申明:本文最初由 IBM developerWorks 中国网站发表,其网址是 http://www.ibm.com/developerWorks/cn
使用LDAP/SSL进行RequisitePro用户验证及管理 |
级别: 初级 牛 晓飞 (niuxiaof@cn.ibm.com), 软件工程师, IBM中国软件开发实验室 2006 年 10 月 30 日 运行在企业环境中的IBM Rational RequisitePro,通常都会管理很多项目。每个项目下,都可能包含大量帐户,比如管理员、一般用户、来宾帐户等。在常规的用户管理模式下,每个项目的每个用户都是独立的实体,需要独立的创建、设置密码,以及进行权限控制等。这样在多个项目并行开发、维护的情况下,这种分散、重复的帐户管理既成了一项耗时的工作,又容易出错,从而留下安全隐患。而RequisitePro支持使用LDAP方式验证用户,以及更进一步支持SSL,大大减少了用户管理维护的工作量,提高了用户管理工作的效率,增强了项目数据及用户信息的安全性。 RequisitePro从版本6.15开始支持LDAP方式用户验证;在最新发布版本7.0中,又加入了对SSL的支持,确保了RequisitePro和LDAP服务器之间的用户验证数据被安全私密的传递。 现在RequisitePro共支持两种方式验证用户: 1. 使用RequisitePro项目内建的用户数据信息。在这种方式下,用户输入用户名和密码进行登陆。RequisitePro查询项目数据库来验证。 2. 使用网络上的LDAP目录。在这种方式下,用户输入的用户名,是LDAP目录上一条纪录的某个属性值或值的一部分,并同时输入密码进行登陆。RequisitePro查询LDAP目录来验证。 一个典型的应用场景如下图所示: 图 1. 典型的应用场景 当然,RequisitePro项目、密钥文件也可以同时放在RequisitePro客户机上,此时场景如下: 图 2. RequisitePro项目、密钥文件也可以同时放在RequisitePro客户机上 目前RequisitePro支持多种符合LDAP V3的目录服务器,包括IBM Tivoli Directory Server,Microsoft Active Directory Server,Sun Java System Directory Server,Novell eDirectory Server,IBM Lotus Domino LDAP Server等。 另外,LDAP/SSL方式的用户验证在Rational 的变更管理工具ClearQuest中也同样受支持。其验证原理和配置过程跟在RequisitePro中类似。关于ClearQuest中的详细配置请参考在线文档。
以LDAP方式验证用户,首先要配置项目为允许LDAP方式验证,然后再配置用户的验证方式。当一个项目被配置为使用LDAP验证,它既支持LDAP验证方式的用户,也支持以RequisitePro验证方式的用户。这种允许混合验证并存的方式适用于更多复杂的应用环境。 对于配置为使用LDAP验证的项目,RequisitePro执行如下用户验证过程:
在配置LDAP验证之前需要收集一些配置信息,包括LDAP目录服务器主机名或IP,LDAP服务端口,用户DN(Distinguished Name),开始搜索的根DN(Base DN),RequisitePro项目管理员帐户和密码,要指定LDAP验证的用户名,要映射的RequisitePro用户字段和LDAP用户的属性等。这些信息从LDAP管理员和RequisitePro管理员处得到。
对项目配置LDAP大部分工作依靠命令行方式进行,总体分为3个步骤,后两步需要RequisitePro项目安全管理员权限:
LDAP配置文件是一个纯文本文件,扩展名为.ini。它包含了验证LDAP用户所必需的信息,如LDAP服务器连接信息,LDAP目录搜索条件,LDAP/RequisitePro用户映射信息等。一个配置文件并不局限于一个特定的项目,可以由多个项目使用。应当使用适当的操作系统安全权限来限制其他用户对此文件的访问。 配置文件的创建是由rpsetup命令行工具及其子命令来完成的。Rpsetup.exe位于RequisitePro/bin安装目录下。关于rpsetup工具及其子命令的具体语法及选项,请参考RequisitePro Installation and Upgrade Guide。 创建过程如下: 1. 使用setldapinit子命令指定一个配置文件,并提供连接到LDAP目录的参数。如果指定的文件不存在,就会创建一个文件;如果存在,则会覆盖此同名文件。可以使用getldapinit来查看所做的设置。示例:
上面的例子在一个文件服务器//demoserver/ldap/下创建了ldap_cfg.ini文件,以ldap_server.some_corp.com为LDAP服务器,访问端口为389。 2. 使用setldapsearch子命令设置LDAP搜索字符串,据此在LDAP目录中查找匹配的用户记录。示例:
注意mail区段的前后端使用“/””来插入引号“””。可以使用getldapsearch来查看所做的设置。 3. 使用setldapmap子命令指定RequisitePro属性和LDAP的属性映射,从而把一个LDAP用户映射到一个RequisitePro用户。示例:
这行命令指定了RequisitePro的RP_EMAILADDRESS属性和LDAP的mail属性之间建立映射。该映射关系指出了RequisitePro如何确定项目用户和LDAP目录上的用户相匹配。对于示例配置的的情况来说,当程序在项目中找到一个用户,这个用户的邮件地址(RP_EMAILADDRESS)匹配LDAP服务器上用户记录的邮件(mail)属性时,那么程序认为在项目中找到了一个匹配用户。 RequisitePro的用户属性有3种可以用来作为映射:RP_USERNAME,RP_EMAILADDRESS,RP_FULLNAME。可以使用rpsetup setrpldap来列出所支持的这几种属性。使用getrpldapmap子命令来查看所做的设置。 4. 使用verifyconfig子命令检查LDAP配置信息是否正确。示例:
需要注意,这一步之前的3步命令,都只是对ldap_cfg.ini文件进行添加、修改所提供的参数,并没有连接到LDAP服务器进行验证参数设置。直到这一步,rpsetup命令行工具才使用ldap_cfg.ini中提供的参数连接到LDAP服务器,确认配置信息没有错误。如果出现错误,请根据错误提示重新运行前3步中相应的命令行进行修改。 使用setldapconfig子命令给RequisitePro项目指定一个LDAP配置文件,从而允许该项目进行LDAP验证。进行此操作需要项目的安全管理权限。可以使用getldapconfig子命令来查看对项目所做的配置。示例:
项目和一个LDAP配置文件关联后,项目用户才可以被指定为使用LDAP验证。从下图对比也可以看出,在把项目和LDAP配置文件关联之前,用户的LDAP验证方式是被禁止的: 图 3. 项目和一个LDAP配置文件关联后 RequisitePro支持两种用户验证方式:LDAP验证和RequisitePro验证。管理员可以选择一些用户使用LDAP验证,另外一些使用RequisitePro验证。可以通过两种操作方式来完成: 4.3.1 RequisitePro的添加用户或编辑用户窗口:
如图所示。 图 4. RequisitePro的添加用户或编辑用户窗口 4.3.2 使用rpsetup及setauthenticationmode子命令 首先需要先在RequisitePro中添加所需要的用户,然后再指派此用户以LDAP方式验证。参考上图一个用户,然后运行命令:
可以使用getauthenticationmode子命令来查看用户当前的验证方式。 到这一步,我们完成了LDAP用户验证的配置过程。示例指定RP_ EMAILADDRESS为映射字段的LDAP用户的登陆界面将类似于如下: 图 5. RequisitePro的添加用户或编辑用户窗口
SSL是一种协议,它将客户机和服务器之间传送的数据进行加密,这就保证了数据传递的私密和安全。RequisitePro支持使用SSL对用户LDAP验证过程进行加密,避免了RequisitePro和LDAP目录服务器之间传输的用户名和密码被截获和泄露。 SSL使用数字证书来保证安全通信。必须把这些数字证书存储在一个密钥库文件里。RequisitePro的安装程序自动安装了GSKit(Global Security Kit),可以用来创建密钥库文件,并且创建和导入数字证书。这些管理性的工作通常由LDAP服务器管理员和RequisitePro管理员来完成。他们还需要将密钥库文件分发到客户端。 在创建密钥库文件时,GSKit要求设定一个访问密码。为了避免这个密码暴露给客户端,通常在创建密钥库文件时,同时生成一个密码隐藏文件。密码隐藏文件包含了加密后的密钥库访问密码,并随密钥库文件一同发布。RequisitePro会访问密码隐藏文件中的密码,并用这个密码访问密钥库。这样就不再需要客户端显式的提供明文密码。所以客户端得到的文件一般包括密钥库文件,扩展名kdb,以及相应的密码隐藏文件,扩展名sth。 这里,配置SSL要首先在Rpsetup setldapinit中使用-Z开关选项,再为RequisitePro指出密钥库文件的路径。-Z选项指示要使用SSL连接到LDAP服务器。有3种方式来提供密钥库文件路径信息:
此时,RequisitePro对这三种方式识别的优先级也是由上到下依次尝试。 示例:
这样,RequisitePro连接到LDAP服务器时,就会建立基于SSL的安全连接。
当存在多个项目同时开发和维护时,可以配置这些项目使用同一个LDAP配置文件,从而连接到同一台LDAP目录服务器。这是通过对每个项目进行配置使用相同的LDAP配置文件达到的。这样,就把对各个项目独立、分散、重复性的用户管理,统一到对该LDAP目录服务器进行单一、集中的管理上来,大大减轻了企业环境中庞大的用户管理工作量。同时采用SSL的安全连接,使得全球化团队能够跨越Internet,而同样保证数据传递的私密和安全。 典型的多客户机多项目应用场景如下图所示: 图 6. 典型的多客户机多项目应用场景
本文首先介绍RequisitePro中LDAP(非SSL)方式用户验证的具体配置过程,然后阐述了如何加入对SSL的支持,最后介绍了多个项目情况下使用LDAP/SSL进行用户管理的应用场景。
|