如何使用curl从Keycloak获取客户端密钥?

7
我已经设置了具有机密访问类型和生成客户端密钥的客户端的Keycloak。现在我需要通过命令行获取客户端密钥。我该如何实现?
Keycloak运行在一个Docker容器中。我尝试适应类似问题,它是针对使用Python的,但我甚至无法首先获得令牌。
1个回答

14

您需要使用以下curl命令获取realm为myrealm的访问令牌

curl http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=password&username=testuser&password=test123&client_id=admin-cli'

从上面的输出中获取access_token

使用以下方法获取客户端及其ID:

curl   http://localhost:8080/auth/admin/realms/myrealm/clients -H 'Content-Type: application/json' -H  'Authorization: Bearer <<ACCESS_TOKEN>>'

从输出中获取id,类似于这样的某些内容"id":"e65ba232-08ff-4f9b-84a6-bd6147340dfd"

然后使用以下命令获取客户端密钥

curl  http://localhost:8080/auth/admin/realms/myclient/clients/e65ba232-08ff-4f9b-84a6-bd6147340dfd/client-secret -H 'Content-Type: application/json' -H  'Authorization: Bearer <<ACCESS_TOKEN>>'

输出结果会类似于这样

{"type":"secret","value":"9a16ceb5-1f26-4812-ae4d-9e8336efef91"}

1
管理员令牌需要通过以下命令获取:/auth/realms/master/protocol/openid-connect/token -H 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'client_id=admin-cli' \ --data-urlencode 'grant_type=password' \ --data-urlencode 'scope=openid' \ --data-urlencode 'username=admin' \ --data-urlencode 'password=<password>' - Soumen Ghosh
1
对于最新版本的Keycloak,您必须从所有URL中省略'auth'部分。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接