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