Keycloak - 使用 admin API 向用户添加客户端角色
Keycloak - using admin API to add client role to user
我正在尝试使用 keycloak AdminAPI (https://www.keycloak.org/docs-api/3.0/rest-api/index.html#_users_resource) 创建用户并分配客户端角色。我收到了正确的令牌,并且创建了用户但分配了角色 return 404
我正在使用 Postman 连接 API:
/auth/realms/{realmName}/protocol/openid-connect/token
Content-Type application/x-www-form-urlencoded <-with parameters ofc
/auth/admin/realms/{realmName}/users
Content-Type application/json
Authorization Bearer {TOKEN}
Body:
{
"username": "name",
"enabled": true,
"emailVerified": false,
"firstName": "first",
"lastName": "last",
"credentials": [
{
"type": "password",
"value": "newPas1*",
"temporary": false
}
]
}
上面的适合我,但下一个不适合
/auth/admin/realms/{realmName}/users/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/role-mappings/clients/realm-management
Content-Type application/json
Authorization Bearer {TOKEN}
Body:
{
"roles": [
{
"id": "0830ff39-43ea-48bb-af8f-696bc420c1ce",
"name": "create-client",
"description": "${role_create-client}",
"composite": false,
"clientRole": true,
"containerId": "344e7c81-e7a2-4a43-b013-57d7ed198eee"
}
]
}
其中 'xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx' 是用户 ID return 在创建期间编辑并且存在创建客户端角色
我需要一种通过 Http 请求添加客户端角色的方法。我看到 java 有一些 keycloack 实现,但我使用的是 .NET CORE,所以会有目标实现,但我需要先有工作请求,你可能会猜到
您必须将客户端 UUID 传递给 role-mappings
REST 方法,而不是您在管理 UI 中创建客户端时指定的 ID。使用GET /admin/realms/{realm}/clients?clientId=realm-management
REST方法找出客户端UUID.
更新
在Keycloak 6.0.1中添加角色需要传递角色名称和id。
示例:
POST /auth/admin/realms/{realm}/users/{user}/role-mappings/clients/{client}
[
{
"id": "0830ff39-43ea-48bb-af8f-696bc420c1ce",
"name": "create-client"
}
]
我正在尝试使用 keycloak AdminAPI (https://www.keycloak.org/docs-api/3.0/rest-api/index.html#_users_resource) 创建用户并分配客户端角色。我收到了正确的令牌,并且创建了用户但分配了角色 return 404
我正在使用 Postman 连接 API:
/auth/realms/{realmName}/protocol/openid-connect/token
Content-Type application/x-www-form-urlencoded <-with parameters ofc
/auth/admin/realms/{realmName}/users
Content-Type application/json
Authorization Bearer {TOKEN}
Body:
{
"username": "name",
"enabled": true,
"emailVerified": false,
"firstName": "first",
"lastName": "last",
"credentials": [
{
"type": "password",
"value": "newPas1*",
"temporary": false
}
]
}
上面的适合我,但下一个不适合
/auth/admin/realms/{realmName}/users/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/role-mappings/clients/realm-management
Content-Type application/json
Authorization Bearer {TOKEN}
Body:
{
"roles": [
{
"id": "0830ff39-43ea-48bb-af8f-696bc420c1ce",
"name": "create-client",
"description": "${role_create-client}",
"composite": false,
"clientRole": true,
"containerId": "344e7c81-e7a2-4a43-b013-57d7ed198eee"
}
]
}
其中 'xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx' 是用户 ID return 在创建期间编辑并且存在创建客户端角色
我需要一种通过 Http 请求添加客户端角色的方法。我看到 java 有一些 keycloack 实现,但我使用的是 .NET CORE,所以会有目标实现,但我需要先有工作请求,你可能会猜到
您必须将客户端 UUID 传递给 role-mappings
REST 方法,而不是您在管理 UI 中创建客户端时指定的 ID。使用GET /admin/realms/{realm}/clients?clientId=realm-management
REST方法找出客户端UUID.
更新
在Keycloak 6.0.1中添加角色需要传递角色名称和id。
示例:
POST /auth/admin/realms/{realm}/users/{user}/role-mappings/clients/{client}
[
{
"id": "0830ff39-43ea-48bb-af8f-696bc420c1ce",
"name": "create-client"
}
]