【问题标题】:Flask Dance oauth on different domains不同域上的 Flask Dance oauth
【发布时间】:2020-06-12 11:17:34
【问题描述】:

我正在为不同的服务实现 Oauth,并且我正在使用“OAuth2ConsumerBlueprint”(使用 flask-dance)。 我正在考虑 Flask-OAuth,但我认为我最终会遇到与 Flask-Dance 相同的问题。 我打算做的是:

  1. 用户继续“.mydomain.com”

  2. 例如用户点击通过FB登录

  3. 用户访问 social.mydomain.com(因此授权 URL 始终相同)

  4. 登录后的用户应该被带到“.mydomain.com”

看起来我找不到办法。这应该是可行的。我试图解析出不同的信息,例如:

打印(请求)

打印(request.referrer)

我什至使用过:@oauth_authorized.connect 打印所有信息,看看我是否可以收集一些额外的信息以重复使用

print(vars(request))
print(vars(blueprint))
print(vars(token))
print(session)

我还尝试在 GET 参数中添加一个“foo”变量,以查看是否可以从 social.mydomain.com 再次读取它,但我不能。不知道如何将用户重定向回原来的 .mydomain.com

关于如何在特定子域上完成身份验证(因此我只需要将一个子域列入白名单)然后将用户重定向到他自己的域,这里有任何建议吗?

这就是我设置一切的方式:

facebook = OAuth2ConsumerBlueprint(
    "fb_social", __name__, url_prefix='/fb', 
    client_id=FB_CLIENT_ID,
    client_secret=FB_SECRET,
    scope='email',
    base_url="https://graph.facebook.com/",
    token_url="https://graph.facebook.com/oauth/access_token",
    authorization_url="https://www.facebook.com/dialog/oauth",
    redirect_to='fb_social.social_facebook',
)

非常感谢

【问题讨论】:

  • 我通过在 get 参数中使用“next”并将其保存到用户会话中来解决它。用户登录后,我只需通过会话 url 将用户重定向到原始客户网站。

标签: flask flask-oauthlib flask-dance


【解决方案1】:

挂钩oauth_authorized signal,并返回一个重定向到您希望用户去的位置。

【讨论】:

    猜你喜欢
    • 2023-01-24
    • 2019-02-10
    • 2018-08-08
    • 1970-01-01
    • 2018-12-26
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    相关资源
    最近更新 更多