dre*_*ash 11

更新:从Keycloak 17 Quarkus 发行版/auth开始,该路径已被删除。因此,您可能需要从该答案中显示的端点调用中删除 。/auth


使用Keycloak Admin REST API设置用户属性;您使用端点:

PUT <KEYCLOAK_HOST>/auth/admin/realms/<YOUR_REALM>/users/<USER_ID>
Run Code Online (Sandbox Code Playgroud)

与有效负载

{"attributes":{"<ATTRIBUTE_NAME>":["<ATTRIBUTE_VALUE>"]}}
Run Code Online (Sandbox Code Playgroud)

<USER_ID>可以使用端点获取它:

GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
Run Code Online (Sandbox Code Playgroud)

JSON响应中提取字段id.


一步步:

您可以使用Keycloak Admin REST API获取该信息;要调用该 API,您需要具有适当权限的用户提供的访问令牌。现在,我将使用领域admin中的用户master

PUT <KEYCLOAK_HOST>/auth/admin/realms/<YOUR_REALM>/users/<USER_ID>
Run Code Online (Sandbox Code Playgroud)

您将收到带有管理员令牌的 JSON 响应。access_token从该响应中提取属性值。让我们将其保存在变量中$ACCESS_TOKEN以供以后参考。

要从您的领域获取用户 ID$REALM_NAME

{"attributes":{"<ATTRIBUTE_NAME>":["<ATTRIBUTE_VALUE>"]}}
Run Code Online (Sandbox Code Playgroud)

从响应中提取用户,id例如如下

jq -r .[].id
Run Code Online (Sandbox Code Playgroud)

或者甚至更干净的是传递给

设置用户属性:

GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
Run Code Online (Sandbox Code Playgroud)

您还可以查看我的 GitHub 存储库上的setUser脚本。