使用 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
设置为confidential
,Direct 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将容器添加到堆栈中的服务