OAuth授权码模式理解

198 阅读2分钟

1. 初识OAuth

在这里先简单介绍一下OAuth,OAuth是让客户端安全可控的获取用户的授权,再跟服务商提供商进行交互。

它的工作流程是

  1. 客户端要求得到用户授权
  2. 用户同意授权
  3. 客户端使用这个授权向认证服务器申请令牌
  4. 认证服务器确认授权无误后发放令牌
  5. 客户端用令牌向资源服务器获取资源
  6. 资源服务器确认令牌无误后,开放资源

而接下来对授权码模式的介绍就是在于第二步,客户端如何获取授权四种模式的其中一种

2. 授权码模式

步骤:

  1. 用户访问客户端,客户端将其导向认证服务器并发送一个申请认证的URI

这个URI包含以下参数:

  • response_type:授权类型,必选,这里固定为'code'
  • client_id::客户端ID,必选
  • redirect_uri:重定向URI,可选
  • scope:申请的权限范围,可选
  • state:表示客户端当前状态,认证服务器后面会原封不动的返回这个值
  1. 用户选择是否给客户端授权
  2. 若授权,认证服务器将用户导向客户端事先指定的重定向URI,并附上授权码

认证服务器回应客户端的URI,包含以下参数:

  • code:授权码,必选,有效期短,通常设为10分钟,客户端只能使用一次
  • state:与第一步申请URI中的state一致
  1. 客户端收到授权码后,向认证服务器申请令牌,并附上重定向URI,这一步在后台完成,对用户不可见

这里对认证服务器申请令牌的HTTP请求包含以下参数:

  • grant_type:表示使用的授权模式,必选,这里固定为'authorization_code'
  • code:授权码,必选
  • redirect_uri:重定向URI,与先前的一致
  • client_id:客户端ID,必选
  1. 认证服务器核对信息后,向客户端发送令牌和更新令牌
  • access_token:访问令牌,必选
  • token_type:令牌类型,对大小写不敏感,必选
  • expires_in:过期时间/有效时间
  • refresh_token:更新令牌,用来获取下一次访问令牌,可选
  • scope:权限范围,与之前的一致,可省略