Oauth流程学习

141 阅读2分钟

授权码模式

一、授权码模式

它是功能最完整、流程最严密的授权模式,是通过客户端的后台服务器与“服务提供商”的认证服务器进行互动。

二、授权码模式的步骤

  1. 用户访问客户端,后者将前者导向认证服务器。

    需要的参数:

    response_type:必选项,表示授权类型,固定值为“code“

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

    redirect_uri:可选项,表示重定向URL

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

    state:表示客户端的当前状态,可指定任意值,认证的服务器会照原来的值返回

  2. 用户选择是否给予客户端授权。

  3. 假设用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。

    code:必选项,表示授权码;客户端只能使用该码一次,否则会被授权服务器拒绝

    state:客户端请求包含此参数,则认证服务器也必须一模一样包含

  4. 客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。

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

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

    redirect_uri:必选项,表示重定向URI

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

  5. 认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)

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

    token_type:必选项,表示令牌类型(大小写不敏感)

    expires_in:表示过期时间(s);若省略了需要在其他方式设置过期时间

    refresh_token:可选,表示更新令牌,获取下一次访问令牌

    scope:表示权限范围(与客户端申请的范围一致时候可省略)