OAuth2学习目录
0、OAuth2解决的问题域和场景
- 开放系统间的授权:社交联合登录、开放平台。
- web页面、原生app、微服务和API间调用。
- 企业内部应用认证授权(IAM/SSO)。
1、白话OAuth2
- 什么是OAuth2:是一种认证授权机制。
- 资源拥有者、客户应用、资源、授权服务器。
- 授权服务器:生成、颁发access_token。
- 客户端应用:使用access_token来访问用户资源。
2、OAuth2的定义
- OAuth2是一种授权框架,不是一种认证协议,仅用于授权代理。
- OAuth不支持Http以外的协议
- OAuth并不是一个认证协议
- OAuth并没有定义授权处理机制
- OAuth并没有定义token格式
- OAuth2.0并没有定义加密方法
- OAuth2.0并不是单个认证协议,是一组协议。
OAuth本质:如何获取token、如何使用token
OAuth是一种在系统间的代理授权
OAuth使用代理协议的方式解决密码共享的反模式问题。
OAuth提供一个宽泛的协议框架,具体的安全场景需要定制。
3、OAuth2有哪些典型模式
- 授权码模式:
- 简化模式
- 密码模式
- 使用用户名密码登录的应用,例如桌面app、手机app。
- 使用用户名密码作为授权方式,从授权服务器上获取access_token。
- 一般不支持refresh_token
- 假定资源拥有者和公开客户在相同设备上。
- 客户端模式:主要用于机器间的调用。
(当token失效之后,可以用refresh_token获取新的access_token)
4、OAuth2模式如何选型
客户端的类型:
- 公开:原生app 、web app用户直接接触的应用
- 私密:服务之间的调用,非用户直接操作的。
选型流程: