我想让我的客户端应用程序从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
您需要前往: