SpringCloud 分布式跨域SSO(会话)认证处理 - 个人小记

     已经2018年了.. 3年前刚出校门那一刻就给了自己一个问题 " 3年后我会成什么样 .... ",  很失望,不过继续努力, 

定好目标, 走下去,文章写的不多,自己更多的是写笔记,将就看吧


      2016年末,开始接触分布式, 那会坐在办公司听着老大们热热闹闹的讨论架构升级为分布式,  心想 “ 牛,大佬 ”..

17年中旬分布式上线,( 说实话 " 还是挺激动的,毕竟项目不小,各个支点都挺大") ,那会支点都没有认证中心,

讲白了其他支点不需要用户信息... 17年10月份中旬, 新增其他业务支点,需要用户信息认证,这时候nginx的跨域

路由就不行了,IP_HASH达不到预想分布式的结果,第一版直接改造Security,将持久化本地的方式改造成Jedis形式,

经测试可行,但是要做到共享还是得改造Session传递这块,这时候再想到SpringSession,但最终也解决不了多

服务器Session共享问题,网上的解决方案也有..比如自定义Token认证,主系统登录后socket连接强制性的将负载

的机器内存中塞上当前用户登录的Session(这个最早pass),考虑过Token, 根据其思想改造了一版根据

SpringSession在保存信息后,用户的其他请求URL默认会带一个加密参数(sessionid), 再解析SpringSession

源码,拿到它获取Session的方式效果达到了, (这边提一下:jdk、json的两种序列化方式)  唯一的缺陷个人感觉 

改动稍大,但觉得可行,(如果没有用到SpringCloud的情况),在成功后的第二天,想到了SpirngCloud五大神兽

Zuul网关..


     SpringCloud Zuul 重定向 、 转发、包括过滤请求,认证都能做到 , 这时候有人想到Nginx,A10了,随便说一

个它们没有的亮点  “  服务发现 ”,不得不说挺强大,Zuul可以负载Eureka,可以ListOfServer:url1,url2,url3,

当时第一阶段搭建成功测试时,这里大致说一下思路模型 :

A10->Zuul(GetWay) -> (Eureka) mainLogin ->  (Eureka)server1, (Eureka)server2,

发现跨多个服务时出现Session异常,同域下面完全没问题,有大牛遇到这

块问题可以联系下,请教一下.. 多方测试无果,最终将GetWay植入MainLogin项目中,

A10 ->(Eurkea) MainLogin(GetWay) SpringSession... ->(Eureka)server1, (Eureka)server2,

效果达成



总结:思路清晰,你想做的都可以实现


你可能感兴趣的:(分布式)