授权码模式
一、授权码模式
它是功能最完整、流程最严密的授权模式,是通过客户端的后台服务器与“服务提供商”的认证服务器进行互动。
二、授权码模式的步骤
-
用户访问客户端,后者将前者导向认证服务器。
需要的参数:
response_type:必选项,表示授权类型,固定值为“code“
client_id:必选项,表示客户端ID
redirect_uri:可选项,表示重定向URL
scope:可选项,表示申请的权限范围
state:表示客户端的当前状态,可指定任意值,认证的服务器会照原来的值返回
-
用户选择是否给予客户端授权。
-
假设用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。
code:必选项,表示授权码;客户端只能使用该码一次,否则会被授权服务器拒绝
state:客户端请求包含此参数,则认证服务器也必须一模一样包含
-
客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。
grant_type:必选项,表示使用的授权模式,值固定为"authorization_code"
code:必选项,表示上一步获得的授权码
redirect_uri:必选项,表示重定向URI
client_id:必选项,表示客户端ID
-
认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)
access_token:必选项,表示访问令牌;
token_type:必选项,表示令牌类型(大小写不敏感)
expires_in:表示过期时间(s);若省略了需要在其他方式设置过期时间
refresh_token:可选,表示更新令牌,获取下一次访问令牌
scope:表示权限范围(与客户端申请的范围一致时候可省略)