【问题标题】:Configuring keycloak saml from the command line从命令行配置 keycloak saml
【发布时间】:2019-05-08 19:45:24
【问题描述】:

我已成功设置 keycloak,并且能够通过 Web 控制台为我的服务提供商手动设置 SAML 身份验证。

但是我需要自动执行此操作,到目前为止,我已经完成了两件我无法通过命令行执行的操作(使用 kcadm.sh):

  1. 我的元数据是 XML,不是 JSON 格式。创建客户端调用似乎需要 JSON。 GUI 可以很好地处理 XML。你知道解决这个问题的方法吗?
  2. 我需要禁用默认启用的“需要客户端签名”。我不知道该怎么做。

感谢您的帮助!

【问题讨论】:

  • 您可以直接从 CLI 使用管理 REST API。
  • 我知道我可以使用它,我只是不知道语法。我已经在使用它来创建领域、用户等,但我被上述两点困住了。

标签: saml keycloak


【解决方案1】:

我遇到了同样的问题。使用 Chrome 中的网络跟踪工具,我发现 Keycloak 实际上使用了一个(未记录的)转换器,该转换器首先将 XML 转换为 JSON ......所以这就是我解决这个问题的方法:

#!/bin/bash
KEYCLOAK_URL="http://mykeycloakserver.mydomain:8080"
TOKEN_URL="${KEYCLOAK_URL}/auth/realms/master/protocol/openid-connect/token"
#AUTH="Authorization: bearer $(curl -d client_id=admin-cli -d username=admin -d password=admin -d grant_type=password ${TOKEN_URL} | sed -n 's|.*"access_token":"\([^"]*\)".*|\1|p')"
AUTH="Authorization: bearer $(curl -d client_id=admin-cli -d username=admin -d password=admin -d grant_type=password ${TOKEN_URL} | jq -r '.access_token')"

CONVERTER_URL="${KEYCLOAK_URL}/auth/admin/realms/mykeycloakrealm/client-description-converter"
SAML_XML="@/tmp/saml_export/iam_saml.xml"
CLIENT_JSON=$(curl -X POST -H "${AUTH}"  -H 'content-type: application/json' ${CONVERTER_URL} --data-binary ${SAML_XML=})

CLIENTS_URL="${KEYCLOAK_URL}/auth/admin/realms/mykeycloakrealm/clients"
curl -X POST -H "${AUTH}"  -H 'content-type: application/json' ${CLIENTS_URL} -d ${CLIENT_JSON}

所以,首先调用转换器来转换你的 XML,然后使用 JSON 结果创建一个客户端。

(顺便说一句,我的代码示例包含一个注释替代方案,以防您没有'jq')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-02
    • 2020-12-21
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多