尝试登录Keycloak管理WS

8
我需要通过可访问路径的管理WS在Keycloak中配置领域。
http://KeycloakServer:8081/auth/admin/realms

在Postman中,我执行了以下请求。
URL: http://KeycloakServer:8081/auth/admin/realms 方法: POST 正文:
{
    "enabled": true,
    "id": "TestRealm",
}

我收到了一个401 Unauthorized的响应,所以我认为有必要对Admin WS进行身份验证。但是在文档中,我找不到任何关于所需身份验证类型和语法的信息。您知道如何对Keycloak WS进行身份验证吗?
谢谢。
2个回答

16

https://hostname:8080/auth/realms/master/protocol/openid-connect/token 发送 POST 请求。

Content-Type 设置为 application/x-www-form-urlencoded

并将以下内容放入请求体中:

username=<username>&password=<password>&client_id=admin-cli&grant_type=password

在版本1.9.7中,我正在执行完全相同的步骤。我获取了access_token,然后将其放入标头中,如Authorization: Bearer mytoken,但我仍然收到401未经授权的错误。我是否遗漏了什么? - Turbut Alin
我尝试了这个解决方案,它有效。可能它对你不起作用的一个原因是令牌在60秒后过期了。所以请重试。 - johnwick0831

2
这个方法可以帮你解决问题。发送一个POST请求到以下URI:/auth/realms/master/protocol/openid-connect/token,并设置以下Headers:
  1. username=(管理员用户名)
  2. password=(管理员密码)
  3. client_id=security-admin-console
  4. grant_type=password
  5. Content-Type=application/x-www-form-urlencoded
发送请求后会返回JSON数据,并含有access_token。将该token作为Authorization Bearer Token添加到你的请求中,就可以正常使用了。
如果遇到任何问题,请告诉我。

1
感谢您的回复@aksappy!但是,这是不正确的,因为自1.7.0以来,security-admin-console默认已禁用,并且这些字段不是标头,而是请求正文的一部分。我已经提供了一个新的答案。 - Andrea Scarpino
如何启用安全管理控制台? - Olivier Masseau

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