xbm*_*ono 0 keycloak keycloak-rest-api
例如,我想admin使用admin-cli客户端创建一个新客户端。
令牌生成工作正常:
POST /auth/realms/master/protocol/openid-connect/token
b'username=admin&password=admin&grant_type=password&client_id=admin-cli'
Run Code Online (Sandbox Code Playgroud)
使用该令牌我还可以执行一些查询,例如当我需要获取客户端的 ID 时:
GET /auth/admin/realms/master/clients?clientId=my-test-cli
H' Authorization: Bearer xyz
H' Content-Type: application/json
Run Code Online (Sandbox Code Playgroud)
但是,当我想创建新的客户端角色或新客户端时,我总是会收到400错误。我将 Keycloak 服务器中的日志级别更改为DEBUG,但除了看到表明令牌已成功创建的日志之外,没有任何用处。
POST /auth/admin/realms/master/clients/7534ac42-fe8b-4cde-b6c6-c385f4958e3b/roles
400 {"error":"unknown_error"}
Run Code Online (Sandbox Code Playgroud)
我正在使用与 JBoss Wildfly 容器一起运行的 Python v3.x 和 Keycloak v14.0.0。
看看admin用户,它似乎拥有所有角色,如admin、default-roles-master,create-realm并且我在列表中没有看到任何要分配的角色,因为它似乎拥有一切。对于客户来说也是如此admin-cli。这两个配置(admin user 和 admin-cli)是您第一次启动服务器时的默认配置。我是否需要任何额外的东西,例如创建新角色或其他东西才能使其正常工作?
我创建机密客户端的有效负载:
payload = {
"name": "Some Name",
"clientId": "some-name",
"secret": "some-name-secret",
"enabled": true,
"publicClient": false,
"authorizationServicesEnabled": true,
"redirectUris" : ["/*"]
}
Run Code Online (Sandbox Code Playgroud)
我想回答一下我的问题,这样每个有类似情况的人就不会遇到同样的问题。
事实证明,我发送的有效负载不正确,感谢@JanGaraj指出了这一点。但我在这里想回答的是如何找出请求正文应该是什么样子。
首先,不要看文档。在文档中,所有字段都是可选的,并且 URL 也不正确。
最简单的方法是在本地启动 Keycloak 服务器并在 Firefox 或 Chrome 中登录管理控制台,然后按F12打开Development Mode。然后您可以在那里看到所有请求/响应。
例如,如果您想了解如何更新角色,请转到Roles主菜单上的菜单项并选择角色并更新它。您可以看到PUT请求及其正文。这会告诉您需要传入什么内容以及传入哪个 URL。
提示一下,更新时不需要传递所有内容,通常只需传递 ID 和要更新的字段即可。
| 归档时间: |
|
| 查看次数: |
2853 次 |
| 最近记录: |