WSO2 API Manager 4.2.0:如何查询所有已注册Devportal用户列表?
针对WSO2 API Manager 4.2.0用户列表查询的解决方案
一、管理控制台直接查询的限制
目前APIM 4.2.0的管理控制台不支持直接导出或查看包含所有用户声明(姓名、组织、邮箱等)的完整列表。默认仅能看到用户名列表,通过单个声明搜索也只会返回用户名,必须逐个进入用户配置页查看详细信息。
二、数据库层面的查询方案
当使用Resident密钥管理器时,用户的配置文件信息并不存储在APIMDB中,而是存在APIM自带的用户存储(默认是H2数据库,生产环境可配置为MySQL等)对应的用户表中:
- 若使用JDBC用户存储,核心用户数据在
UM_USER表,用户属性(声明)存储在UM_USER_ATTRIBUTE表 AM_SUBSCRIBER表仅记录订阅关系,只保存用户名和租户ID,不包含用户属性信息
如果要关联订阅信息与用户属性,可使用以下SQL查询(以MySQL为例,需替换对应数据库名):
SELECT s.SUBSCRIBER_NAME AS username, ua.ATTR_VALUE AS email, ua2.ATTR_VALUE AS full_name, ua3.ATTR_VALUE AS organization FROM apim_db.AM_SUBSCRIBER s JOIN user_store_db.UM_USER u ON s.SUBSCRIBER_NAME = u.USER_NAME LEFT JOIN user_store_db.UM_USER_ATTRIBUTE ua ON u.USER_ID = ua.USER_ID AND ua.ATTR_NAME = 'email' LEFT JOIN user_store_db.UM_USER_ATTRIBUTE ua2 ON u.USER_ID = ua2.USER_ID AND ua2.ATTR_NAME = 'fullname' LEFT JOIN user_store_db.UM_USER_ATTRIBUTE ua3 ON u.USER_ID = ua3.USER_ID AND ua3.ATTR_NAME = 'organization';
注意:需确保APIMDB和用户存储数据库在同一实例,或配置跨库查询权限;
ATTR_NAME需匹配你实际配置的用户声明属性名。
三、API层面的解决方案
APIM 4.2.0没有专门的产品API用于查询用户列表,但可以通过Admin Services实现:
- 使用
RemoteUserStoreManagerService中的listUsers方法获取用户列表,再通过getUserClaimValues方法获取每个用户的声明属性 - 调用Admin Services需要管理员权限,可通过SOAP客户端或编写简单脚本(如Python/Java)实现
另外,Micro Integrator的管理API仅适用于自身组件的用户查询,不能用于APIM本身的用户数据获取。
内容的提问来源于stack exchange,提问作者RTodd
相关产品推荐
相关产品推荐

