我正在尝试使用 Python 通过 Admin REST API 创建 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容器)
最佳答案
我已经做到了,这样:
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'
}
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')
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
关于python-3.x - 通过 REST API 创建 Keycloak 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58604520/