您可以配置WebSphere® Application Server安全地使用轻量级目录访问协议 (LDAP) 服务器。 LDAP 规范允许使用不同机制来定义组成员资格。 根据您的 LDAP 服务器实现,可使用一些方法来确定组成员资格。 WebSphere Application Server可以直接或间接地搜索群组成员身份。 还可配置该产品以搜索一个或多个静态组、递归或嵌套组以及动态组来查找某些轻量级目录访问协议 (LDAP) 服务器。
过程
- 评估组成员资格。
- 静态组成员资格:所有 LDAP 服务器实现都支持静态组成员资格。 组对象包含属于该组的用户或组的列表。 为确定用户所属的组,必须获取所有组的列表,然后依次查询每个组以了解该用户是否属于该组。 此操作不会产生任何组,并且不会缩放范围。
一些 LDAP 服务器允许 LDAP 服务器中的用户对象包含有关它们所属的组的信息。 支持直接组搜索的 LDAP 服务器示例包括 MicrosoftActive Directory服务器和所有者eDirectory。
- 动态组成员身份:
可根据用户对象中的属性计算某些用户组成员资格。 IBM® Directory Server 和 Sun ONE Directory Server 是支持动态组成员资格的 LDAP 服务器的两个示例。 在某些 LDAP 服务器中,您可以使用属性来包含用户的动态组成员身份、嵌套组成员身份和静态组成员身份,以从单个属性确定所有组成员身份。
例如,在IBM目录服务器,您可以使用ibm-allGroups属性。 在 Sun ONE 目录服务器中,可使用
nsRole 属性来计算所有角色(包含受管角色、过滤角色和嵌套角色)。 如果 LDAP 服务器在用户对象中具有这样的属性,以包含动态组、嵌套组和静态组,则可以配置WebSphere Application Server安全性使用此属性来确定这些组。
根据实现,LDAP 服务器可计算动态组成员资格。 在这种情况下,此动态计算完全由 LDAP 服务器在单个 LDAP 查询下执行,并且对WebSphere Application Server。 虽然此方法不像直接分组那样高效,但服务器端动态查询比使用静态组查询确定组成员资格更高效。
当 LDAP 服务器支持动态组成员身份时,该动态组成员身份通常会反映回 LDAP 客户端,这是WebSphere Application Server。 在此配置中, WebSphere Application Server需要为每个组编写针对 LDAP 的适当的动态查询。 此操作不会产生任何组,并且不会缩放范围。
提示:
- 尽可能地使用高效直接组成员资格。
- 如果 LDAP 在单个查询内计算成员资格,请使用相对高效的动态组成员资格。
- 使用静态组成员资格或客户端动态组成员资格作为辅助替代方法。 仅当 LDAP 服务器内的组数较“少”时,此选项在系统上执行起来才比较有效。
受支持的所列示 LDAP 服务器的配置已预先定义为使用优化组成员资格机制。 它们假定正在 LDAP 服务器上使用该 LDAP 供应商的标准对象类型和模式。
- 评估 LDAP 注册表配置。
- 独立 LDAP 注册表
如果要配置预先配置类型列表中未包含的 LDAP 服务器,那么必须使用以下方法在“高级 LDAP 设置”面板的“组成员标识映射”字段中配置相应的值。
- 如果使用静态组成员资格,那么必须指定对象类/属性对。 如果组对象的对象类为 groupOfUniquePersons,并且在该对象类中成员列示为
persons,那么静态组成员资格组成员标识映射为 groupOfUniquePersons:persons。
- 如果使用了直接组成员资格,那么该对象类中存在属性,您必须使用“属性:属性”对。 例如,如果用户的对象类为 user 并且对象类包含属性 ingroup(它包含每个组成员资格),那么直接组成员资格组成员标识映射为 ingroup:member。
- 联合存储库注册表内的 LDAP 注册表
如果要配置预先配置类型列表中未包含的 LDAP 服务器,那么必须在
组属性定义属性中为该存储库配置相应值。
- 如果使用了静态组成员资格,那么必须指定对象类的名称以及用于在组属性定义 -> 成员属性中指示成员资格的属性。 如果该用户的组对象类为 groupOfUniquePersons,并且在该对象类中成员列示为
persons,那么系统会按如下方式设置静态组成员属性特性:
- 在管理控制台中,单击安全性 > 全局安全性。
- 在“可用领域定义”下,选择联合存储库,然后单击配置。 在多安全域环境中,单击安全域 > domain_name。 在“安全性属性”下面,展开“用户领域”,然后单击为此域进行定制。 将领域类型选为联合存储库,然后单击配置。
- 在“相关项”下,单击管理存储库。
- 单击添加以指定新的外部存储库,或者选择已预配置的外部存储库。
- 在“其他属性”下面,单击组属性定义。
- 在“其他属性”下面,单击成员属性。
- 单击新建以指定新成员属性。
- 设置成员属性名称字段
persons。
- 设置对象类字段到
groupOfUniquePersons。
在完成添加或更新联合存储库配置之后,请转到安全性 > 全局安全性面板并单击应用以验证更改。
将成员属性的名称字段设置为 persons
将对象类字段设置为 groupOfUniquePersons
在完成添加或更新联合存储库配置之后,请转到安全性 > 全局安全性面板并单击应用以验证更改。
- 如果使用了直接组成员资格,那么该用户的对象类中存在属性,您必须使用该属性。 例如,如果用户的对象类为
user,并且它包含属性 ingroup(包含每个组成员资格),请在组属性定义特性中对该存储库指定直接组成员资格。 请执行以下步骤:
- 在管理控制台中,单击安全性 > 全局安全性。
- 在“用户帐户存储库”下,从“可用域定义”字段中选择联合存储库,然后单击配置。
- 在“相关项”下,单击管理存储库。
- 单击添加以指定新的外部存储库,或者选择已预配置的外部存储库。
- 在“其他属性”下面,单击组属性定义。
- 将组成员资格属性的名称字段设置为
ingroup。
将组成员资格属性的名称字段设置为 ingroup。
在完成添加或更新联合存储库配置之后,请转到安全性 > 全局安全性面板并单击应用以验证更改。
- 评估嵌套组。
- 嵌套组
根据 LDAP 服务器实现,组可只包含用户,也可包含其他组,这称为嵌套组。 您配置
WebSphere Application Server通过遵循此嵌套来正确发现所有组,因为它适用于独立 LDAP 注册表或联合存储库注册表内的 LDAP 注册表。
- 独立 LDAP 注册表 独立 LDAP 注册表缺省设置仅执行单个组成员资格查询。 如果返回的组实际上是其他组的子组,那么必须在 LDAP 注册表的“高级 LDAP 设置”面板上启用执行嵌套组搜索属性,如下所示:
- 点击安全 > 全球安全。
- 在“用户帐户存储库”下,单击可用的领域定义下拉列表,选择独立 LDAP 注册表,然后单击配置。
- 在“其他属性”下,单击高级轻量级目录访问协议 (LDAP) 用户注册表设置。
- 选中执行嵌套组搜索复选框。
- 联合存储库注册表内的 LDAP 注册表 在联合存储库内,必须配置期望该查询返回的结果。 根据此信息,联合存储库会进行相应调用以确定所有组成员资格。 如果 LDAP 服务器在单个直接组查询中返回所有嵌套组信息,则您设置团体成员范围组属性定义中的属性属性嵌套。 如下所示:
- 在管理控制台中,单击安全性 > 全局安全性。
- 在“用户帐户存储库”下,从“可用域定义”字段中选择联合存储库,然后单击配置。
- 在“相关项”下,单击管理存储库。
- 单击添加以指定新的外部存储库,或者选择已预配置的外部存储库。
- 在“其他属性”下面,单击组属性定义。
- 设置团体成员范围组属性定义中的属性属性嵌套。
- 如果 LDAP 服务器仅返回直接成员资格,那么该注册表必须执行后续查询以确定完整成员资格。 要强制联合存储库发出后续查询,请将该存储库的组属性定义中的组成员资格范围属性特性设置为直接。
结果
当使用直接方法时,可以将动态组、递归组和静态组作为单个属性的多个值来返回。 例如,在
IBM Directory Server 中,可以使用 ibm-allGroups 属性来返回所有组成员资格(包括静态组、动态组和嵌套组)。 在 Sun ONE 中,使用 nsRole 属性来计算所有角色(包含受管角色、过滤角色和嵌套角色)。 如果 LDAP 服务器可以使用nsRole属性、动态组、嵌套组和静态组均受WebSphere Application Server。
某些 LDAP 服务器没有递归计算功能。 例如,尽管
Microsoft Active Directory 服务器能够使用 memberOf 属性直接搜索组,但此属性仅列示该组直接嵌套在其中的组,并且不包含嵌套前趋的递归列表。 Lotus Domino LDAP 服务器仅支持使用间接方法来查找用户的组成员资格。 不能直接从
Domino 服务器获取递归组成员资格。 对于没有递归搜索功能的 LDAP 服务器, WebSphere Application Server安全性提供了递归功能,单击即可启用执行嵌套组搜索在高级 LDAP 用户注册表设置中。 仅当您的 LDAP 服务器不提供递归搜索而您想要递归搜索时才选择此选项。