Blueprint Flask. OAuthlib Google. CSRF
Краткий пересказ.
Запуск приложения происходит по адресу 192.168.0.110:5000.
При перенаправлении (из http://192.168.0.110:5000/login в http://localhost.com/authorized) происходит ошибка.
Логически этой ошибки не должно быть, ибо адрес машины и localhost.com совподают.
Буду рад любой помощи. Спасибо.
Ошибка:
authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF Warning! State not equal in request and response.
хосты:
/etc/hosts
127.0.0.1 localhost
192.168.0.110 localhost.com www.localhost.com
Некоторые настройки app.py:
...
register_blueprint_login(app)
app.config['JWT_SECRET_KEY'] = JWT_SECRET_KEY
app.config['SECRET_KEY']= APP_SECRET_KEY
app.config['SESSION_COOKIE_NAME'] = 'google-login-session'
CORS(app)
if __name__ == '__main__':
app.run(
host='192.168.0.110',
port=5000
)
Источник проблемы - /blueprints/login/google.py
login/google.py
from app import app
from config import GOOGLE_ID, GOOGLE_SECRET
from flask import Blueprint, redirect, session
from utils import get_google_host, login_required
from authlib.integrations.flask_client import OAuth
bp = Blueprint(name = 'AUTH_login',import_name= 'login',)
oauth = OAuth(app)
google = oauth.register(... # Здесь все впорядке)
@bp.route('/login')
def logsin():
google = oauth.create_client('google')
redirect_uri = 'http://localhost.com:5000/authorize' # Обратите внимание. Может быть проблема таится здесь...
return google.authorize_redirect(redirect_uri)
@bp.route('/authorize')
def authsorize():
google = oauth.create_client('google')
token = google.authorize_access_token()
resp = google.get('userinfo')
user_info = resp.json()
user = oauth.google.userinfo()
session['profile'] = user_info
session.permanent = True
return redirect('/')