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请求触发的登陆

这个时候再去做登陆


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

结束

猜你喜欢

转载自www.cnblogs.com/wangjunwei/p/11965669.html