Oauth2授权码模式
Oauth2授权模式
1、授权码模式Authorization Code;
2、隐式授权模式Implicit;
3、密码模式Resource Owner Password Credentials;
4、客户端模式Client Credentials。
授权码授权流程
1、客户端请求第三方授权;
2、用户(资源拥有者)同意给客户端授权;
3、客户端获取到授权码,请求认证服务器申请令牌;
4、认证服务器向客户端响应令牌;
5、客户端请求资源服务器的资源,资源服务器校验令牌的合法性,完成授权;
6、资源服务器返回受保护资源。
申请授权码
- 请求认证服务获取授权码(get请求):
localhost:40400/auth/oauth/authorize?client_id=XcWebApp&response_type=code&scop=app&redirect_uri=http://localhost
- 参数:
(1)client_id:客户端id,和授权配置类中设置的客户端id一致。
(2)response_type:授权码模式固定位code。
(3)scop:客户端范围,和授权配置类中设置的scop一致。
(4)redirect_uri:跳转uri,当授权码申请成功后会跳转到此地址,并在后边带上code参数(授权码)。
- 跳转到登录页面:
(账号密码均为:XcWebApp)
- 进入授权页面:
- 点击同意,返回授权码:
申请令牌
- 拿到授权码之后,申请令牌。
- post请求:http://localhost:40400/auth/oauth/token。
- 参数:
grant_type:授权类型,填写authorization_code,表示授权码模式。
code:授权码,上述获取的授权码。注意:授权码都是一次性使用,使用一次,下一次就要重新获取。
redirect_uri:申请授权码时的跳转url,一定要与申请授权码时用的redirect_uri一致。
- 使用postman测试如下:
- 返回参数:
access_token:访问令牌,携带此令牌访问资源。
token_type:带有MAC Token与BearerToken两种类型,两种的校验算法不同,RFC6750建议Oauth2采用BearerToken(http://www.rfcreader.com/#rfc6750)。
refresh_token:刷新令牌,使用此令牌可以延长访问令牌的过期时间。
expires_in:过期时间,单位为秒。
scope:范围,与定义的客户端范围一致。
- 代码实现:
简单实现,ssh下载。(持续更新中)
github:git@github.com:17521227324/xuexi.git