第 2 章 admin REST API
红帽构建的 Keycloak 附带了一个功能齐全的 Admin REST API,以及管理控制台提供的所有功能。
若要调用 API,您需要获取具有适当权限的访问令牌。服务器管理指南 中描述了所需的权限。
您可以使用红帽构建的 Keycloak 为应用程序启用身份验证来获取令牌;请参阅 保护应用程序和服务指南。您还可以使用直接访问授权来获取访问令牌。
2.1. 使用 CURL 的示例 复制链接链接已复制到粘贴板!
2.1.1. 使用用户名和密码进行身份验证 复制链接链接已复制到粘贴板!
以下示例假设您使用 master 域中的 密码 创建了 admin 用户,如 Getting Started Guide 指南 所示。
流程
使用用户名
admin和密码,获取 realmmaster中用户的访问令牌:curl \ -d "client_id=admin-cli" \ -d "username=admin" \ -d "password=password" \ -d "grant_type=password" \ "http://localhost:8080/realms/master/protocol/openid-connect/token"注意默认情况下,这个令牌在 1 分钟内过期
结果将是 JSON 文档。
-
通过提取
access_token属性的值来调用所需的 API。 通过对 API 的请求的
Authorization标头中包含值来调用 API。以下示例演示了如何获取 master 域的详情:
curl \ -H "Authorization: bearer eyJhbGciOiJSUz..." \ "http://localhost:8080/admin/realms/master"
2.1.2. 使用服务帐户进行身份验证 复制链接链接已复制到粘贴板!
要使用 client_id 和 client_secret 对 Admin REST API 进行身份验证,请执行此流程。
流程
确保客户端已配置如下:
-
client_id是 属于 realm master的机密客户端 -
client_id启用了Service Accounts Enabled选项 client_id有一个自定义"Audience"映射程序-
Includes Client Audience:
security-admin-console
-
Includes Client Audience:
-
-
检查
client_id是否在"服务帐户角色"选项卡中分配了角色"admin"。
curl \
-d "client_id=<YOUR_CLIENT_ID>" \
-d "client_secret=<YOUR_CLIENT_SECRET>" \
-d "grant_type=client_credentials" \
"http://localhost:8080/realms/master/protocol/openid-connect/token"