【问题标题】:Create user keycloak through api and assigning client-role realm-managment通过 api 创建用户 keycloak 并分配客户端角色领域管理
【发布时间】:2019-10-19 10:12:40
【问题描述】:

使用 keycloak rest api 创建以下内容。

• 创建一个新领域(托管)

• 创建一个新领域“管理员”,例如:领域主

• 为领域管理员分配领域管理角色

尝试为我使用 keycloak 的应用程序编写全自动 CI 解决方案。我在测试期间自动在 k8s 中重新创建 keycloak 服务器以 100% 确保一切始终相同。

目前正在使用 keycloak 5。

import requests

URL = "http://127.0.0.1:8081/auth/"
openid_url = URL + "realms/master/protocol/openid-connect/token"
user_url = URL + "admin/realms/master/users"


data = {
    "username": "keycloak",
    "password": "keycloak-pw",
    "grant_type": "password",
    "client_id": "admin-cli",
}

token_request = requests.post(openid_url, data=data)

token_raw = token_request.json()
AUTH_TOKEN = token_raw.get("access_token")

user_data = {
    "username": "realm-master2",
    "enabled": "true",
    "credentials": [{"type": "password", "value": "super-secret-password"}],
}

headers = {"Authorization": "Bearer " + AUTH_TOKEN, "Content-Type": "application/json"}

user_request = requests.post(user_url, json=user_data, headers=headers)
print(f"Got status code: {user_request} with data  \n")
print(user_request.json())

但我无法将我的新用户分配给客户端角色领域管理中的所有角色。 我试图阅读 api 文档,但我找不到如何执行命令。

我尝试使用 POST /{realm}/users/{id}/role-mappings/realm 的文档 但我不明白身体应该是什么样子,或者我应该使用这个端点。 找到:Keycloak - using admin API to add client role to user 但没有管理那个以太。

如果有人知道使用 api 执行的确切命令,请分享。

到目前为止,我已经为这项任务投入了很多时间,如果有人能直截了当地做这件事,那就太好了。如果是这样,我可能也可以解码如何阅读 keycloak 文档以了解未来的问题。

感谢您的任何反馈。

【问题讨论】:

    标签: python rest curl keycloak


    【解决方案1】:

    如果想要自动安装和配置 Keycloak,你可以改用admin-cli

    您可以创建类似这样的领域角色

    $ kcadm.sh create roles -r demorealm ...
    

    【讨论】:

    • 遗憾的是我做不到,我的计划是将此脚本转换为 LUA 并在 HELM3 中使用,我假设将发生的 LUA 集成不会有可能与外部脚本交谈。我想这是可能的,但同时它会迫使我将 admin-cli 作为我其他代码的一部分发送,我不希望被强迫这样做。
    • 不确定 LUA,但 kcadm.sh 是 keycloak 的一部分,您可以将它们作为 Dockerfile 入口点的一部分运行。
    • 抱歉回复慢。很清楚我可以把它作为 kubernetes 中的一个辅助功能,并使用 kcadm.sh 来执行这些任务。但我不想将此逻辑从 sidecar 转移到使用 helm3 中可用的新模板功能。所以我想移动逻辑并执行纯粹的 API 调用来创建一个或两个角色和一个客户端,这样我就可以将客户端密码拉到我的 pod 中,而不必在我的 pod 中存储任何密码。我只需要一个 helm 用户可以访问和使用的 kubernetes 机密,但如果我的 pod 被黑客入侵,他们将无法拥有我的 keycloak 集群。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 2018-09-23
    • 2017-08-30
    • 2021-11-01
    • 2021-01-03
    相关资源
    最近更新 更多