无法使用 Keycloak REST 创建角色 API
Can't create Role using Keycloak REST API
我正在尝试在 Keycloak 中向我的领域添加一个角色,但它给了我一个错误的请求响应。我的步数:
- 获取令牌使用:
curl -X POST "http://localhost:8180/auth/realms/master/protocol/openid-connect/token" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=admin&password=admin&grant_type=password&client_id=admin-cli'
- 使用以下方法获取客户端 ID:
curl -X GET http://localhost:8180/auth/admin/realms/my-realm/clients?clientId=my-client \
-H "Authorization: Bearer "$access_token \
-H 'cache-control: no-cache'
- 尝试使用 [文档][1] 添加角色:
curl -v http://localhost:8180/auth/admin/realms/my-realm/clients/[ID-from-above]/roles \
-H "Content-Type: application.json" \
-H "Authorization: Bearer "$access_token --data '{"name":"test-role"}'
当我发出最后一条命令时,我得到了错误的请求响应。我究竟做错了什么?谢谢。
https://www.keycloak.org/docs-api/5.0/rest-api/index.html#_roles_resource
你们好像很亲近
我能够按照 REST API:
创建领域级别的角色
这与您的电话之间的区别在于您正在尝试担任客户级别的角色。您对客户级别的角色有特定要求还是您只是在尝试?
如果 Realm 级别的角色满足您的要求,您可以使用以上 API。
同时检查 以确保您已按照正确的步骤设置管理员 Rest API。
您应该从您要访问的客户端获取带有 client-secret 的令牌。
token=$(
curl -X POST "http://localhost:8180/auth/realms/master/protocol/openid-connect/token" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=[USER]&password=[PASSWORD]&grant_type=password&client_id=admin-cli&client_secret=[CLIENT_SECRET]' \
| jq -r '.access_token'
)
clientID=$(
curl -X GET "http://localhost:8180/auth/admin/realms/vertical/clients?clientId=[CLIENT_NAME]" \
-H "Authorization: Bearer "${token} \
-H 'cache-control: no-cache' | jq -r '.[].id'
)
尝试使用“application/json”而不是“application.json”。
授权 header 的报价应包含令牌。
不要忘记上一个 curl 命令中的 -X POST :)
curl -X POST "http://localhost:8180/auth/admin/realms/[REALM]/clients/${clientID}/roles" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${token}" \
-d '{"name": "test-role"}'
我正在尝试在 Keycloak 中向我的领域添加一个角色,但它给了我一个错误的请求响应。我的步数:
- 获取令牌使用:
curl -X POST "http://localhost:8180/auth/realms/master/protocol/openid-connect/token" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=admin&password=admin&grant_type=password&client_id=admin-cli'
- 使用以下方法获取客户端 ID:
curl -X GET http://localhost:8180/auth/admin/realms/my-realm/clients?clientId=my-client \
-H "Authorization: Bearer "$access_token \
-H 'cache-control: no-cache'
- 尝试使用 [文档][1] 添加角色:
curl -v http://localhost:8180/auth/admin/realms/my-realm/clients/[ID-from-above]/roles \
-H "Content-Type: application.json" \
-H "Authorization: Bearer "$access_token --data '{"name":"test-role"}'
当我发出最后一条命令时,我得到了错误的请求响应。我究竟做错了什么?谢谢。
https://www.keycloak.org/docs-api/5.0/rest-api/index.html#_roles_resource
你们好像很亲近
我能够按照 REST API:
创建领域级别的角色这与您的电话之间的区别在于您正在尝试担任客户级别的角色。您对客户级别的角色有特定要求还是您只是在尝试?
如果 Realm 级别的角色满足您的要求,您可以使用以上 API。
同时检查
您应该从您要访问的客户端获取带有 client-secret 的令牌。
token=$(
curl -X POST "http://localhost:8180/auth/realms/master/protocol/openid-connect/token" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=[USER]&password=[PASSWORD]&grant_type=password&client_id=admin-cli&client_secret=[CLIENT_SECRET]' \
| jq -r '.access_token'
)
clientID=$(
curl -X GET "http://localhost:8180/auth/admin/realms/vertical/clients?clientId=[CLIENT_NAME]" \
-H "Authorization: Bearer "${token} \
-H 'cache-control: no-cache' | jq -r '.[].id'
)
尝试使用“application/json”而不是“application.json”。 授权 header 的报价应包含令牌。
不要忘记上一个 curl 命令中的 -X POST :)
curl -X POST "http://localhost:8180/auth/admin/realms/[REALM]/clients/${clientID}/roles" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${token}" \
-d '{"name": "test-role"}'