我使用keydape11作为我的spring引导服务的openid连接提供者。目前一切正常。
问题:
我有一个使用webclient的服务。它嵌套在我的服务中,并使用客户端身份验证和 admin-cli
客户。这很管用。当我执行get on/users/userid时,我得到了用户表示。我现在的问题是,用户的领域角色没有添加到表示中。
在文档中,这个参数被称为string[],并在userrepresentation中标记为可选。
我想如果我配置 Service account roles -> Client Roles -> realm-management -> realmAdmin
,客户端应该能够查看整个用户输出。
但是如果我使用postman并将api调用为ali admin,那么它就不会包含在json响应中。
我还尝试在key斗篷userrepresentationmodel中添加属性
public class KeycloakUserRepresentation {
private String id;
private String username;
private String firstName;
private String lastName;
private String email;
private Boolean emailVerified;
private Boolean enabled;
private Map<String, List<String>> attributes;
private String[] realmRoles;
并执行请求。数组realmroles总是空的。
您能告诉我,要将用户realmroles读取为admin cli,需要配置什么吗?
2条答案
按热度按时间20jt8wwn1#
您需要首先从
admin-cli
客户代表admin
(或具有类似权限的用户):然后,要获取与给定领域角色关联的用户列表,请在调用以下端点时使用该令牌:
从
JSON
您可以检查您的用户是否属于该列表。或者,您可以调用restadminapi
获取用户,然后提取其
ID
;通过使用其
ID
在对端点的调用中:GET <KEYCLOAK_HOST>/auth/admin/realms/<YOUR_REALM>/users/<USER_ID>/role-mappings
qgzx9mmu2#
我发现有两种方法。
第一:dreamcrash的网址提到:
在这里,您将获得具有所请求角色的所有用户。
第二:
这里您可以得到特定用户的领域和客户机Map。
我认为解决方案2是更好的方法,因为您只加载特定用户的信息。解决方案1加载所有用户及其整个帐户信息。这可能导致性能不足。
我不明白的是,general/users/id端点没有返回userrepresentation响应对象中的大多数可选参数。我觉得总是在文件里找到一条路线真烦人。我知道这是一个开源项目,但我认为这应该是固定的,或者至少解释了如何配置keydepot来获取信息。