OAuth2 四种认证模式
授权码模式
角色行为与功能
-
资源所有者
只需要允许或拒绝第三方应用获得授权 -
第三方应用
申请成为资源服务器的第三方应用
获取资源服务器提供的资源 -
授权服务器
提供授权许可code、令牌token等 -
资源服务器
提供给第三方应用注册接口,需要提供给第三方应用app_id和app_secret
提供给第三方应用开放资源的接口
授权码模式授权方式顺序图

隐式授权模式/简化模式
简化模式相对于授权码模式省略了,提供授权码,然后通过服务端发送授权码换取AccessToken的过程。
client请求资源被浏览器转发至授权服务器
浏览器向资源拥有者索要授权,之后将用户授权发送给授权服务器
授权服务器将AccessToken以Hash的形式存放在重定向uri的fargment中发送给浏览器
浏览器访问重定向URI
资源服务器返回一个脚本,用以解析Hash中的AccessToken
浏览器将Access Token解析出来
将解析出的Access Token发送给client

密码模式
密码模式是用户直接将自己的用户名密码交给client,client用用户的用户名密码直接换取AccessToken。一般不支持刷新令牌。

用户将认证密码发送给client
client拿着用户的密码向授权服务器请求Access Token
授权服务器将Access Token和Refresh Token发送给client
这种模式十分简单,但是却意味着直接将用户敏感信息泄漏给了client,因此这就说明这种模式只能用于client是我们自己开发的情况下。因此密码模式一般用于我们自己开发的,第一方原生App或第一方单页面应用。
客户端凭证模式(client credentials)
一般用于资源服务器是应用的一个后端模块,客户端向认证服务器验证身份来获取令牌
这是一种最简单的模式,只要client请求,我们就将AccessToken发送给它。
client向授权服务器发送自己的身份信息,并请求AccessToken
确认client信息无误后,将AccessToken发送给client
这种模式是最方便但最不安全的模式。因此这就要求我们对client完全的信任,而client本身也是安全的。因此这种模式一般用来提供给我们完全信任的服务器端服务。在这个过程中不需要用户的参与。
posted on 2021-05-30 08:48 TrustNature 阅读(679) 评论(0) 收藏 举报
浙公网安备 33010602011771号