我对Oauth 2.0授予类型进行了很多研究,并且坚持使用设计选择,为此我需要一些投入:
我想到的设计如下:
(1)客户端(例如,移动应用程序)打开浏览器,进入用户选择并在此进行身份验证的社交服务的授权页面。该请求包含一个设置为我自己的服务器的众所周知的重定向地址,以及该移动应用的实际重定向地址作为状态。
(2)客户端进行身份验证,并使用检索授权码的JS脚本重定向到我的网站API上的登录页面。
(3)授权代码被发布到我的API上的另一个URL,该URL使用客户端机密执行访问令牌的交换。
(4)服务器与社交提供者进行通信,以获取必要的信息以找到关联的用户(如果有)。
(5)服务器根据此信息为用户生成一个新令牌,从状态中提取用于重定向用户的URI,并按照Oauth隐式授权中指定的片段中的访问令牌执行重定向。
用户永远不会看到社交网站的授权码或访问令牌,并且从其角度看,它是隐式授予。
我想了解这种实现是否合理。我知道隐式授权被认为是有缺陷的,但是严格来说,这是隐式授权流与授权流的混合体。
您对此有何评论,或是否引用了该主题的最佳做法?