我知道有管理API可以获取返回用户表示形式数组的用户列表。
GET /admin/realms/{realm}/groups/{id}/members
返回
https://www.keycloak.org/docs-api/2.5/rest-api/index.html#_userrepresentation
但是有没有一种方法可以通过自定义属性来吸引用户?
答案 0 :(得分:6)
默认情况下这是不可能的,但是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() {
}
}
您将在这里找到更多详细信息:https://www.keycloak.org/docs/latest/server_development/index.html#_extensions_rest
答案 1 :(得分:0)
当前Keycloak API版本为4.8,并且有以下API: 获取用户返回根据查询参数过滤的用户列表
GET /{realm}/users
查看文档:{{3}}
API只能提供此“搜索”。如果需要按用户属性搜索,则需要在自己的代码中实现。