Spring Cloud Security OAuth2的授权码模式登录流程

一、首先创建一个空的父工程

 二、授权服务器搭建

1、依赖如下:

 2、Spring Security的基本配置

a、将用户存在内存中

b、配置了一个表单登录

3、配置授权服务器

 将Token存在内存中

a、@EnableAuthorizationServer注解,表示开启授权服务器的自动化配置

b、Token支持刷新、Token的存储位置、Token的有效期、刷新Token的有效期

c、当Token快要过期的时候,我们需要获取一个新的Token,在获取新的Token的时候,需要有一个凭证信息,这个凭证信息就是

refresh_token,这个refresh_token也是有有效期的。

a、AuthorizationServerSecurityConfigurer用来配置令牌端点的安全约束、也就是这个端点谁能访问,谁不能访问。

b、checkTokenAccess是Token校验的端点,这里我们设置为可以直接访问(当资源服务器收到Token之后,会访问这个端点,校验Token的合法性) 

c、ClientDetailsServiceConfigurer用来配置客户端的详细信息,授权服务器要做两方面的校验,一是校验客户端,二是校验客户,这里我们将客户端信息存在内存中,这里我们配置了客户端的id、secret、资源id、授权类型、授权范围、重定向uri。

a、authorizationCodeServices用来配置授权码的存储,这里我们存在内存中。

b、tokenServices用来配置令牌的存储,即access_token的存储位置,这里我们也是存储在内存中。

c、授权码是用来获取令牌的,使用一次就失效,令牌是用来获取资源的。

三、资源服务器搭建

资源服务器大多都是和授权服务器放在一起的,这里我们分开。资源服务器就是用来存放用户的资源,用户从授权服务器上拿到access_token之后,接下来就可以通过access_token来资源服务器请求数据。

1、依赖如下:

2、配置如下:

 a、当资源服务器和授权服务器放在一起,就不需要配置RemoteTokenServices了。

 b、RemoteTokenServices中我们配置了access_token的校验地址、client_id、client_secret这三个信息,当用户来资源服务器请求资源时,会携带上一个access_token,通过这里的配置,就能够校验出token是否正确。

3、测试用的接口:

4、修改资源服务器端口: 

四、Postman测试

 1、获取授权码code:

http://localhost:8080/oauth/authorize?client_id=cli&response_type=code

respinse_type 表示响应类型,这里是code表示响应一个授权码。

2、授权服务器的默认登录页面:

  

 询问是否授权cli这个用户去访问被保护的资源,我们选择approve(批准),然后点击下方的Authorize按钮。

 scope 表示授权范围。

 

授权服务器给出的授权码。 

3、根据拿到的code,去请求http://localhost:8080/oauth/token获取Token: 

 access_token 就是我们请求数据所需要的令牌,

refresh_token 是我们刷新token需要的令牌,

expires_in 表示token有效期还剩多少秒。

4、授权码使用一次就会失效,使用第二次会报如下错误。

 5、根据我们拿到的access_token,去请求资源服务器,access_token通过请求头传递。

access_token我们可以用一个定时任务去维护,不用每次请求页面都去获取,定期去获取最新的access_token即可。

6、当授权服务器通过后,我们拿着access_token去资源服务器加载数据。

 因为张三没有 ls的权限,所有访问被拒绝。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值