No *_*ame 2 python-3.x keycloak keycloak-services
我正在尝试使用 Python 通过 Admin REST API 创建 Keycloak 客户端。
我尝试了以下方法:
进口请求
导入参数解析
进口AST
def get_token():
url = 'http://localhost:9003/auth/realms/master/protocol/openid-connect/token'
参数 = {
'client_id': 'admin-cli',
'grant_type': '密码',
'用户名':'管理员',
'密码':'密码'
}
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'
标题 = {
'内容类型':'应用程序/json',
'授权':'承载'+ str(get_token)
}
参数 = {
"clientId":"testclient-3",
#"id":"3",
#"name": "testclient-3",
#"description": "TESTCLIENT-3",
#"启用": 真,
#"redirectUris":[ "\\" ],
#"publicClient": 真
}
返回 requests.post(url, headers, params, verify=False)
x = create_client()
打印 (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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |