UML软件工程组织

 

 

使用LDAP/SSL进行RequisitePro用户验证及管理
 
2008-05-14 作者:牛 晓飞 来源:IBM
 
本文内容包括:
运行在企业环境中的IBM Rational RequisitePro,通常都会管理很多项目。每个项目下,都可能包含大量帐户,比如管理员、一般用户、来宾帐户等。在常规的用户管理模式下,每个项目的每个用户都是独立的实体,需要独立的创建、设置密码,以及进行权限控制等。这样在多个项目并行开发、维护的情况下,这种分散、重复的帐户管理既成了一项耗时的工作,又容易出错,从而留下安全隐患。而RequisitePro支持使用LDAP方式验证用户,以及更进一步支持SSL,大大减少了用户管理维护的工作量,提高了用户管理工作的效率,增强了项目数据及用户信息的安全性。

1 简介

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项目、密钥文件也可以同时放在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中的详细配置请参考在线文档。

2 LDAP用户验证过程概述

以LDAP方式验证用户,首先要配置项目为允许LDAP方式验证,然后再配置用户的验证方式。当一个项目被配置为使用LDAP验证,它既支持LDAP验证方式的用户,也支持以RequisitePro验证方式的用户。这种允许混合验证并存的方式适用于更多复杂的应用环境。

对于配置为使用LDAP验证的项目,RequisitePro执行如下用户验证过程:

  1. 在RequisitePro项目的登陆窗口上,LDAP用户输入用户名和密码。
    这个用户名可以可以是项目中存在的用户的真实用户名,也可能是真实用户的一个标识符,或电子邮件地址。管理员在对项目配置LDAP验证时指定这个唯一标识。
  2. RequisitePro根据管理员配置项目时所提供的参数,建立到LDAP目录的连接。
  3. RequisitePro搜索LDAP目录,来找到和用户输入的用户名相匹配的一条用户记录。然后,根据这条用户记录来验证用户输入的密码。
  4. RequisitePro搜索项目数据库,来找到和LDAP目录上用户记录相匹配的用户记录。
    对项目配置LDAP的时候,管理员指定RequisitePro数据库中用户记录的某个字段和LDAP用户记录的某个属性作为映射对应。RequisitePro就是根据这个映射来查找RequisitePro数据库中匹配的用户记录。
  5. 如果RequisitePro找到了一个匹配的用户记录,它就打开项目,并根据指派给用户的安全特权赋予用户相应的对RequisitePro构件的访问权限。

3 收集LDAP配置信息

在配置LDAP验证之前需要收集一些配置信息,包括LDAP目录服务器主机名或IP,LDAP服务端口,用户DN(Distinguished Name),开始搜索的根DN(Base DN),RequisitePro项目管理员帐户和密码,要指定LDAP验证的用户名,要映射的RequisitePro用户字段和LDAP用户的属性等。这些信息从LDAP管理员和RequisitePro管理员处得到。

4 配置LDAP验证

对项目配置LDAP大部分工作依靠命令行方式进行,总体分为3个步骤,后两步需要RequisitePro项目安全管理员权限:

  1. 创建LDAP配置文件;
  2. 通过引用这个配置件使项目允许LDAP方式验证;
  3. 指派特定的项目用户以LDAP方式验证。

4.1 创建LDAP配置文件

LDAP配置文件是一个纯文本文件,扩展名为.ini。它包含了验证LDAP用户所必需的信息,如LDAP服务器连接信息,LDAP目录搜索条件,LDAP/RequisitePro用户映射信息等。一个配置文件并不局限于一个特定的项目,可以由多个项目使用。应当使用适当的操作系统安全权限来限制其他用户对此文件的访问。

配置文件的创建是由rpsetup命令行工具及其子命令来完成的。Rpsetup.exe位于RequisitePro\bin安装目录下。关于rpsetup工具及其子命令的具体语法及选项,请参考RequisitePro Installation and Upgrade Guide。

创建过程如下:

1. 使用setldapinit子命令指定一个配置文件,并提供连接到LDAP目录的参数。如果指定的文件不存在,就会创建一个文件;如果存在,则会覆盖此同名文件。可以使用getldapinit来查看所做的设置。示例:

rpsetup setldapinit "\\demoserver\ldap\ldap_cfg.ini" "-h ldap_server.some_corp.com
 -p 389"

上面的例子在一个文件服务器\\demoserver\ldap\下创建了ldap_cfg.ini文件,以ldap_server.some_corp.com为LDAP服务器,访问端口为389。

2. 使用setldapsearch子命令设置LDAP搜索字符串,据此在LDAP目录中查找匹配的用户记录。示例:

rpsetup setldapsearch "\\demoserver\ldap\ldap_cfg.ini " 
    "-b ou=some_ou,o=some_corp.com \"mail=%login%@some_corp.com\""

注意mail区段的前后端使用“\””来插入引号“””。可以使用getldapsearch来查看所做的设置。

3. 使用setldapmap子命令指定RequisitePro属性和LDAP的属性映射,从而把一个LDAP用户映射到一个RequisitePro用户。示例:

rpsetup setrpldapmap "\\demoserver\ldap\ldap_cfg.ini" RP_EMAILADDRESS mail

