单点登录(SSO)的几种实现方式
2019-07-24 本文已影响372人
老街老街
1.中间代理单点登录(不推荐):通过nginx负载均衡的iphash策略,根据IP来指定每次访问哪台服务器。这样做的缺点是刚好这台服务器宕机了(也叫单点故障)。那就GG了。
2.session同步单点登录(不推荐):在集群下,每个节点都是一样的,我们会通过tomcat,jboss等容器来启动这些war,我们只需要在这些tomcat下配置session共享就行,如何配置呢?就是其中一个tomcat的session改变了,tomcat会通过http网络请求去把集群中的其他tomcat容器中的session修改,相对上面一种做法,这种似乎更合理,但是缺点也还是有的,比如每次同步session要耗费很大的性能去修改另外的容器,万一刚好一万个客户要去修改信息呢?还有一个最大的问题就是做不到数据的同步,比如正在session同步的时候我正在访问另外一个tomcat,但是这个时候数据还没同步过去。所以不推荐。最后一个问题就是如果我不是集群下,而是分布式微服务呢?我不同的服务所用的session是不同的。
3.第三方存储(推荐):假如我们现在有一个天猫和淘宝,这两个系统是单点登录的,这时候请看下图。
image.png
注意:我们是从后台传入cookie到客户端(这里将的是浏览器),而不是通过返回json类似信息给前端,然后前端再去setCookie,如果这样传的话,我们只是在浏览器中的本网址中设置了cookie,对于其他的网址,这个cookie是不可见的。所以我们一定要在后台直接response一个cookie到浏览器。
如有不懂或者小编讲的让您看的不是很明白请加小编QQ:2500564056