一、什么是SSO系统?
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。
二、为什么要有单点登录系统?
2.1 传统的登录实现方式如下图所示。
这种登录方式对只有一个web工程的情况下是没有问题的,但是对于分布式系统来说,由于牵扯到多个系统,如果每访问一个系统都要输入一遍用户名、密码的话那将非常麻烦,也是用户所不能忍受的,这时单点登录便派上用场了。
2.2 集群模式下的登录方式,如下图所示。
集群和分布式的区别在于,集群是多台设备干同一件事情,而分布式是不同的设备干不同的事情。传统模式的工程当用户访问量大的时候就难以招架了,这时首先考虑到的是使用集群来增加网站的吞吐量,一个tomcat可以处理大约300个并发,多个tomcat就可以处理更多的并发。但是tomcat集群有一个致命的瓶颈,那就是session共享,由于不同的tomcat之间要以广播的方式来进行session共享,当tomcat数量较多时,广播便占据了绝大多数带宽,从而使真正的请求难以被处理,一般来说,tomcat集群中tomcat的个数不要超过5个。
2.3 集群与分布式架构,如下图所示。
与单纯的集群相比,把登录单独拿出来,可以使用Session服务器,保存Session信息,使每个节点是无状态。需要模拟Session。单点登录系统是使用redis模拟Session,实现Session的统一管理。登录独立的好处便是解决了session共享的问题,这样集群便可以几乎不受限制的进行扩展。