这行命令指定了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配置信息是否正确。示例:

rpsetup verifyconfig "\\demoserver\ldap\ldap_cfg.ini" ldap_user ldap_password

需要注意,这一步之前的3步命令,都只是对ldap_cfg.ini文件进行添加、修改所提供的参数,并没有连接到LDAP服务器进行验证参数设置。直到这一步,rpsetup命令行工具才使用ldap_cfg.ini中提供的参数连接到LDAP服务器,确认配置信息没有错误。如果出现错误,请根据错误提示重新运行前3步中相应的命令行进行修改。

4.2 允许项目使用LDAP验证

使用setldapconfig子命令给RequisitePro项目指定一个LDAP配置文件,从而允许该项目进行LDAP验证。进行此操作需要项目的安全管理权限。可以使用getldapconfig子命令来查看对项目所做的配置。示例:

rpsetup setldapconfig "\\demoserver\Projects\Project 1\project 1.rqs" 
      admin admin_password "\\demoserver\ldap\ldap_cfg.ini "

项目和一个LDAP配置文件关联后,项目用户才可以被指定为使用LDAP验证。从下图对比也可以看出,在把项目和LDAP配置文件关联之前,用户的LDAP验证方式是被禁止的:

图 3. 项目和一个LDAP配置文件关联后
项目和一个LDAP配置文件关联后

4.3 指派特定用户为LDAP方式验证

RequisitePro支持两种用户验证方式:LDAP验证和RequisitePro验证。管理员可以选择一些用户使用LDAP验证,另外一些使用RequisitePro验证。可以通过两种操作方式来完成:

4.3.1 RequisitePro的添加用户或编辑用户窗口:

  1. 点击File->Project Administration->Security;
  2. 选择用户组和用户,点击Add或者Edit;
  3. 选中LDAP authentication选择框。

如图所示。

图 4. RequisitePro的添加用户或编辑用户窗口
RequisitePro的添加用户或编辑用户窗口

4.3.2 使用rpsetup及setauthenticationmode子命令

首先需要先在RequisitePro中添加所需要的用户,然后再指派此用户以LDAP方式验证。参考上图一个用户,然后运行命令:

rpsetup setauthenticationmode "\\demoserver\Projects\Project 1\project 1.rqs" 
    admin admin_password user1 LDAP_AUTHENTICATION

可以使用getauthenticationmode子命令来查看用户当前的验证方式。

到这一步,我们完成了LDAP用户验证的配置过程。示例指定RP_ EMAILADDRESS为映射字段的LDAP用户的登陆界面将类似于如下:

图 5. RequisitePro的添加用户或编辑用户窗口
RequisitePro的添加用户或编辑用户窗口

5 配置SSL建立安全连接

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种方式来提供密钥库文件路径信息:

  1. 设置环境变量RATL_SSL_KEYRING;
  2. Rpsetup setldapinit中使用-K参数显式的指定密钥库文件的路径;
  3. 默认路径。缺省为C:\Program Files\Rational\common。这种情况下,密钥库和密码隐藏文件名必须分别是ldapkey.kdb和ldapkey.sth。

此时,RequisitePro对这三种方式识别的优先级也是由上到下依次尝试。

示例:

  1. rpsetup setldapinit "\\demoserver\ldap\ldap_cfg.ini" "-h ldap_server.some_corp.com -p 636 –Z –K ‘\\demoserver\ldap\keys\rpldap.kdb'" 运行此命令使得LDAP验证过程使用SSL连接。
  2. 运行rpsetup setldapinit "\\demoserver\ldap\ldap_cfg.ini" "-h ldap_server.some_corp.com -p 636 –Z",并添加环境变量RATL_SSL_KEYRING,设置该变量的值为密钥库文件的路径,例如\\demoserver\ldap\keys\rpldap.kdb。
  3. rpsetup setldapinit "\\demoserver\ldap\ldap_cfg.ini" "-h ldap_server.some_corp.com -p 636 –Z",并把密钥库文件和密码隐藏文件改名为ldapkey.kdb和ldapkey.sth,一起放到安装路径Rational\common下。

这样,RequisitePro连接到LDAP服务器时,就会建立基于SSL的安全连接。

6 企业环境多项目应用

当存在多个项目同时开发和维护时,可以配置这些项目使用同一个LDAP配置文件,从而连接到同一台LDAP目录服务器。这是通过对每个项目进行配置使用相同的LDAP配置文件达到的。这样,就把对各个项目独立、分散、重复性的用户管理,统一到对该LDAP目录服务器进行单一、集中的管理上来,大大减轻了企业环境中庞大的用户管理工作量。同时采用SSL的安全连接,使得全球化团队能够跨越Internet,而同样保证数据传递的私密和安全。

典型的多客户机多项目应用场景如下图所示:

图 6. 典型的多客户机多项目应用场景
典型的多客户机多项目应用场景

8 总结

本文首先介绍RequisitePro中LDAP(非SSL)方式用户验证的具体配置过程,然后阐述了如何加入对SSL的支持,最后介绍了多个项目情况下使用LDAP/SSL进行用户管理的应用场景。

参考资料

  • 1. RequisitePro Online Help
  • 2. RequisitePro Installation and Upgrade Guide
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号