码迷,mamicode.com
首页 > 编程语言 > 详细

Spring cloud微服务安全实战-5-7实现基于session的SSO(客户端应用的Session有效期)

时间:2019-12-01 13:19:33      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:mamicode   image   one   oauth   获取   ESS   jar   机制   路径   

授权模式改造成了Authorization code完成了改造的同时也实现了SSO。微服务环境下的前后端分离的单点登陆。
技术图片
把admin的服务重启。刷新页面 并没有让我去登陆,直接就进入了首页。
技术图片
order的API控制台
技术图片
只要你在认证服务器上的session没过期。认证服务器就知道你是谁,他就不会让你输入用户名密码了。直接跳回到客户端应用。
技术图片

一共有三个有效期。
技术图片

退出操作

退出的时候。现在前端服务器清空session,认证服务器也需要清空session

技术图片
在前端服务器退出后,再跳转到认证服务器执行退出。logout是spring security默认的退出路径
技术图片
技术图片
这时候跳转到了认证服务器。
技术图片
点击退出后
技术图片

如果再次输入账号密码登录
技术图片
这时候没跳转会前端, 这是个404的页面。
技术图片

这是因为我们之前触发的登陆页面的请求,是下面这样的一个请求
技术图片
这里他是不知道是要跳转回admin的应用的,所以默认进去了自己的主页。 :9090/根目录,这个主页没做任何的处理 所以是一个404页面。
技术图片

退出操作优化

退出的时候加一个参数redirect_uri
技术图片

技术图片

认证服务器改造

首先要找到处理logout这个请求的代码。
技术图片
它会拦截logout的方法,然后
技术图片
拦住以后会生成一个页面出来。
技术图片
页面上很简单,上面一个提示语,问题你是不是确认要退出。点了按钮就会提交这个表单。
技术图片
我们来复制这个类,首先在我们的代码里面建一个一模一样的包
技术图片
。创建一个一模一样的类
技术图片

复制整个代码到新的类里面。因为java的加载机制,所以我们自己写的这个类 会优于Spring Security原来的类 ,先加载。如果他发现有这样一个类,就不会再去加载Spring jar包里面的类了。技术图片
提示语和button都去掉,然后加上一段js代码
技术图片

加一个隐藏域,里面是从url获取到的参数 redirect_uri
技术图片

成功以后的处理器


实现LogoutSuccessHandler接口。

技术图片
声明称Spring的Component 然后 接收redirect_uri参数并跳转。
这里是退出成功以后触发的
技术图片

修改Server的配置

让它使用我们退出的处理器。在OAuth2WebSecurityConfig
技术图片

就是我们之前在Spring Security源码看到的配置
技术图片
把上面代码复制到我们的配置文件内。
把我们自己写的退出的处理器注入进来。
技术图片

技术图片
formLogin这里也可以做一些改造。可以自己指定登陆的页面,这样就是自己自定义登陆的页面
技术图片
 

测试

服务器重新启动
技术图片
刷新admin的首页,然后获取订单信息
技术图片

技术图片

点击退出按钮。又跳到了一个登陆页面。
技术图片
这是退出后,回到amdin,又从admin发送 了一个authorize请求触发的登陆
技术图片
这个时候再去做登陆
技术图片

再登陆进去 就会进去到我们的首页上来。
技术图片

结束

 

Spring cloud微服务安全实战-5-7实现基于session的SSO(客户端应用的Session有效期)

标签:mamicode   image   one   oauth   获取   ESS   jar   机制   路径   

原文地址:https://www.cnblogs.com/wangjunwei/p/11965669.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!