首页 > 编程语言 > 详细

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

时间:2019-12-01 16:50:45      阅读:130      评论:0      收藏:0      [点我收藏+]

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有效期)

原文:https://www.cnblogs.com/wangjunwei/p/11966240.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!