我正在尝试通过 Keycloak API 创建用户,并且我想在首次添加时为其分配领域级角色。但是,它似乎不像文档所说的那样工作。
我知道我可以在初始创建用户 API 请求之后简单地发出第二个 add-role-to-user API 请求,但是:
为了在 中进行测试irb,使用keycloak Ruby gem,我首先从 Keycloak 请求访问令牌:
require 'keycloak'
json = Keycloak::Client.get_token_by_client_credentials
access_token = JSON.parse(json)['access_token']
Run Code Online (Sandbox Code Playgroud)
以下所有内容在 Keycloak 中创建一个用户,但没有“所有者”角色:
Keycloak::Admin.generic_post('users', nil, { username: 'someone', realmRoles: ['owner'] }, access_token)
Keycloak::Admin.generic_post('users', nil, { username: 'someone', realmRoles: ['1fff5f5f-7357-4f73-b45d-65ccd01f3bc8'] }, access_token)
Keycloak::Admin.generic_post('users', nil, { username: 'someone', realmRoles: ['{"id":"1fff5f5f-7357-4f73-b45d-65ccd01f3bc8","name":"owner","description":"Indicates that a user is the owner of an organisation.","composite":false,"clientRole":false,"containerId":"MyRealmName"}'] }, access_token)
Run Code Online (Sandbox Code Playgroud)
尝试使用角色哈希而不是字符串会导致错误:
Keycloak::Admin.generic_post('users', nil, { username: 'someone', realmRoles: [{"id"=>"1fff5f5f-7357-4f73-b45d-65ccd01f3bc8", "name"=>"owner", …Run Code Online (Sandbox Code Playgroud)