Spring cloud微服务安全实战-5-9实现基于session的SSO(Token有效期)
token的有效期

会出现一种情况session有效期还没到。但是token过期了。
用户登陆着,但是token失效了 没法访问服务了。

刷新令牌要和clientId和ClientSecret一起用,发请求才有效。
那么刷新令牌在哪里?在数据库内 我们从来没有配置这个字段。
refresh_token_validity:刷新令牌的有效期。不配置就不会发refresh_token,

什么时候配置上了这个值,就会发refresh_token.这里配置一个 259200 ,30天的有效时间。

token放在请求头里面去获取数据,这里可能就会发生token过期的情况。

过期了我们就需要用refreshToken去刷新一下。
先来看一下过期的样子,这里我们设置为10秒,token的过期时间

把发出去的access_token清理掉。把这个表内的记录都删除掉,

重启认证服务器和admin服务


因为我们的session还是有效的,可以登陆继续访问。但是我们的token信息已经没有了。 所以我会在数据库内生成一条心的token。这个token的有效期只有10秒。
刷新页面,不用登陆就进来了。 点击按钮 把获取order的信息也是可以的

数据库内多出一个token

用这个token去发请求

前两个请求都是成功的,到第三个请求,token已经过期。 再发请求就会报错。

写刷新令牌的代码
在这里判断令牌是否过期,过期就刷新令牌。

加一个过期时间的属性


我们把他改成long类型

过期时间就是当前时间,加上过期的秒数

有了这个时间 ,就可以判断 当前是不是过期了。
过期时间是不是在当前时间之前,是的话 就是过期了。

声明RestTemplate


init方法把自己当前对象返回回去。

有可能是还有几毫秒就过期了。拿到了这个token去访问 访问过程中可能就过期了。所以这里我们再减掉3秒。

声明TokenValue

执行newToken的init方法,及时初始化了新的过期时间。
最终把新的access_token放在请求头上。

callback回调这里修改
这里要init方法调用一下

Oauth加一个配置
指定userDetailsService

下面已经制定了authenticationManager了,上面为什么还要userDetailsService。这个userDetailsService是专门给refresh_token用的。
我们其他的那四种授权模式,当你要认证用户的时候,都是用户名和密码一块对的,不管是授权码还是password,用户名和密码都会传过来。然后会用authenticationManager来验用户名密码。
因为下面这里。的 AuthenticationManagerBuilder这里把用户和密码都设置上了。


当我refresh_token的时候,是没有密码的,只有用户名,这时候我就只需要一个UserDetailsService来获取我的用户信息。↓所以下面这里要单独指定一个userDetailsService给refresh_token来用。

注入userDetailsService


数据库配置
让admin这个client支持 refresh_token 在授权类型这里加一个新的类型




测试
启动认证服务和admin的服务
session都删除了 所以需要重新登陆



多点击几次

大概没隔10秒 都会出现一个比较耗时的请求。这应该就是后台去刷新令牌了。

