在OAuth2中,如果一个客户端不应该共享其访问令牌,那么多个客户端如何才能访问同一资源?

时间:2020-07-01 23:18:17

标签: flask oauth-2.0 authlib

我正在使用带有不和谐的oauth 2登录名的烧瓶后端创建一个React SPA。我想知道flask可用的当前用户的不一致用户ID,并使用SPA显示有关该用户的信息,例如用户名和个人资料图片。

如果我通过flask设置了登录页面,则可以通过查询当前的用户discord API来获取有关已登录用户的信息。 但是,如何获得SPA中的名称和个人资料照片?我可以将flask获得的访问令牌提供给SPA,但不建议共享令牌。

另一种方法是隐式授予流,其中SPA获取访问令牌并将其提供给flask。然后Flask可以检查谁登录了。 不建议在ouath2客户端之间共享令牌。

我不确定如何在无需用户多次登录的情况下获取烧瓶和SPA的访问令牌

1 个答案:

答案 0 :(得分:1)

这是一个设计问题。您的SPA应该通过Flask后端API获得不一致的信息。您的SPA不应直接访问discord api,而且由于cors,通常不可能直接访问第三方api。

这里是一个例子:

@app.route('/discord/profile')
def get_discord_profile():
    resp = oauth.get('/discord/profile/url')
    return jsonify(resp.json())

您的访问令牌始终由后端访问。