问题域

开放系统间授权

image-20221028082756181

账号密码

不安全

image-20221028084641231

万能钥匙

适用于公司内部

image-20221028084824009

特殊令牌

核心挑战是令牌的生命周期管理

image-20221028084935348

微服务安全

核心是 Token

image-20221028085231664

OAuth2

最简向导

image-20221101230926646

正式定义

Token 是核心,可类比为仆从钥匙(给应用授予有限的访问权限,让应用代表用户去访问用户数据)

image-20221101231259317

优劣

主要优势

OAuth2 使用代理授权的方式解决密码共享反模式问题

image-20221101232655960

主要劣势

OAuth2 不是认证协议,而是一个代理授权框架

OAuth2 提供一个宽泛的协议框架,具体安全场景需要定制

image-20221101232901537

主要角色

image-20221101233232518

主要术语

image-20221101233407232

image-20221101233546772

Token 类型

image-20221101235646089

常见误区

image-20221101235819650

典型 Flow

https://www.rfc-editor.org/rfc/rfc6749

Authorization Code Flow

最复杂 + 最安全 + 应用最广泛

image-20221102000540824

Implicit Grant Flow

减少了授权码兑换的过程(通过 Script 解析 Access Token),适用于单页应用(无后端)

image-20221102001550406

Resource Owner Password Credentials Flow

适用于公司内部应用等风险可控的场景

image-20221102001311093

Client Credentials Flow

连资源所有者都没有,适用于服务器之间的场景

image-20221102002252924

刷新令牌

image-20221102002451225

Flow 选型

授权流程渠道

前端渠道:资源服务器不参与的交互过程
后端渠道:资源拥有者不参与的交互过程

image-20221102003325354

客户应用类型

image-20221102003757461

适用场景

image-20221102004111201

选型流程

第一方:内部应用

image-20221102004642403

参考

  1. 微服务架构实战 160 讲