身份认证系统OAuth2的四种模式

一、理解什么是OAuth2

是开放授权的一个标准,允许用户授权B应用不提供帐号密码的方式去访问该用户在A应用服务器上的某些特定资源。
例子:咕咚app通过微信号方式登录,获取到用户的微信名和微信头像等资料。

二、OAuth2四种授权模式

2.1 授权码模式

授权码模式(authorization code)是功能最完整、流程最严密的授权模式,code保证了token的安全性,即使code被拦截,由于没有app_secret,也是无法通过code获得token的。

2.1.1 角色行为与功能
  • 资源所有者
    只需要允许或拒绝第三方应用获得授权

  • 第三方应用
    申请成为资源服务器的第三方应用
    获取资源服务器提供的资源

  • 授权服务器
    提供授权许可code、令牌token等

  • 资源服务器
    提供给第三方应用注册接口,需要提供给第三方应用app_id和app_secret
    提供给第三方应用开放资源的接口

2.1.2 授权码模式授权方式顺序图
OAuth2.png

2.2隐式授权模式/简化模式

和授权码模式类似,只不过少了获取code的步骤,是直接获取令牌token的,适用于公开的浏览器单页应用,令牌直接从授权服务器返回,不支持刷新令牌,且没有code安全保证,令牌容易因为被拦截窃听而泄露。

2.3密码模式

使用用户名/密码作为授权方式从授权服务器上获取令牌,一般不支持刷新令牌。

2.4客户端凭证模式

一般用于资源服务器是应用的一个后端模块,客户端向认证服务器验证身份来获取令牌。

推荐阅读更多精彩内容