理解OAuth2
分类:
文章
•
2024-02-12 16:41:58
一.什么是OAuth2
- 用于REST/APIs的代理授权框架(delegated authorization framework)
- 基于令牌Token的授权,在无需暴露用户密码的情况下,使应用能获取对用户数据的有限访问权限
- 解耦认证和授权
- 事实上的标准安全框架,支持多种用例场景
- 服务器端WebApp
- 浏览器单页SPA
- 无线/原生App
- 服务器对服务器之间
二.场景
- 开放系统间授权
- 现代微服务安全
- 单页浏览器App(HTML5/JS/无状态)
- 无线原生App
- 服务器端WebApp
- 服务器端WebApp
- 企业内部应用认证授权(IAM/SSO)
三.不足
- 协议框架太宽泛,造成各种实现的兼容性和互操作性差
- 和OAuth 1.0不兼容
- OAuth 2.0不是一个认证协议,OAuth 2.0本身并不能告诉你任何用户信息
四.主要角色
- 客户应用:通常是一个Web或者无线应用,它需要访问用户的受保护资源
- 资源服务器:是一个web站点或者web service API,用户的受保护数据保存于此
- 授权服务器:在客户应用成功认证并获得授权之后,向客户应用颁发访问令牌Access Token
- 资源拥有者:资源的拥有人,想要分享某些资源给第三方应用
- 客户凭证:客户的clientId 和密码用于认证客户
- 令牌:授权服务器在接收到客户请求后,颁发的访问令牌
- 作用域:客户请求访问令牌时,由资源拥有者额外指定的细分权限(permission)
五.OAuth令牌类型
- 刷新令牌:用于去授权服务器获取一个新的访问令牌
- Bearer Token:不管谁拿到Token都可以访问资源,像现钞
- 访问令牌(Access Token):用于代表一个用户或服务直接去访问受保护的资源
- Proof of Possession(PoP) Token:可以校验client是否对Token有明确的拥有权
六.模式
1.类型
1.1授权码模式
1.2.简化模式
1.3.密码模式
1.4.客户端模式
1.5.刷新令牌
2.特点
选择