Создать клиент Keycloak через REST API - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь создать клиент Keycloak через Admin REST API с Python.

Я пробовал следующее:

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)

1 Ответ

0 голосов
/ 29 октября 2019

Я сделал это следующим образом:

import requests
import argparse
import ast</p>

<p>def get_token():</p>

<pre><code>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')
</code>

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", "id":"3", "name": "testclient-3", "description": "TESTCLIENT-3", "enabled": True, "redirectUris":[ "\\" ], "publicClient": True } x = requests.post(url, headers=headers, json=params) print (x) return x.content

...