我想使用 REST Admin APIs 在 Keycloak 中创建一个领域。以下是我到目前为止所做的事情
在
master
领域中,创建一个新客户端 custom-admin-api
.
在客户端的
Service accounts roles
中,分配角色realm-admin
。
使用
access_token
和 client-id
生成 client-secret
。该代币具有以下作用。
{"resource_access":{"realm-management":{"roles":["view-identity-providers","view-realm","manage-identity-providers","impersonation","realm-admin","create-client","manage-users","query-realms","view-authorization","query-clients","query-users","manage-events","manage-realm","view-events","view-users","view-clients","manage-authorization","manage-clients","query-groups"]}}}
创建领域。我收到错误响应。
curl --location 'https://my-keycloak/auth/admin/realms' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer e...mFGA' \
--data '{
"realm": "test",
"displayName": "Test",
"enabled": true
}'
403
{"error":"unknown_error"}
任何人都可以指导我需要进行哪些更改才能创建新领域?
注意:我可以使用相同的
access_token
创建新用户。
这种方式可以通过用户的token创建realm
custom-admin-api
客户端以及带有 create-realm 的“create-role”。
Role name: create-realm
Description: ${role_create-realm}
和
Assign Role
与 create-realm
步骤 1. 测试选项卡,设置
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("power-token", jsonData.access_token);
步骤2.身体设定
第3步获取访问令牌 网址
POST http://localhost:8080/auth/realms/master/protocol/openid-connect/token
第 5 步创建领域
设置令牌
身体
{"realm":"demo-realm","enabled":true}
在 Git Bash 获取访问令牌
POWER_TOKEN=$(curl --silent --location --request POST "http://localhost:8080/auth/realms/master/protocol/openid-connect/token" \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'username=power-user' \
--data-urlencode 'password=1234' \
--data-urlencode 'client_id=admin-cli' | jq -r '.access_token')
打印访问令牌
echo $POWER_TOKEN
创建领域
curl --silent --show-error -L -X POST "http://localhost:8080/auth/admin/realms" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ""$POWER_TOKEN" \
--data '{"realm":"demo-realm-2","enabled":true}'
结果