是什么
授权协议
委托协议
安全协议
目的
用访问令牌替代用户名和密码
角色
资源拥有者
客户端(第三方软件)
授权系统
受保护资源服务,接受并验证访问令牌
静态注册
注册app_id、app_secret、回调地址等。
授权码凭证
授权码
第一次重定向,到授权服务
校验第三方软件(app_id)
校验回调地址
第一次校验权限范围scope,传入的权限与注册时的权限相比,是否越权
state参数,一个随机参数,可以防止安全攻击,返回授权码时也携带state参数
保存授权码与app_id、用户的对应关系
保存授权码与权限范围scope的关系
用户登录之后才能授权
第二次校验权限范围scope,不能超过用户授权的权限范围
前端通信获取临时的、一次性的授权码
第二次重定向,到第三方软件,携带授权码
访问令牌
后端通信用授权码获取访问令牌,授权码用过一次,应立即删掉
访问令牌不能暴露
校验第三方软件(app_id、app_secret)
校验授权码
保存访问令牌与app_id、用户的对应关系
保存访问令牌与权限范围scope的对应关系
刷新令牌
刷新令牌的过期时间比访问令牌的过期时间长点
验证刷新令牌是否存在
验证刷新令牌是否属于第三方软件
和访问令牌一起返回第三方软件
用刷新令牌可生成新的访问令牌
JWT
结构化令牌
可以被解析
分为三部分:header(令牌类型、算法)、payload(数据体)、signature(签名)
需要证书、公钥
客户端凭证
所获取的信息不属于任何第三方用户
app_id、app_secret
隐式凭证
只嵌入到浏览器的应用且没有服务端
app_id
资源拥有者凭证
官方出品
用户名、密码