Con l'arresto imminente del supporto di Google per OpenID 2, chiunque utilizzi una libreria conveniente come Flask-Googleauth dovrà migrare. C'è una libreria Flask per OpenID Connect, chiamata flask-oidc. Sfortunatamente, non sembrano esserci informazioni su come usarlo. Ho cercato domande SO contrassegnate con flask
e openid-connect
, ma ho trovato zero, quindi questa domanda.Basic Flask OpenID Connect esempio
Ecco quello che ho messo insieme come uso proof-of-concept di flask-oidc. Si basa su flask-oidc's app.py file:
"""
Flask app for testing the OpenID Connect extension.
"""
from flask import Flask
from flask.ext.oidc import OpenIDConnect
def index():
return "too many secrets", 200, {
'Content-Type': 'text/plain; charset=utf-8'
}
def create_app(config, oidc_overrides=None):
app = Flask(__name__)
app.config.update(config)
if oidc_overrides is None:
oidc_overrides = {}
oidc = OpenIDConnect(app, **oidc_overrides)
app.route('/')(oidc.check(index))
return app
if __name__ == '__main__':
APP = create_app({
'OIDC_CLIENT_SECRETS': './client_secrets.json',
'SECRET_KEY': 'secret'})
APP.run(host="127.0.0.1", port=8080, debug=True)
Dopo la registrazione la mia domanda come descritto here, questo invia con successo l'utente di Google per l'autenticazione, e li restituisce a http://127.0.0.1:8080/oidc_callback
, che poi li reindirizza a https://127.0.0.1:8080/
, ma che poi reindirizza l'utente indietro a Google per l'autenticazione, creando un ciclo di reindirizzamento.
La mia domanda, ovviamente, è semplice: come posso ottenere un utente autenticato per vedere quella pagina indice?
Grazie per questo. Ho successo eseguendo la suite Nosetest in flask-oidc, ma ho ripetutamente ricevuto un errore di disallineamento redirect_uri da Google, con il messaggio "http: // localhost: 8080/oidc_callback non corrispondente a un URI di reindirizzamento registrato." La suite di test client.secrets elenca l'URI di reindirizzamento come http: // localhost: 5000/oauth2callback. Nessuno dei due ha funzionato per me, perché li stavo modificando e eseguendo il codice pochi minuti dopo. Quando ho cambiato le credenziali e re-cercato ore dopo, ha funzionato. –