python - 使用python-keycloak登录keycloak后如何获取 token

标签 python flask oauth keycloak

我正在使用 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/

相关文章:

python - 使用 python 在 web 上部署 matlab 应用程序

Apache2 和 mod_wsgi : Truncated or oversized response headers received from daemon process

c# - OAuth C# 服务器

c# - OAuth 与 DotNetOpenAuth?

python - Tensorflow Estimator API 在评估模式下保存图像摘要

python - 如何删除 "TypeError: can' t 乘以序列与类型 'float' 的非 int ”?

python - Flaskflaskext.mysql无属性连接

oauth - OAuth 可以与手机应用程序一起使用吗?

python - 附加将我的列表变为 NoneType

python - 如何在同一查询中选择并获取所有内容的 COUNT?