授权码模式

208 阅读2分钟

在介绍授权码的步骤之前,我们先来讲述一下几个重要的专有名词:资源所有者,用户代理,客户端,认证服务器。

具体的步骤如下:

  1. 客户端向用户代理申请URI,以此向用户代理授权
  2. 用户代理将客户端ID以及重定向的URI发送给认证服务器
  3. 认证服务器接收到用户代理的客户端ID以及URI后,将授权码返回给用户代理
  4. 用户代理将冲顶先的URI以及授权码发送给客户端,以此给用户端授权
  5. 之后,用户端授权成功后,将授权码以及重定向的URI发送给认证服务器
  6. 认证服务器将令牌和更新令牌发放给客户端
  7. 这样客户端就可以用令牌向资源服务器申请开放资源,最后就可以将资源发放给用户代理,然后通过用户代理,用户就可以获得资源了

在途中的步骤包含了一些具体参数:

  • A步骤:

  • response_type:表示授权类型,必选项,此处的值固定为"code"

  • client_id:表示客户端的ID,必选

  • redirect_uri:表示重定向URI,可选项

  • scope:表示申请的权限范围,可选项

  • state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。

  • C步骤

  • code:表示授权码,必选项。该码的有效期应该很短,通常设为10分钟,客户端只能使用该码一次,否则会被授权服务器拒绝。该码与客户端ID和重定向URI,是一一对应关系。

  • state:如果客户端的请求中包含这个参数,认证服务器的回应也必须一模一样包含这个参数。

  • D步骤

  • grant_type:表示使用的授权模式,必选项,此处的值固定为"authorization_code"。

  • code:表示上一步获得的授权码,必选项

  • redirect_uri:表示重定向URI,必选项,且必须与A步骤中的该参数值保持一致。

  • client_id:表示客户端ID,必选项。

  • E步骤

  • access_token:表示访问令牌,必选项。

  • token_type:表示令牌类型,该值大小写不敏感,必选项,可以是bearer类型或mac类型。

  • expires_in:表示过期时间,单位为秒。如果省略该参数,必须其他方式设置过期时间。

  • refresh_token:表示更新令牌,用来获取下一次的访问令牌,可选项。

  • scope:表示权限范围,如果与客户端申请的范围一致,此项可省略。