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



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提出此问题,但没有任何回应。

任何帮助感谢,谢谢

更新。。。

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

据我所知,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 的方法。

最新更新