Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OAuth授权流中处理访问令牌?_Oauth_Oauth 2.0_Github Api - Fatal编程技术网

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

如何在OAuth授权流中处理访问令牌?,oauth,oauth-2.0,github-api,Oauth,Oauth 2.0,Github Api,我正在构建一个应用程序,它使用授权流。这是我第一次实现OAuth,所以我只想确保我做的一切都是正确的。我想象着这样的事情: 用户单击继续使用Github。我们调用GH url并提供前端应用重定向uri。应用程序接受代码,并将其发送到服务器。它将其交换为访问令牌,然后从API获取用户,获取id并检查数据库中是否存在该id。如果有,它将创建一个JWT令牌并发送类似[令牌,…]的响应 我希望应该是这样 问题是如果用户不存在该怎么办。在这种情况下,我还想要求用户在我的应用程序中输入用户名(以及接受ToS

我正在构建一个应用程序,它使用授权流。这是我第一次实现OAuth,所以我只想确保我做的一切都是正确的。我想象着这样的事情:

用户单击
继续使用Github
。我们调用GH url并提供前端应用重定向uri。应用程序接受
代码
,并将其发送到服务器。它将其交换为访问令牌,然后从API获取用户,获取id并检查数据库中是否存在该id。如果有,它将创建一个JWT令牌并发送类似[
令牌
]的响应

我希望应该是这样

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

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

但由于访问令牌是我的应用程序机密的一个功能,我对它是否在客户端上犹豫不决。尽管这些让我信服:

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

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

不确定GitHub的具体情况-但是一般的自我注册行为是由GitHub为您管理的。登录后,您的应用程序将收到一个带有新用户id的令牌。然后您还需要在应用程序的后端创建该用户。我的写作可能会有所帮助,但这很棘手: