如何处理OAuth授权流程中的访问令牌?

时间:2019-10-23 08:11:41

标签: oauth oauth-2.0 github-api

我正在构建一个使用Github OAuth的应用,该应用使用了授权流程。这是我第一次实现OAuth,因此我想确保自己做的一切正确。我在想像这样的东西:

用户单击Continue with Github。我们称呼GH网址,并提供一个前端应用重定向uri。该应用程序接受code并将其发送到服务器。它将它交换为访问令牌,然后从API获取用户,获取ID并检查数据库中是否存在该ID。如果是这样,它将创建一个JWT令牌,并发送类似[token...]的响应。

我希望是这样。

问题是如果用户不存在该怎么办。在这种情况下,我还想向用户询问我的应用程序中的用户名(以及接受ToS等)。因此,我有两种选择:发回代码或发送访问令牌。

如果我发送代码,则用户填写用户名后,服务器将再次查询访问令牌。对我来说似乎是重复的。

但是,由于访问令牌是我的应用程序密码的功能,因此我很犹豫将它放在客户端上。尽管这些使我信服:

  • 访问令牌应该是应用程序密码的签名,并且不应泄露应用程序密码(对吗?)
  • 我们可以假设应用store是安全的,因为,这是应用的状态
  • 连接为SSL

那么什么是最佳实践?干杯!

1 个答案:

答案 0 :(得分:1)

不确定GitHub的详细信息-但一般的Self Sign Up行为是GitHub可以为您管理的。登录后,您的应用程序将收到带有新用户ID的令牌。然后,您还需要在应用的后端创建该用户。我的文章可能会有所帮助-但这很棘手:https://authguidance.com/2017/10/02/user-data/