在介绍授权码的步骤之前,我们先来讲述一下几个重要的专有名词:资源所有者,用户代理,客户端,认证服务器。
- 客户端向用户代理申请URI,以此向用户代理授权
- 用户代理将客户端ID以及重定向的URI发送给认证服务器
- 认证服务器接收到用户代理的客户端ID以及URI后,将授权码返回给用户代理
- 用户代理将冲顶先的URI以及授权码发送给客户端,以此给用户端授权
- 之后,用户端授权成功后,将授权码以及重定向的URI发送给认证服务器
- 认证服务器将令牌和更新令牌发放给客户端
- 这样客户端就可以用令牌向资源服务器申请开放资源,最后就可以将资源发放给用户代理,然后通过用户代理,用户就可以获得资源了
在途中的步骤包含了一些具体参数:
-
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:表示权限范围,如果与客户端申请的范围一致,此项可省略。