Spring cloud微服务安全实战-5-7实现基于session的SSO(客户端应用的Session有效期)
授权模式改造成了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有效期)的更多相关文章
- 《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提供了工具,帮你在微服务之间传递 ...
随机推荐
- 大数据之路week07--day06 (Sqoop 将关系数据库(oracle、mysql、postgresql等)数据与hadoop数据进行转换的工具)
为了方便后面的学习,在学习Hive的过程中先学习一个工具,那就是Sqoop,你会往后机会发现sqoop是我们在学习大数据框架的最简单的框架了. Sqoop是一个用来将Hadoop和关系型数据库中的数据 ...
- matlab之数组反序输出
a=[1 2 3 4 5] a(end:-1:1)=[5 4 3 2 1]
- [TypeScript] Optional Chaining with TypeScript 3.7
TypeScript 3.7 adds support for optional chaining. This lesson shows you how to use it in your code ...
- Hadoop上 Hive 操作
数据dept表的准备: --创建dept表 CREATE TABLE dept( deptno int, dname string, loc string) ROW FORMAT DELIMITED ...
- 04_(终结版)通过App实现对数据库的增删改
设计思路:用户注册登录:用户注册或登录(login数据表),成功后进入增删改查(words数据表)注意:只有登录验证成功后才可以增删改查,否则提示未登录! 增:用户在App上add(单词.词义.音标) ...
- local
用于在脚本中声明局部变量, 典型用法是在函数体内,其作用域也在该变量的函数体内,如果试图在函数外使用local声明变量,将提示错误
- Day12:H5
掌握HTML+CSS+JavaScript相关知识 了解HTML5的结构标签: 掌握新增和删去的标签及相关属性 运用HTML5相关知识进行实际开发 下面哪种语法中是对大小写进行区分的? XHTML H ...
- (11)打鸡儿教你Vue.js
表单 v-model 指令在表单控件元素上创建双向数据绑定 <div id="app"> <p>单个复选框:</p> <input typ ...
- XMind 8 pro for Mac(思维导图软件)附序列号和破解教程【亲测可用!!】
年后了,又到一年面试时,最近在用思维导图整理知识点,原本使用的是在线思维导图 ProcessOn,奈何免费版的个人文件数量只能有9 张,远远不能满足我的需要,所以还是使用一个本地版的吧,but依然不想 ...
- 关于Lombok的认识及其应用(一)
目录 1.Lombok的介绍 2.Lombok的安装 3.Lombok实现原理分析 4.Lombok使用方法 4.1.@Data注解 4.2.@Getter/@Setter注解 1.Lombok的介绍 ...