可以移植点下去 ,不会再报错了。因为refresh_token有效期很长,一个月。可以不断的用refresh_token来刷新令牌。
结束
Spring cloud微服务安全实战-5-9实现基于session的SSO(Token有效期)的更多相关文章
- 《Spring Cloud微服务 入门 实战与进阶》
很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...
- Spring Cloud微服务安全实战_00_前言
一.前言: 一直以来对服务安全都很感兴趣,所以就学习.这是学习immoc的 jojo老师的 <Spring Cloud微服务安全实战课程>的笔记,讲的很好. 课程简介: 二.最终形成的架 ...
- Spring cloud微服务安全实战_汇总
Spring cloud微服务安全实战 https://coding.imooc.com/class/chapter/379.html#Anchor Spring Cloud微服务安全实战-1-1 课 ...
- Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器
上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后, ...
- Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务
实现一个场景: 订单微服务: POM: <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- Spring cloud微服务安全实战 最新完整教程
课程资料获取链接:点击这里 采用流行的微服务架构开发,应用程序访问安全将会面临更多更复杂的挑战,尤其是开发者最关心的三大问题:认证授权.可用性.可视化.本课程从简单的API安全入手,过渡到复杂的微服务 ...
- Spring cloud微服务安全实战-6-8sentinel限流实战
阿里2018年开源的. 简单来说就是干三件事,最终的结果就是保证你的服务可用,不会崩掉.保证服务高可用. 流控 先从最简单的场景来入手. 1.引用一个依赖, 2,声明一个资源. 3.声明一个规则 注意 ...
- Spring cloud微服务安全实战-6-4权限控制改造
授权,权限的控制 令牌里的scope包含fly就有权限访问.根据Oauth的scope来做权限控制, 要让@PreAuthorize生效,就要在启动类里面写一个注解. 里面有一个属性叫做,就是在方法的 ...
- Spring cloud微服务安全实战-6-2JWT认证之认证服务改造
首先来解决认证的问题. 1.效率低,每次认证都要去认证服务器调一次服务. 2.传递用户身份,在请求头里面, 3.服务之间传递请求头比较麻烦. jwt令牌. spring提供了工具,帮你在微服务之间传递 ...
- Spring cloud微服务安全实战-5-7实现基于session的SSO(客户端应用的Session有效期)
授权模式改造成了Authorization code完成了改造的同时也实现了SSO.微服务环境下的前后端分离的单点登陆. 把admin的服务重启.刷新页面 并没有让我去登陆,直接就进入了首页. ord ...
随机推荐
- 学习Kubernetes,这些负载均衡知识点得知道!
负载均衡 负载均衡是高可用架构的一个关键组件,主要用来提高性能和可用性,通过负载均衡将流量分发到多个服务器,同时多服务器能够消除这部分的单点故障. 一个没有使用负载均衡的Web架构一般会长得像这样: ...
- 07 Node.js安装及环境配置
二.安装Node.js步骤 1.下载对应你系统的Node.js版本:https://nodejs.org/en/download/2.选安装目录进行安装3.环境配置4.测试 开始安装 1.下载完成后, ...
- 多路选择器,加法器原理及verilog实现
1.数据选择器是指经过选择,把多个通道的数据传到唯一的公共数据通道上.实现数据选择功能的逻辑电路称为数据选择器,它的作用相当于多个输入的单刀多掷开关.本例程以四选一数据选择器(电平触发)为例. 四选一 ...
- 2017.10.2 国庆清北 D2T2 树上抢男主
/* 我只看懂了求LCA */ #include<iostream> #include<cstring> #include<cstdio> #include< ...
- 洛谷P1199三国游戏
题目 博弈论+贪心. 由于我们是先手,所以我们其实是必赢的,而且其实选完前两次,就已经结束了,因为接下来选的每一次其实都没有我们前几次选的好.而且又因为机器人会把我们想选的最好的拿走,那我们就只能拿走 ...
- (17)打鸡儿教你Vue.js
vue-router <a class="list-group-item" v-link="{ path: '/home'}">Home</a ...
- Python中pass语句的作用是什么?
pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作.
- 「雅礼集训 2017 Day10」拍苍蝇
传送门 Description 有一天,小 A 的母亲对他家里的卫生状况非常不满意,他的房间里有非常多的苍蝇.在母亲的威逼利诱下,小 A 拿起了苍蝇拍去消灭家里的苍蝇.然而,小 A 以前从来没有亲手消 ...
- Chrome 浏览器中查看 webSocket 连接信息
1.以下代码实现一个webSocket连接,在文本输入框中输入内容,点击发送,通过服务器,返回相同的内容显示在下方. 1 <!DOCTYPE html> 2 <html lang ...
- rapidxml学习
参考: 官网http://rapidxml.sourceforge.net/ https://blog.csdn.net/wqvbjhc/article/details/7662931 http:// ...