我正在使用 flask 构建应用程序并使用 keycloak 进行授权。
from flask import Flask, session, request
from keycloak import KeycloakOpenID
app = Flask(__name__)
app.secret_key = 's_k'
keycloak_open_id = KeycloakOpenID(server_url="http://localhost:8080/auth/",
client_id="Centrum",
realm_name="myrealm",
client_secret_key="c_k")
def login_required(func):
@wraps(func)
def decorated(*args, **kwargs):
// validate token
return func('2', *args, **kwargs)
return decorated
@app.route('/login')
def login():
url = keycloak_open_id.auth_url('http://localhost:5555/auth')
# how to get a token and assign it to session['token']?
return redirect(url, code=302)
@app.route('/home')
@login_required
def home():
return 'Base URL!'
当我登录并可以转到/home,但没有 token 时,应用程序始终需要通过 keycloak 的方法。除了制作自己的登录表单并将登录名和密码传递给 keycloak_open_id.token(login, password) 方法之外,是否还有其他获取 token 的方法?
最佳答案
似乎你在寻找grant_type=password
oauth 流程,你可以检查keycloak's doc怎么做。
基本上:
curl \
-d "client_id=myclient" \
-d "client_secret=40cc097b-2a57-4c17-b36a-8fdf3fc2d578" \
-d "username=user" \
-d "password=password" \
-d "grant_type=password" \
"http://localhost:8080/auth/realms/master/protocol/openid-connect/token"
关于python - 使用python-keycloak登录keycloak后如何获取 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63525579/