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模拟的授权响应访问令牌可能不存在或者没有正确传递...
答案 0 :(得分:1)
根据我的承认,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的方法。