技术开发 频道

如何定制WebSphere Portal的登陆参数


定制Portal登陆参数

    大多数情况下,启用IBM WebSphere® Portal的安全性是通过如下两个命令实现的:

1. enable-security-ldap,此命令是non-realm的方式,不支持多个LDAP服务器
2. enable-security-wmmur-ldap,此命令是支持multi-realm的方式,支持多LDAP服务器。 

    针对以上两种启用IBM WebSphere® Portal的安全性的方式,在定制Portal登陆参数时,存在不同的配置方式,下面将分别描述。 

    利用以上命令配置Portal 安全性时候,系统login的属性是基于WebSphere/PortalServer/Config/wpconfig.properties文件中的“LdapUserPrefix”来定义的。 

    通常情况,我们可能遇到这样的问题:客户在实施了LDAP集中的项目,故而各分公司的用户数据都会定时同步至总部的LDAP目录服务器中进行统一管理,这样造成总部的LDAP目录服务器中出现相同的帐号(同名问题),例如:uid=zhang3,cn=users,o=china,dc=ibm,dc=com和uid=zhang3,cn=users,o=Taiwan,dc=ibm,dc=com,所以uid=zhang3这个属性在总部的LDAP目录服务器中不是全局唯一的,而门户服务器的登陆默认是使用uid这个属性的,我们也都知道,Portal的登陆属性,在整个LDAP服务器中是必须惟一的,这样zhang3帐号也就无法登陆Portal。为了解决这个问题,我们必须通过定制Portal Login的参数,将Login参数变为员工号+密码或者邮件地址+密码等方式,来解决uid重名问题。当然,为了实现这个改变,下列的前提条件是我们必须满足的:

• 首先我们还是推荐生产环境中使用的Portal Login属性在LDAP中应该是惟一的,至少在Portal所使用的那部分LDAP树中是惟一的,否则,会出现不可预知的结果。

• 这个Login属性应该是一个对所有用户都合适的属性,例如邮件地址,员工号等。

• 用于WebSphere global security (LdapBINDId) 和 WebSphere Member Manager (WMM) configuration (LDAPAdminUId)的 BIND user ID(s)必须能有权限访问门户系统中的LDAP所有用户的各个属性。 

    在我们开始介绍整个配置过程前,我们需要先了解一下Portal Login中所涉及到最重要的几个属性:Distinguish login attribute 和 the so-called Relative Distinguished Name (RDN)。 

    在WMM 配置文件中,"rdnAttrTypes"定义了user DN的第一部分,例如:如果用户的Full DN为"cn=John Smith, cn=Users, ou=itDept,o=Acme," 那么 WMM定义的"rdnAttrTypes" 就是 "cn."这个Login的属性通常是一个相对简单的在LDAP中的属性,通常情况下,RDN和Login 属性是相同的,但是我们也可以配置成不同。 我们推荐在Portal系统安装,配置安全性的过程中,都利用系统默认的配置,RDN和Distinguish login attribute 属性是相同的。等安装、配置完成后再单独定制Distinguish login attribute 属性。 

    下面我们将具体介绍定制Distinguish login 属性的具体过程。 

    首先:先介绍使用了enable-security-ldap 命令配置了Portal安全性后,如何定制Distinguish login 属性。 

    我们假设用户 login 属性被设置成“cn”,并且这个用户的 full DNs是"cn=John Smith,cn=users,ou=people,o=acme"。我们希望将用户的login属性变成“acmeid”,这个属性是LDAP服务器中辨别用户惟一性的属性。具体步骤如下:

1. 根据我们在上面描述的Portal的登陆过程,首先我们需要用户能基于Login属性登陆到WebSphere Application Server,这样我们需要在WebSphere Application Server管理控制台中更改WebSphere Application Server安全性的配置参数“userFilter”,将参数从
[<tt>(&(cn=%v)(objectclass=inetOrgPerson)))</tt>]
改成
[<tt>(&(acmeid=%v)(objectclass=inetOrgPerson)))</tt>]

并且 userIdMap 参数也需要从
[<tt>*:cn</tt>]
更改成
[<tt>*:acmeid</tt>]

2. 下一步我们需要更改其它安全相关的属性文件:

(a) userSecurityNameAttribute 在 wmm.xml 文件中,"cn" 应该改成 "acmeid"

(b) "acmeid" 属性的描述文件应该被加到 wmmAttributes.xml, 例如:

<attribute wmmAttributeName="acmeid"
applicableMemberTypes="Person"
requiredMemberTypes="Person"
dataType="String"
valueLength="254"
multiValued="false"/>

(c) 在wmmLDAPServerAttributes.xml 文件中,"acmeid" 属性还需要完成映射,例如:

<attributeMap wmmAttributeName="acmeid"
pluginAttributeName="acmeid"
applicableMemberTypes="Person"
requiredMemberTypes="Person"
dataType="String"
valueLength="256"
multiValued="false"/>

3. 最后,重新启动Portal 服务器,就可用将登陆方式改成 acmeid+密码登陆方式了。

接着: 

    我们介绍使用了enable-security-wmmur-ldap 命令配置了Portal安全性后,如何定制Distinguish login 属性。 

    因为使用enable-security-wmmur-ldap,此命令是支持multi-realm的方式,支持多LDAP服务器,此命令将定制Portal的WMMUR(即:扩充了Portal的WMM数据库,增加了更多的属性),这样,上面我们提到的userFilter、userIDMap这样的属性将不再使用,我们仅仅需要更改wmmUserSecurityNameAttr属性,将“cn”更改成“acmeid”,此属性需要在WebSphere Application Server管理控制台中的安全配置中自行添加,例如:在管理控制台中,进入如下导航连接 Security > User Registries > Custom > Custom Properties,创建新的属性 wmmUserSecurityNameAttr,Value=acmeid。

0
相关文章