通过REST API创建Keycloak客户端

时间:2019-10-29 09:25:50

标签: python-3.x keycloak keycloak-services

我正在尝试通过Admin REST API和Python创建Keycloak客户端。

我尝试了以下操作:

import requests
import argparse
import ast

def get_token():

    url = 'http://localhost:9003/auth/realms/master/protocol/openid-connect/token'

    params = {

        'client_id': 'admin-cli',
        'grant_type': 'password',
        'username' : 'admin',
        'password': 'password'
    }

    return ast.literal_eval(requests.post(url, params, verify=False).content.decode("utf-8"))['access_token']
    #return requests.post(url, params, verify=False).content.decode('utf-8')

def create_client():

    url ='http://localhost:9003/auth/admin/realms/master/clients'

    headers = {
                'content-type': 'application/json',
                'Authorization' : 'bearer '+ str(get_token)
                }

    params = {
                                "clientId":"testclient-3",
                                #"id":"3",
                                #"name": "testclient-3",
                                #"description": "TESTCLIENT-3",
                                #"enabled": True,
                                #"redirectUris":[ "\\" ],
                                #"publicClient": True


            }

    return requests.post(url, headers, params, verify=False)

x = create_client()
print (x)

我正在获取401 HTTP代码,有人可以帮助我吗?

谢谢。

PS:9003映射到8080(我正在使用Keycloak docker容器)

1 个答案:

答案 0 :(得分:1)

我已经做到了,

import requests
import argparse
import ast

def get_token():

Dim csb = New SqlConnectionStringBuilder(cs)
csb.ApplicationName = "all my logging info..."

def create_client():

url = 'http://localhost:9003/auth/realms/master/protocol/openid-connect/token' params = { 'client_id': 'admin-cli', 'grant_type': 'password', 'username' : 'admin', 'password': 'password' } x = requests.post(url, params, verify=False).content.decode('utf-8') print (x) print ('\n') return ast.literal_eval(x)['access_token'] #return requests.post(url, params, verify=False).content.decode('utf-8')