Authlib 0.6+不适用于Auth0模拟和Flask

时间:2018-05-14 17:46:34

标签: python flask auth0 authlib auth0-lock

Auth0模拟直接调用on success success身份验证回调URL,跳过身份验证的初始步骤。这会导致一个问题,因为作为回调处理的一部分调用的flask / client / OAuth.authorize_access_token()需要存在会话变量_auth0_callback_,但是由于唯一的位置,因此未设置此变量,flask / client / OAuth.authorize_redirect(),在这种情况下不会被调用。

我们添加了一个hack来设置_auth0_callback_会话变量,如果它在调用flask / client / OAuth.authorize_access_token()之前不存在,但是这并不是似乎是正确的,我只是想知道我们是否做错了什么。

我们在_auth0_state_会话变量中也遇到了类似的问题,但这可能已在我现在正在测试的v0.7中得到修复。我们目前正在使用Authlib v0.6进行生产。

已使用Auth0提出此issue但未收到任何回复。

任何帮助表示赞赏,thx

... UPDATE

深入了解Authlib,对flask/client/OAuth.authorize_access_token()调用来说,如果令牌包含在授权响应中,则OAuth2Session.fetch_access_token()中不需要回调URL来获取令牌在模仿的情况下,访问令牌包含在授权响应中 - 请参阅OAuth2Session.fetch_access_token()#152。 因此,Auth0模拟的授权响应访问令牌可能不存在或者没有正确传递...

1 个答案:

答案 0 :(得分:1)

根据我的承认,Auth0接受redirect_uri参数。请查看此示例:https://github.com/lepture/auth0-python-web-app/blob/patch-1/01-Login/server.py

Flask集成是OAuth2Session的包装器,它提供authorize_redirectauthorize_access_token方法来自动处理所有内容。如果您发现高级集成无法满足您的需求,您可以随时使用OAuthClient的方法。