在 IBM BPM 数据库与用户注册表之间同步用户
使用 usersSync、syncExistingUsers 和 usersFullSync 命令以在 WebSphere® Application Server 用户注册表与 IBM® BPM 数据库之间同步用户。
要点: 因为运行这些命令会导致系统高负载,请考虑在空闲时运行。
您还可以使用 wsadmin 脚本编制客户机的 AdminTask 对象来执行这些任务。 有关更多信息,请参阅 BPMUsersSyncTask、BPMUsersFullSyncTask 和 BPMSyncExistingUsersTask 命令。
通过以下方法,使用这些命令来更新 IBM BPM 数据库中的用户信息:
| 命令 | 用法 |
|---|---|
| usersSync | 更新一组指定用户的信息。 您还可使用该命令在 IBM BPM 数据库中创建已在用户注册表中可用的特定用户。 如果指定了用户注册表中不可用的用户,那么将跳过该用户。 |
| syncExistingUsers | 更新 IBM BPM 数据库中现有用户的信息,但不会将新用户从用户注册表导入到数据库中。 您还可以使用该命令来将 IBM BPM 数据库中用户的用户状态与用户注册表中的用户可用性同步。 例如,如果从用户注册表中删除了用户,那么该命令在 IBM BPM 数据库中将这些用户标记为不活动。 |
| usersFullSync | 将所有用户信息从用户注册表导入到 IBM BPM 数据库中。
如果用户注册表包含新用户,那么将在 IBM BPM 数据库中创建这些用户。 注意: 使用此命令时,请务必谨慎。 由于用户注册表中的所有用户都导入到 IBM BPM 数据库中,因此该命令还可能导入未使用 IBM BPM 的用户。
|
同步命令的运行方式取决于是否对联合存储库 (VMM) 配置了 WebSphere Application
Server 安全性:
- 非联合存储库
- WebSphere Application Server 用户注册表 API 用于运行命令。
- 联合存储库
- 联合存储库 API 用于运行命令。 此 API 的性能明显优于用户注册表 API。 用于同步用户信息的 VMM 调用数取决于命令和 IBM BPM 数据库中的可用用户数。
- usersSync
- 针对每个用户发出一次 VMM 调用。
- syncExistingUsers
- 缺省情况下,如果 IBM BPM 数据库中的可用用户数少于 1000,那么将针对每个用户发出一个 VMM 调用来同步数据。 如果 IBM BPM 数据库中的可用用户数大于 1000,
那么改为针对所有用户发出一个调用。 可以配置该阈值。注意: 如果“针对所有用户的调用”未返回用户注册表中的所有可用用户, 请执行以下操作之一:
- 通过更改阈值来反映用户注册表中的实际用户数,以强制使用“针对每个用户发出一次 VMM 调用”。
- 请联系 LDAP 管理员来调整 LDAP 配置,以便在一次 LDAP 搜索调用中检索所有用户。
- usersFullSync
- 针对所有用户发出一个 VMM 调用,而无论数据库中的用户数。注意: 如果该调用未返回用户注册表中的所有可用用户, 请联系 LDAP 管理员来调整 LDAP 配置,以便在一次 LDAP 搜索调用中检索所有用户。
命令的输出包含已同步的用户数。
位置
这些脚本位于 deployment_manager_profile/bin 目录中,可用于 Windows 和 Linux 环境中。usersSync 语法
usersSync.[bat|sh]
-username|-u|-user user_name
-password|-p password
[-host host_name]
[-port port]
username_1 username_2 ... username_n
syncExistingUsers 语法
syncExistingUsers.[bat|sh]
-username|-u|-user user_name
-password|-p password
[-userState sync|any_other_value]
[-host host_name]
[-port port]
[username_1 username_2 ... username_n]
如果未指定可选的用户列表,那么将处理 IBM BPM 数据库中的所有用户。usersFullSync 语法
usersFullSync.[bat|sh]
-username|-u|-user user_name
-password|-p password
[-host host_name]
[-port port]
参数
- -username|-u|-user user_name
- 必需。 管理用户的名称。
- -password|-p password
- 必需。 用户密码(未加密)。
- -host host_name
- 可选。 运行管理任务的 AppTarget 集群成员的主机名。 您还必须指定端口。
- -port port
- 可选。 运行管理任务的 AppTarget 集群成员的 SOAP 端口。
- -userState sync|any_other_value
- 仅适用于 syncExistingUsers 命令。 可选。 更新 IBM BPM 数据库中用户的用户状态。
- 从用户注册表中删除的用户将在 IBM BPM 数据库中变为不活动状态。
- 在用户注册表中重新激活的用户将在 IBM BPM 数据库中变为活动状态。
配置
- SOAP 连接
- 所有命令。 如果使用的是 SOAP 连接,那么完成这些命令所需的时间可能比指定的 SOAP 超时值要长。 尽管命令会继续执行直到完成,但您可能会在 systemOut.log 文件中看到 java.net.SocketTimeoutException: Read timed out 异常。 要防止出现此异常,请为 profile_root/properties/soap.client.props 文件中的 com.ibm.SOAP.requestTimeout 属性设置一个更高的值。 要禁用超时,请将该属性的值设置为 0。
- VMM 调优
- syncExistingUsers 和 usersFullSync 命令。 如果使用“针对所有用户发出一次 VMM 调用”,那么将在 wimconfig.xml 文件中调整每个相关 LDAP 存储库的 VMM 配置。 尤其是,为 configurationProvider->maxSearchResults 属性选择适当的设置,并考虑调整 ldapServers->connectTimeout 和 attributesCache->cacheSize 属性的值。 有关调优 VMM 的更多信息,请参阅 WebSphere Application Server Network Deployment Knowledge Center。
- 用户检索阈值
- 仅适用于 syncExistingUsers 命令。 基于 IBM BPM 数据库中的可用用户数,threshold-for-existing-user-retrieval-mode 配置属性确定是针对每个用户分别调用 VMM 还是针对所有用户调用一次 VMM。 缺省值是 1000 个可用用户。
- 如果不超过 1000 个可用用户,那么将针对每个用户发出调用(逐个用户)。
- 如果超过 1000 个用户,那么将针对所有用户发出一个调用。
- configurationProvider->maxSearchResults 属性的值适合阈值属性的值
- 关联的用户存储库(例如,LDAP)的配置不会限制返回的搜索结果总数。
要更改该属性的值,请将具有相应值的以下元素添加到您拓扑的 100Custom.xml 文件中。
有关如何查找 100Custom.xml 文件的信息,请参阅100Custom 配置文件的位置。<common merge="mergeChildren"> <security> <threshold-for-existing-user-retrieval-mode merge="replace">1000</threshold-for-existing-user-retrieval-mode> </security> </common>