OAuth2 的基本理解

137 阅读2分钟

官网:OAuth 2.0 — OAuth(需翻墙)

  • 是什么:OAuth2 是一个工业标准授权协议
  • 做什么:可以用来实现第三方登录以及自己的应用提供第三方登录的功能

名词释义

Access Token

客户端用来向 Resource server(资源服务)请求资源时鉴权的字符串

Access Token 的下列属性也是 OAuth 认证的安全基础

  • OAuth 客户端不能读取或解释 Access tokens。OAuth 客户端不是令牌的预期受众。
  • Access tokens 不会向 OAuth 客户端传递用户身份或有关用户的任何其他信息。
  • Access tokens 只能用于向 Resource server 发出请求。此外,ID tokens 不能用于向 Resource server 发出请求。

Refresh Token

客户端可以用来换取 Access token 的一个字符串,换取过程不需要用户交互

Refresh Token 不允许客户端获取任何超过 the original grant(原始授权)范围的任何权限,Refresh Token 的存在使得 authorization servers(认证服务器)能使用有效期更短的 Access Token,且过期时不需要用户参与即可刷新

OAuth Scopes

Scope(作用域)是 OAuth2 限制应用程序访问用户账户的一种机制

OAuth 规范允许授权服务器或用户根据请求修改授予应用程序的 Scope,OAuth 没有为作用域定义任何特定的值,因为它高度依赖于服务的内部架构和需求。

Grant Types

授权类型

OAuth 为不同的使用场景定义了不同的授权类型,以及创建新授权类型的框架

  • Authorization Code 授权码:信任和公共客户端使用授权码交换 access token
  • PKCE(Proof Key for Code Exchange):Authorization Code 的扩展,防止 CSRF 攻击
  • Client Credentials 客户端认证:用于获取用户上下文之外的 Access Token
  • Device Code 设备码:无浏览器或输入受限设备使用,将先前获得的设备代码换取 Access Token
  • Refresh Token:客户端在 Access Token 过期时换取新的 Access Token

Client Types

客户端类型:分为 confidential clients(信任客户端)和 public clients(公共客户端)

  • 机密客户端:能安全的想授权 authorization server 授权的应用程序,比如能保证其注册客户端的安全
  • 公共客户端:无法使用注册客户端的 secrets,比如在浏览器或者移动设备上的应用