使用 cUrl 通过其 REST API 配置 Keycloak

Posted

技术标签:

【中文标题】使用 cUrl 通过其 REST API 配置 Keycloak【英文标题】:Configuring Keycloak through its REST API with cUrl 【发布时间】:2021-03-30 16:16:53 【问题描述】:

我需要像 this blog post 那样配置 Keycloak 以获取 JWT 令牌,但我必须使用 cUrl 来完成。他们创建了一个客户端,然后将其更新为将access type 设置为confidentialDirect Grant Flow 设置为direct grant,并将Browser Flow 设置为browser。来自 Web UI 的 PUT 请求执行此操作有一些 uuids 他们似乎已经从无处退出。以下是有效载荷的相关部分:

"authenticationFlowBindingOverrides":"browser":"6d77c4c7-15cf-4474-9b9f-7439dbc83b83","direct_grant":"5cb10cdb-9902-4f7f-b9da-68f887c49a75"

ClientRepresentation 的文档没有帮助。它们显示所有字段都是可选的,这没有意义,并且 authenticationFlowBindingOverrides 是 Map,但 Map 的 link in their docs 已死。

有谁知道他们从哪里获得浏览器和 direct_grant 的 uuid?

PUT 有效负载中也没有任何内容将Access Type 设置为confidential

如果有人在blog post 中有 UI 步骤的 cUrl 实现,将不胜感激。

【问题讨论】:

【参考方案1】:

来自执行此操作的 Web UI 的 PUT 请求有一些 uuid 他们似乎不知从何而来。

那些 uuid 是由 keycloak 生成的,你需要调用端点来获取它们:

GET KEYCLOAK_HOST/auth/admin/realms/<YOUR_REALM>/authentication/flows

您需要从JSON 响应中解析它并获取alias: "browser" 和别名"direct grant" 的字段id

之后调用端点:

PUT KEYCLOAK_HOST/auth/admin/realms/<YOUR_REALM>/clients/<YOUR_CLIENT_ID>

使用以下有效负载:

'"publicClient":false,"clientAuthenticatorType":"client-secret","authenticationFlowBindingOverrides":"direct_grant":"<DIRECT_GRANT_ID>","browser":"<BROWSER_ID>"'

PUT 有效负载中也没有任何内容将访问类型设置为 保密。

您需要将字段publicClient 设置为false

【讨论】:

以上是关于使用 cUrl 通过其 REST API 配置 Keycloak的主要内容,如果未能解决你的问题,请参考以下文章

通过 CURL 中的 Twitter Rest API 获取多个屏幕名称的最新推文

Parse 的 REST API 和 PHP Curl 请求 - 如何

如何通过rancher REST api将容器添加到堆栈中的服务

使用rest api生成jenkins api令牌

Keycloak Admin REST API:查询超过 100 个资源对象

文档中除了 CURL Post 示例之外的 Solace Rest API 用法或示例