通过api创建用户密钥斗篷并分配client-role领域管理

时间:2019-06-03 20:54:30

标签: python rest curl keycloak

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

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

•创建一个新的领域“ admin”,例如:realm-master

•指派领域管理员来管理领域

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

当前正在使用密钥斗篷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())

但是我无法将新用户分配给client-role realm-management内部的所有角色。 我试图阅读api文档,但找不到执行命令的方法。

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

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

到目前为止,我已经花了很多时间来完成这项任务,如果有人直接做到这一点,那就太好了。如果是这样,我大概也可以解码如何阅读密钥库文档以解决以后的问题。

非常感谢您的反馈。

1 个答案:

答案 0 :(得分:0)

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

您可以像这样创建领域角色

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