Authlib 0.6+ не работает с олицетворением Auth0 и Flask - PullRequest
0 голосов
/ 14 мая 2018

Auth0 олицетворение напрямую вызывает URL-адрес обратного вызова при успешной аутентификации, пропуская начальный шаг аутентификации. Это вызывает проблему, потому что flask / client / OAuth.authorize_access_token (), который вызывается как часть обработки обратного вызова, требует наличия переменной сеанса _auth0_callback_, но эта переменная не задана, поскольку единственное место, где она установлена, - flask /client/OAuth.authorize_redirect (), в этой ситуации не вызывается.

Мы добавили хак для установки переменной сеанса _auth0_callback_, если она не существует непосредственно перед вызовом flask / client / OAuth.authorize_access_token (), но это не так, и мне просто интересно если мы делаем что-то не так.

Мы также столкнулись с аналогичной проблемой с переменной сеанса _auth0_state_, но это могло быть исправлено в v0.7, которую я сейчас тестирую. В настоящее время мы используем Authlib v0.6 в производстве.

подняли эту проблему с Auth0, но не получили никакого ответа.

Любая помощь приветствуется, спасибо

UPDATE ...

Если заглянуть глубже в Authlib, похоже, что для вызова flask/client/OAuth.authorize_access_token() URL-адрес обратного вызова не требуется в OAuth2Session.fetch_access_token() для получения токена, если токен включен в ответ авторизации, и в некотором смысле имеет смысл, что токен доступа включен в ответ авторизации в случае олицетворения - см. OAuth2Session.fetch_access_token () # 152 . Так что, возможно, токен доступа для ответа авторизации от олицетворения Auth0 не существует или не проходит должным образом через ...

1 Ответ

0 голосов
/ 15 мая 2018

Согласно моему подтверждению, Auth0 принимает параметр redirect_uri.Посмотрите на этот пример: https://github.com/lepture/auth0-python-web-app/blob/patch-1/01-Login/server.py


Интеграция с Flask - это оболочка OAuth2Session, которая предоставляет методы authorize_redirect и authorize_access_token для автоматической обработки всего за вас.Если вы обнаружите, что интеграция высокого уровня не может удовлетворить ваши потребности, вы всегда можете использовать методы OAuthClient.

...