我知道有管理 API 可以获取返回用户表示数组的用户列表。
GET /admin/realms/{realm}/groups/{id}/members
Run Code Online (Sandbox Code Playgroud)
返回
https://www.keycloak.org/docs-api/2.5/rest-api/index.html#_userrepresentation
Run Code Online (Sandbox Code Playgroud)
但是有没有办法通过自定义属性来获取用户?
小智 23
从 Keycloak 版本15.1.0开始即可启用此功能
使用GET /{realm}/users
API,q
引入参数:搜索自定义属性的查询,格式为'key1:value2 key2:value2'
curl 'http://{{keycloak_url}}/auth/admin/realms/{{realm}}/users?q=phone:123456789'
Run Code Online (Sandbox Code Playgroud)
您还可以使用空格' '
分隔符在此参数中组合多个属性
curl 'http://{{keycloak_url}}/auth/admin/realms/{{realm}}/users?q=phone:123456789 country:USA'
Run Code Online (Sandbox Code Playgroud)
文档: https: //www.keycloak.org/docs-api/15.1/rest-api/index.html#_users_resource
Luc*_*rcq 14
默认情况下这是不可能的,但 Keycloak 提供了通过服务提供者接口系统扩展其功能的可能性,该系统非常容易实现。
这是允许按自定义属性搜索的新路由示例:
public class SearchByAttributeResourceProvider implements RealmResourceProvider {
private KeycloakSession session;
public SearchByAttributeResourceProvider(KeycloakSession session) {
this.session = session;
}
@Override
public Object getResource() {
return this;
}
@GET
@Path("search-by-stuff/{stuffValue}")
@Produces({MediaType.APPLICATION_JSON})
public List<UserRepresentation> getUsersByStuff(@PathParam("stuffValue") String stuffValue) {
return session
.users()
.searchForUserByUserAttribute("stuff", stuffValue, session.getContext().getRealm())
.stream()
.map(userModel -> ModelToRepresentation.toRepresentation(session, session.getContext().getRealm(), userModel))
.collect(toList());
}
@Override
public void close() {
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到更多详细信息:https : //www.keycloak.org/docs/latest/server_development/index.html#_extensions_rest
小智 5
使用最新版本的 keycloak (18.01),我们有 api
@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
List<UserRepresentation> searchByAttributes(@QueryParam("q") String searchQuery);
Run Code Online (Sandbox Code Playgroud)
查询参数的格式为 'key:value' 。使用这个我们可以通过自定义属性获取所有用户的列表
当前Keycloak API版本是4.8,有API: 获取用户返回用户列表,根据查询参数过滤
GET /{realm}/users
Run Code Online (Sandbox Code Playgroud)
请参阅文档: https: //www.keycloak.org/docs-api/4.8/rest-api/index.html#_users_resource
API 中仅提供此“搜索”。如果您需要按用户属性进行搜索,那么您需要在自己的代码中实现。
归档时间: |
|
查看次数: |
10112 次 |
最近记录: |