授权码模式流程
- 客户端请求第三方授权
- 用户(资源所有者)同意给客户端授权
- 客户端获取到授权码,请求认证服务器申请令牌
- 认证服务器向客户端响应令牌
- 客户端请求资源服务器的资源,资源服务器校验令牌合法性,完成授权
- 资源服务器返回受保护资源
申请授权码
http://localhost:40400/auth/oauth/authorize?client_id=XcWebApp&response_type=code&scop=app&redirect_uri=http://localhost
- client_id:客户端id,和授权配置类中设置的客户端id一致。
- response_type:授权码模式固定为
- code:scop:客户端范围,和授权配置类中设置的scop一致。
- redirect_uri:跳转uri,当授权码申请成功后会跳转到此地址,并在后边带上code参数(授权码)
首先跳转到登录页面:
登录后,成功后会跳到授权页面
授权
点击Authorize,可以获得授权码
http://localhost/?code=R5A7yI
R5A7yI就是授权码。
申请令牌
post请求: http://localhost:40400/auth/oauth/token
添加相关参数
- grant_type:授权类型,填写authorization_code,表示授权码模式
- code:授权码,就是刚刚获取的授权码,注意:授权码只使用一次就无效了,需要重新申请。
- redirect_uri:申请授权码时的跳转url,一定和申请授权码时用的redirect_uri一致。
然后Authorization 选择Basic Auth,输入账号密码
授权服务器返回token
- access_token : 访问令牌,客户端携带此令牌请求资源服务器资源
- token_type:有MACToken与BearerToken两种类型,两种的校验算法不同,RFC6750建议Oauth2采用Bearer
- refresh_token:刷新token,使用此令牌可以延长访问令牌的过期时间
- expires_in: 过期时间,单位为秒。
- scope:范围,与定义的客户端范围一致。
- jti:jwt的id
服务授权流程
携带令牌访问服务
消息头参数
Authorization Bearer+空格+token
密码模式
密码模式相比于授权码模式:不用授权码,可以直接用账号密码向授权服务器申请令牌
校验令牌
Get:http://localhost:40400/auth/oauth/check_token?token=获取到的token
刷新令牌
Post:http://localhost:40400/auth/oauth/token
参数
grant_type:固定为refresh_token
refresh_token:刷新令牌(注意不是access_token,而是refresh_token)