#python #flask #oauth #keycloak
#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, но без токена, приложению всегда нужно пройти через метод keycloak. Есть ли какая-либо другая возможность получить токен, кроме создания собственной формы входа и передачи логина и пароля в метод keycloak_open_id.token(login, password)?
Ответ №1:
Кажется, вы ищете grant_type=password
поток oauth, вы можете проверить документ keycloak о том, как это сделать.
В основном:
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"
Комментарии:
1. Он искал способ получить токен после входа со страницы входа, здесь вы указываете имя пользователя и пароль в запросе