将社交授权代码交换为访问令牌

时间:2019-11-18 13:50:23

标签: oauth oauth-2.0

我对Oauth 2.0授予类型进行了很多研究,并且坚持使用设计选择,为此我需要一些投入:

  • 在我的应用上,客户仅将社交服务用于身份验证。
  • 用户可以选择直接使用密码登录。
  • 用户需要我网站上的令牌才能与我的API交互。
  • 我希望能够使用现有的Oauth客户端库。
  • 我希望社交登录步骤尽可能安全。
  • 我同时控制服务器和应用程序。

我想到的设计如下:

(1)客户端(例如,移动应用程序)打开浏览器,进入用户选择并在此进行身份验证的社交服务的授权页面。该请求包含一个设置为我自己的服务器的众所周知的重定向地址,以及该移动应用的实际重定向地址作为状态。

(2)客户端进行身份验证,并使用检索授权码的JS脚本重定向到我的网站API上的登录页面。

(3)授权代码被发布到我的API上的另一个URL,该URL使用客户端机密执行访问令牌的交换。

(4)服务器与社交提供者进行通信,以获取必要的信息以找到关联的用户(如果有)。

(5)服务器根据此信息为用户生成一个新令牌,从状态中提取用于重定向用户的URI,并按照Oauth隐式授权中指定的片段中的访问令牌执行重定向。

用户永远不会看到社交网站的授权码或访问令牌,并且从其角度看,它是隐式授予。

我想了解这种实现是否合理。我知道隐式授权被认为是有缺陷的,但是严格来说,这是隐式授权流与授权流的混合体。

您对此有何评论,或是否引用了该主题的最佳做法?

0 个答案:

没有答案