授权模式总结
前面几节已经通过代码介绍了OAuth2.0四种授权模式的简单使用,现在来总结一下四种授权模式的特点
授权码模式
- 通过前端渠道客户获取授权码
- 通过后端渠道,客户使用authorization code去交换access Token和可选的refresh token
- 假定资源拥有者和客户在不同的设备上
- 最安全的流程,因为令牌不会传递经过user-agent
密码模式
- 使用用户名密码登录的应用,例如桌面App
- 使用用户名/密码作为授权方式从授权服务器上获取access token
- 一般不支持refresh tokens
- 假定资源拥有者和公开客户在相同设备上
简化模式
- 不需要第三方客户端服务器参与,直接在浏览器中向授权服务器申请令牌
- Access Token直接从授权服务器返回(只有前端渠道)
- 适用于公开的浏览器单页应用(纯静态页面)
- 不支持refresh tokens
- 假定资源所有者和公开客户应用在同一个设备上
- 最容易受安全攻击
客户端凭证
- 第三方客户端仅代表自己不是代表用户去申请授权,所以多个用户可能对应同一个令牌
- 适用于服务器间通信场景
- 只有后端渠道,使用客户凭证获取一个access token
- 因为客户凭证可以使用对称或者非对称加密,该方式支持共享密码或者证书
授权模式选型
参考内容:
《微服务架构实战160讲》——杨波