Keycloak 管理 API:无法创建领域

问题描述 投票:0回答:1

我想使用 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
创建新用户。

keycloak keycloak-rest-api
1个回答
0
投票

这种方式可以通过用户的token创建realm

1.在主领域中,创建
custom-admin-api
客户端

以及带有 create-realm 的“create-role”。

Role name: create-realm
Description: ${role_create-realm}

1.在主域中,创建一个新的高级用户(密码:1234)。

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}

结果

通过 Curl 创建 Realm

在 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}'

结果

© www.soinside.com 2019 - 2024. All rights reserved.