如何处理 OAuth 授权流程中的访问令牌?
How to handle access token in OAuth authorization flow?
我正在构建一个使用 Github OAuth 的应用程序,它使用授权流程。这是我第一次实施 OAuth,所以我只想确保我做的一切都是正确的。我在想象这样的事情:
用户点击Continue with Github
。我们调用 GH url 并提供前端应用程序重定向 uri。该应用程序接受 code
并将其发送到服务器。它用它交换访问令牌,然后从 API 获取用户,获取 ID 并检查它是否存在于数据库中。如果是,它会创建一个 JWT 令牌并发送类似 [token
、...
].
的响应
我希望它应该是这样。
问题是如果用户不存在怎么办。在那种情况下,我还想询问用户在我的应用程序中的用户名(以及接受 ToS 等)。所以我有两个选择:发回代码或发送访问令牌。
如果我发送代码,一旦用户填写了用户名,服务器将再次查询访问令牌。对我来说似乎是重复的。
但由于访问令牌是我的应用程序机密的函数,我对它是否在客户端犹豫不决。尽管这些说服了我:
- access token 应该是 app secret 的签名,不应该泄露 app secret(对吧?)
- 我们可以假设应用程序
store
是安全的,因为它是应用程序的状态
- 连接是 SSL
那么最佳做法是什么?干杯!
不确定 GitHub 具体情况 - 但一般的自助注册行为是为了 GitHub 为您管理。登录后,您的应用程序将收到一个带有新用户 ID 的令牌。然后,您还需要在应用的后端创建该用户。我的文章可能会有所帮助 - 虽然它很棘手:https://authguidance.com/2017/10/02/user-data/
我正在构建一个使用 Github OAuth 的应用程序,它使用授权流程。这是我第一次实施 OAuth,所以我只想确保我做的一切都是正确的。我在想象这样的事情:
用户点击Continue with Github
。我们调用 GH url 并提供前端应用程序重定向 uri。该应用程序接受 code
并将其发送到服务器。它用它交换访问令牌,然后从 API 获取用户,获取 ID 并检查它是否存在于数据库中。如果是,它会创建一个 JWT 令牌并发送类似 [token
、...
].
我希望它应该是这样。
问题是如果用户不存在怎么办。在那种情况下,我还想询问用户在我的应用程序中的用户名(以及接受 ToS 等)。所以我有两个选择:发回代码或发送访问令牌。
如果我发送代码,一旦用户填写了用户名,服务器将再次查询访问令牌。对我来说似乎是重复的。
但由于访问令牌是我的应用程序机密的函数,我对它是否在客户端犹豫不决。尽管这些说服了我:
- access token 应该是 app secret 的签名,不应该泄露 app secret(对吧?)
- 我们可以假设应用程序
store
是安全的,因为它是应用程序的状态 - 连接是 SSL
那么最佳做法是什么?干杯!
不确定 GitHub 具体情况 - 但一般的自助注册行为是为了 GitHub 为您管理。登录后,您的应用程序将收到一个带有新用户 ID 的令牌。然后,您还需要在应用的后端创建该用户。我的文章可能会有所帮助 - 虽然它很棘手:https://authguidance.com/2017/10/02/user-data/