提问者:小点点

允许客户端从密钥斗篷检索用户


我想让我的客户端应用程序从keyclock访问用户信息。因此,我在keyclock中创建了另一个领域(myrealm1),并在该领域中创建了一个新的客户端(myclient1)。

其实我尝试了很多其他组合都没有成功。

在“客户端范围”选项卡中,我添加了管理客户端范围。在“服务帐户角色”选项卡中,我添加了管理角色

对于管理客户端范围,我在范围选项卡中分配了管理员角色。

对于管理领域角色,我在关联的角色选项卡中分配了管理角色。

这些是我正在使用的 REST API 调用

curl --location --request POST 'http://localhost:8080/realms/myrealm/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=myclient1' \
--data-urlencode 'client_secret=PehR9f95woZmEEHcKfSgPaosu1Yt6P9s' \
--data-urlencode 'grant_type=client_credentials'

返回

{
    "access_token": "eyJhbGciOiJS...",
    "expires_in": 300,
    "refresh_expires_in": 0,
    "token_type": "Bearer",
    "not-before-policy": 0,
    "scope": "email profile admin"
}

到目前为止还不错,我确实得到了一个代币。

curl --location --request GET 'http://localhost:8080/admin/realms/myrealm/users' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJS...'

返回HTTP 403

{
    "error": "unknown_error"
}

这与预期不符。预期的结果将是用户信息。

顺便说一下,我确实为主领域的管理员用户工作

curl --location --request POST 'http://localhost:8080/realms/master/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=admin-cli' \
--data-urlencode 'username=admin' \
--data-urlencode 'password=password' \
--data-urlencode 'grant_type=password'

但这不是我想要的。我想让它为我的定制客户工作。

我正在使用钥匙斗篷 19.0.3

缺少什么来让它工作?例如,如何使我的客户端能够使用keycloak REST API,例如 /admin/realms/myrealm/users


共1个答案

匿名用户

您需要前往:

  • 你的领域;
  • 您的客户;
  • 然后转到服务号;

  • 单击分配角色;
  • 选择按客户端筛选;
  • 并搜索“领域管理”

    < li >选择并分配所需的角色。