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

    这个时候再去做登陆


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

    结束

  • 相关阅读:
    浅谈Linux文件操作
    数据结构学习--队列
    CODE[VS] 1099 字串变换
    CODE[VS] 1026 逃跑的拉尔夫
    CODE[VS] 3027 线段覆盖 2
    LeetCode8.字符串转换整数(atoi) JavaScript
    JS实现继承 JavaScript
    LeetCode7.整数反转 JavaScript
    LeetCode6.Z字形变换 JavaScript
    LeetCode5.最长回文子串 JavaScript
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11965669.html
Copyright © 2020-2023  润新知