如何在OAuth授权流中处理访问令牌?
我正在构建一个应用程序,它使用授权流。这是我第一次实现OAuth,所以我只想确保我做的一切都是正确的。我想象着这样的事情: 用户单击如何在OAuth授权流中处理访问令牌?,oauth,oauth-2.0,github-api,Oauth,Oauth 2.0,Github Api,我正在构建一个应用程序,它使用授权流。这是我第一次实现OAuth,所以我只想确保我做的一切都是正确的。我想象着这样的事情: 用户单击继续使用Github。我们调用GH url并提供前端应用重定向uri。应用程序接受代码,并将其发送到服务器。它将其交换为访问令牌,然后从API获取用户,获取id并检查数据库中是否存在该id。如果有,它将创建一个JWT令牌并发送类似[令牌,…]的响应 我希望应该是这样 问题是如果用户不存在该怎么办。在这种情况下,我还想要求用户在我的应用程序中输入用户名(以及接受ToS
继续使用Github
。我们调用GH url并提供前端应用重定向uri。应用程序接受代码
,并将其发送到服务器。它将其交换为访问令牌,然后从API获取用户,获取id并检查数据库中是否存在该id。如果有,它将创建一个JWT令牌并发送类似[令牌
,…
]的响应
我希望应该是这样
问题是如果用户不存在该怎么办。在这种情况下,我还想要求用户在我的应用程序中输入用户名(以及接受ToS等)。所以我有两个选择:发回代码或发送访问令牌
如果我发送代码,一旦用户填写用户名,服务器将再次查询访问令牌。对我来说似乎是重复的
但由于访问令牌是我的应用程序机密的一个功能,我对它是否在客户端上犹豫不决。尽管这些让我信服:
- 访问令牌应该是应用程序机密的签名,并且不应该泄露应用程序机密(对吗?)
- 我们可以假设app
是安全的,因为这是app的状态store
- 连接是SSL
那么最佳实践是什么?干杯 不确定GitHub的具体情况-但是一般的自我注册行为是由GitHub为您管理的。登录后,您的应用程序将收到一个带有新用户id的令牌。然后您还需要在应用程序的后端创建该用户。我的写作可能会有所帮助,但这很棘手: