1. 什么是OAuth2.0
* 用于REST/APIs的代理授权框架(delegated authorization)
* 基于令牌Token的授权,在无需暴露用户密码的情况下,使应用能获取对用户数据的有限访问权限
* 解耦认证和授权
* 事实上的标准安全框架,支持多种用例场景
* 服务器端WebApp
* 浏览器单页SPA
* 无线/原生App
* 服务器对服务器之间
2. OAuth 2.0 历史
* 大致始于2007年
* 2010-RFC5849定义了OAuth 1.0
* 2010-IETF开始OAuth2.0制定工作
* 干系人:Google,Microsoft,Facebook,Github,Twitter,Flickr,Dropbox
* 2012年中-第一作者和编辑退出,并将其名字从所有规范中删除(戏剧性)
* 2012年10月-RFC6749,RFC6750
3. OAuth 2.0 优势
* OAuth 2.0 比 OAuth 1.0 易于实现
* 更安全,客户端不接触用户密码,服务器端更易于集中保护
* 广泛传播并持续采用
* 短寿命和封装token
* 资源服务器和授权服务器解耦
* 集中授权,简化客户端
* HTTP/JSON友好,易于请求和传递token
* 考虑多种客户端架构场景
* 客户可以具有不同的信任级别
4. OAuth 2.0 不足
* 协议框架太宽泛,造成各种实现的兼容性和或操作性差
* 和OAuth 1.0 不兼容
* OAuth 2.0 不是一个认证协议,OAuth 2.0 本身并不能告诉你任何用户信息。
5. OAuth 2.0 主要角色
* 授权服务器(AS)
* 资源拥有者
* 使用令牌
6. OAuth术语
* 客户应用
通常是一个Web或者无线应用,它需要访问用户的受保护资源
* 资源服务器
是一个web站点或者web service API,用户的受保护数据保存于此
* 授权服务器
在客户应用成功认证并获得授权之后,向客户应用颁发访问令牌AccessToken
* 资源拥有者
资源的拥有人,想要分享某些资源给第三方应用
* 客户凭证
客户的clientId 和 密码用于认证客户
* 令牌
授权服务器在接收到客户请求后,颁发的访问令牌
* 作用域
客户请求访问令牌时,由资源拥有者额外指定的细分权限(permission)
7. OAuth令牌类型
* 授权码
用于授权码授权类型,用于交换获取访问令牌和刷新令牌
* 刷新令牌
用于去授权服务器获取一个新的访问令牌
* Bearer Token
不管谁拿到Token都可以访问资源,像现钞
* 访问令牌
用于代表一个用户或服务直接去访问受保护的资源
* Proof of Possession (PoP) Token
可以校验client是否对Token有明确的拥有权
8. OAuth 2.0 的误解
* OAuth并没有支持HTTP以外的协议
* OAuth并不是一个认证协议
* OAuth并没有定义授权处理机制
* OAuth并没有定义Token格式
* OAuth 2.0并没有定义加密方法
* OAuth 2.0并不是单个协议
* OAuth 2.0 仅是授权框架,仅用于授权代理