gpt4 book ai didi

java - Keycloak:调用管理员 rest api 时无法将用户领域角色读取为管理员 cli

转载 作者:行者123 更新时间:2023-12-04 15:10:18 25 4
gpt4 key购买 nike

我使用 keycloak 11 作为我的 spring boot 服务的 openid connect provider。到目前为止一切正常。

问题:

我有一个使用网络客户端的服务。它嵌套在我的服务中,并通过 admin-cli 客户端使用客户端身份验证。这样可行。当我访问/users/userId 时,我得到了用户表示。我现在遇到的问题是用户的领域角色没有添加到表示中。

docs此参数在 UserRepresentation 中以 String [] 形式提及并标记为可选。

我认为如果我配置 Service account roles -> Client Roles -> realm-management -> realmAdmin ,客户端应该能够查看整个用户输出。

但是如果我使用 postman 并以 ali-admin 的身份调用 api,它不会包含在 JSON 响应中。

我还尝试在我的 KeycloakUserRepresentationModel 中添加该属性

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 吗?

最佳答案

您需要先从 admin-cli 请求 token 客户代表admin (或具有类似权限的用户):

curl    -d "client_id=admin-cli" \
-d "username=$ADMIN_NAME" \
-d "password=$ADMIN_PASSWORD" \
-d "grant_type=password" \
https://$KEYCLOAK_IP/auth/realms/master/protocol/openid-connect/token

然后要获取与给定领域角色关联的用户列表,您可以在调用以下端点时使用该 token :

GET <KEYCLOAK_HOST>/auth/admin/realms/<YOUR_REALM>/roles/<ROLE_NAME>/users

来自JSON响应,您可以检查您的用户是否属于该列表。

或者,您可以调用 Rest Admin API 来

  1. 获取用户,然后提取其ID ;
  2. 使用其 ID 获取与该用户关联的角色在对端点的调用中:GET <KEYCLOAK_HOST>/auth/admin/realms/<YOUR_REALM>/users/<USER_ID>/role-mappings

关于java - Keycloak:调用管理员 rest api 时无法将用户领域角色读取为管理员 cli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65292454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com