您现在可以在 Virtual Member Manager 中将所有兼容 V3 的 LDAP 存储库(包括默认和非默认的存储库)配置为自定义存储库。本教程中介绍的配置方法解决了访问用户、组和组成员关系的问题,其中使用的 LDAP 不受 VMM 默认支持。本教程首先会介绍 LDAP 存储库在 VMM 中的价值,然后解释两种在 VMM 中配置自定义 LDAP 存储库的方式。您可以选择管理控制台方法或 wsadmin 命令行接口 (CLI) 方法。
Virtual Member Manager 是 IBM WebSphere Application Server 的一个组件,您可以使用它一次性地配置 LDAP、本地 OS、DB 和自定义存储库。VMM 包含来自 WebSphere Application Server 注册表、WebSphere Member Manager(来自 IBM WebSphere Portal)的功能和一个安全管理功能子集。
组织通常提供了大量与客户交互的方式,导致客户数据分散在各种不同的存储库中。为了帮助保留、改善和加强与客户的关系,必须在单一客户视图中对这些分散的数据加以利用。通过使用 VMM,可以实现这些客户存储库的单一视图。VMM 使使用多个存储库变得更加简单,因为现在您可以配置它们,而不是开发它们。
Virtual Member Manager 可以帮助将多个单独的用户存储库中的条目映射到单个虚拟存储库中。这个连锁的存储库包含一个所谓的 范围 ,这是一组独立的用户存储库。每个存储库可以是一个完整的外部存储库,或者对于 LDAP,是该存储库中的一个子树。得益于 VMM,应用程序可以共享用户个人资料定义,整合一个客户需要管理的大量特定于应用程序的用户存储库。
Virtual Member Manager 支持使用所有兼容 LDAP V3 的存储库作为其后端存储库。自动支持以下 LDAP V3 存储库:
当这些 LDAP 存储库中的一个存储库被配置为后端存储库时,VMM 会检测它是哪个 LDAP 存储库,并依据所检测到的配置而填充设置。
对于其他兼容 V3 的 LDAP 存储库,尤其在它们拥有一个不受 Virtual Member Manager 支持的服务器类型时,您可以将它们配置为自定义 LDAP 存储库。自定义 LDAP 服务器类型的示例包括 Apache LDAP、Open LDAP 和 Oracle Directory Server。
要创建 LDAP 存储库,可以在 VMM 中选择 Custom LDAP 选项。您可以使用管理控制台(也称为 集成解决方案控制台 )用户界面或 wsadmin 命令行接口 (CLI) 来定义自定义 LDAP 存储库。
回页首
如果您更喜欢使用 GUI 方法,那么可以使用管理控制台在 Virtual Member Manager 中配置 LDAP 存储库。通过使用此方法,可以避免使用 CLI 方法可能发生的任何可能的错误。但是,如果更喜欢使用 CLI 方法,请参阅使用 wsadmin 的命令行方法。
图 1. Federated repositories
点击查看大图
关闭 [x]
图 2. Manage repositories
点击查看大图
关闭 [x]
图 3. 添加一个 LDAP 存储库
点击查看大图
关闭 [x]
custom_ldap
。 图 4. 一个自定义 LDAP 存储库的属性
点击查看大图
关闭 [x]
图 5. 其他管理存储库的属性
点击查看大图
关闭 [x]
Add new entity 选项:只有在 WebSphere Application Server versions 8.0 和更高版本中,管理控制台 GUI 中才有 Add new entity 选项。对于更早的版本,需要使用 wsadmin 命令(将在使用 wsadmin 的命令行方法中的第 4 步中介绍)来添加新条目类型。
因为默认情况下没有为自定义 LDAP 类型定义条目类型,所以需要添加条目类型:
PersonAccount
person
或 user
(您的 LDAP 中的人员或用户的 objectClass) Group
group
或 groupOfNames
(用于您的 LDAP 中的组的 objectClass) 类似地,依据您的需求,可以为您的 LDAP 添加其他任何条目类型,比如 OrgContainer。 图 6 显示了这一步的输出。
图 6. LDAP 条目类型
点击查看大图
关闭 [x]
版本考虑因素:对于 WebSphere Application Server v8.0 和更高版本,使用以下步骤。对于更早的 WebSphere Application Server 版本,请按照使用 wsadmin 的命令行方法中第 6 步的介绍来定义属性映射。完成命令行方法的第 6 步后,继续执行本节中的 GUI 方法的第 10 步。
在 LDAP 中定义的所有属性都需要映射到 VMM 模式中的不同特性时,需要使用这些属性。例如,您可能需要将 VMM 特性 uid 映射到 LDAP 属性 samAccountName
。
:关联的条目类型定义
如果没有指定条目类型,该属性会应用于所有已定义的条目类型。
图 7. LDAP 属性与 VMM 特性的映射
图 8. Additional properties
memberOf
或 uniqueMemberOf
)。单击 OK ,然后保存更改。
图 9. 组成员关系属性定义
点击查看大图
关闭 [x]
在接下来的几步中,定义成员属性。首先定义成员属性,然后定义动态成员属性。
member
和 uniqueMember
。 图 10. 组成员属性定义
memberURL
。 图 11. 组动态成员属性定义
图 12. 向一个范围添加一个基础条目
点击查看大图
关闭 [x]
o=ldap
(应在连锁存储库中是唯一的) o=ldap
(LDAP 服务器的基础条目) 图 13. Distinguished name of a base entry in a repository
点击查看大图
关闭 [x]
要验证这个自定义 LDAP 配置,请登录到 WebSphere Application Server 管理控制台。然后选择 Environment > Manage Users/Groups 。在 Manage Users/Groups 面板上,执行基本的用户或组搜索。如果无法搜索到您需要的用户或组,请返回检查您的设置。
回页首
如果习惯于使用 CLI 命令,您可能更喜欢使用 wsadmin 方法在 Virtual Member Manager 中配置 LDAP 存储库。但是,为了避免在输入命令时发生任何可能的错误,您可能希望使用上一节中介绍的 GUI 方法。
wsadmin 命令的语法:本文中提供的 wsadmin 命令示例使用 Jacl 语法。有关 Jython 语法,请参阅 AdminTask 对象的 IdMgrRepositoryConfig 命令组 。
createIdMgrLDAPRepository
命令: 点击查看代码清单
关闭 [x]
$AdminTask createIdMgrLDAPRepository {-id custom_ldap -ldapServerType Custom -loginProperties "uid;cn"}
addIdMgrLDAPServer
命令: 点击查看代码清单
关闭 [x]
$AdminTask addIdMgrLDAPServer {-id custom_ldap -host customldap.ibm.com -port 389 -bindDN "cn=administrator,cn=users,dc=testdc,dc=in,dc=ibm,dc=com" -bindPassword xxxxx -ldapServerType Custom}
addIdMgrLDAPBackupServer
命令: 点击查看代码清单
关闭 [x]
$AdminTask addIdMgrLDAPBackupServer {-id custom_ldap -primary_host customldap.ibm.com -host failOverLDAP.ibm.com -port 4020}
addIdMgrLDAPEntityType
命令: 点击查看代码清单
关闭 [x]
$AdminTask addIdMgrLDAPEntityType {-id custom_ldap -name PersonAccount -objectClasses user -objectClassesForCreate hixuser -searchBases ou=itusers,dc=testdc,dc=in,dc=ibm,dc=com -searchFilter "(&(uid=a*)( ObjectCategory=Person))"}
点击查看代码清单
关闭 [x]
$AdminTask addIdMgrLDAPEntityType {-id custom_ldap -name Group -objectClasses group -searchFilter " (ObjectCategory=Group)"}
setIdMgrLDAPGroupConfig
命令: 点击查看代码清单
关闭 [x]
$AdminTask setIdMgrLDAPGroupConfig {-id custom_ldap -updateGroupMembership true -name memberOf -scope direct}
addIdMgrLDAPGroupMemberAttr
命令: 点击查看代码清单
关闭 [x]
$AdminTask addIdMgrLDAPGroupMemberAttr {-id custom_ldap -name uniqueMember -objectClass person -scope direct}
addIdMgrLDAPGroupDynamicMemberAttr
命令: 点击查看代码清单
关闭 [x]
$AdminTask addIdMgrLDAPGroupDynamicMemberAttr {-id custom_ldap -name memberURL -objectClass groupOfURLs}
addIdMgrLDAPAttr
命令: 点击查看代码清单
关闭 [x]
$AdminTask addIdMgrLDAPAttr {-id custom_ldap -name samAccountName -propertyName uid -entityTypes PersonAccount} $AdminTask addIdMgrLDAPAttr {-id custom_ldap -name userAccountControl -entityTypes PersonAccount -defaultValue 544} $AdminTask addIdMgrLDAPAttr {-id custom_ldap -name samAccountName -entityTypes Group -defaultAttr cn}
GUI 方法:如果您在 GUI 方法中完成了这一步,可继续执行使用管理控制台配置自定义 LDAP 存储库的 GUI 方法中的第 9 步。
addIdMgrLDAPAttrNotSupported
命令: $AdminTask addIdMgrLDAPAttrNotSupported {-id custom_ldap -propertyName description} $AdminTask addIdMgrLDAPAttrNotSupported {-id custom_ldap -propertyName businessAddress}
addIdMgrRepositoryBaseEntry
命令: $AdminTask addIdMgrRepositoryBaseEntry {-id custom_ldap -name o=ldap -nameInRepository "o=ldap"}
$AdminConfig save
回页首
清单 1 演示了一种自定义 LDAP 存储库配置。wimconfig.xml 文件显示了您在使用 GUI 方法或 CLI 方法配置自定义 LDAP 存储库时看到的结果。
清单 1. wimconfig.xml 文件
<config:repositories xsi:type="config:LdapRepositoryType" adapterClassName="com.ibm.ws.wim.adapter.ldap.LdapAdapter" id="custom_ldap" isExtIdUnique="true" supportAsyncMode="false" supportExternalName="false" supportPaging="false" supportSorting="false" supportTransactions="false" certificateFilter="" certificateMapMode="exactdn" ldapServerType="AD" translateRDN="false"> <config:baseEntries name="o=ldap " nameInRepository="o=ldap"/> <config:loginProperties>uid</config:loginProperties> <config:loginProperties>cn</config:loginProperties> <config:ldapServerConfiguration primaryServerQueryTimeInterval="15" returnToPrimaryServer="true" sslConfiguration=""> <config:ldapServers authentication="simple" bindDN="cn=administrator,cn=users,dc=testdc,dc=in,dc=ibm,dc=com" bindPassword="{xor}PjsyNjFubWw=" connectionPool="false" connectTimeout="0" derefAliases="always" referal="ignore" sslEnabled="false"> <config:connections host="customldap.ibm.com" port="389"/> <config:environmentProperties name="com.sun.jndi.ldap.read.timeout" value="30000"/> </config:ldapServers> </config:ldapServerConfiguration> <config:ldapEntityTypes name="Group" searchFilter="(ObjectCategory=Group)"> <config:objectClasses>group</config:objectClasses> </config:ldapEntityTypes> …. …. <config:ldapEntityTypes name="PersonAccount" searchFilter="(&(uid=a*)( ObjectCategory=Person))"> <config:objectClasses>user</config:objectClasses> <config:objectClassesForCreate>hixuser</config:objectClassesForCreate> <config:searchBases>ou=itusers,dc=testdc,dc=in,dc=ibm,dc=com</config:searchBases> </config:ldapEntityTypes> <config:groupConfiguration> <config:memberAttributes name="uniqueMember" objectClass="person" scope="direct"/> <config:dynamicMemberAttributes name="memberURL" objectClass="groupOfURLs"/> <config:membershipAttribute name="memberOf" scope="direct"/> </config:groupConfiguration> <config:attributeConfiguration> <config:attributes defaultValue="544" name="userAccountControl"> <config:entityTypes>PersonAccount</config:entityTypes> </config:attributes> <config:attributes name="samAccountName" propertyName="uid"> <config:entityTypes>PersonAccount</config:entityTypes> </config:attributes> <config:attributes defaultAttribute="cn" name="samAccountName"> <config:entityTypes>Group</config:entityTypes> </config:attributes> <config:attributes defaultValue="8" name="groupType"> <config:entityTypes>Group</config:entityTypes> </config:attributes> <config:attributes name="unicodePwd" propertyName="password" syntax="unicodePwd"/> <config:attributes name="userprincipalname" propertyName="kerberosId"> <config:entityTypes>PersonAccount</config:entityTypes> </config:attributes> <config:propertiesNotSupported name="description"/> ….. ….. <config:propertiesNotSupported name="businessAddress"/> </config:attributeConfiguration> <config:contextPool enabled="true" initPoolSize="1" maxPoolSize="0" poolTimeOut="0" poolWaitTime="3000" prefPoolSize="3"/> <config:cacheConfiguration> <config:attributesCache attributeSizeLimit="2000" cacheSize="4000" cacheTimeOut="1200" enabled="true"/> <config:searchResultsCache cacheSize="2000" cacheTimeOut="600" enabled="true" searchResultSizeLimit="1000"/> </config:cacheConfiguration> </config:repositories>
回页首
Virtual Member Manager 提供了灵活地配置兼容 V3 的默认和自定义 LDAP 存储库的能力。本教程重点介绍了两种配置自定义 LDAP 存储库的方法:管理控制台和 wsadmin 命令。