单点登录

什么是单点登录系统 (Single Sign On)? 

在多个系统中,用户只要登录一次就可以访问所有的子系统。

1. 单点登录系统(SSO): 

创建单点登录系统,独立的工程。

发布登录和注册的接口。

公司中的一个系统中,只需要调用一个登录页面就可以实现登录和注册的功能。

 

传统的登录流程:

在传统的登录中出现的问题。在集群中,需要把同一套代码部署到多个服务器中。每个工程都有独立的session.

如果把用户信息写入到session中不共享的话,就会出现用户反复登录的情况。

解决方案:第一种方案可以配置tomcat的session共享,配置tomcat集群。集群配置好了。会不停的向其他的tomcat广播自己的session信息,其他的tomcat做session同步。可以保证所有的session中的内容一致。

缺点:<a>tomcat是全局的session复制。集群内每个tomcat的session完全同步。在大规模应用的时候,用户过多。集群中tomcat数量过多。session的全局复制会导致集群的性能下降,因此tomcat数量不能多。5个以下为好。 不能解决session共享的问题。列如支付宝和淘宝单点登录的问题。

 

第二种方案:实现单点登录,提供服务接口。把session放入到redis中。redis可以设置key的生存时间。访问效率高。单点登录由一套单点页面维护。

用户请求登录页面,SSO系统接收用户信息。从数据库中获取信息,判断是否正确,用户认证,生成token,将信息保存到Redis中设置有效期,返回登录成功,把token写入到cookie中,如果有回调url,跳转到回调的url中。

接收cookie中的token,并根据token查redis.如果token存在,可以顺便调整生存时间。显示请求页面。否则返回登录页面。

创建单点登录系统(独立的工程,需要操作Redis,连接数据库)

 

系统架构:

需要使用的技术:1)Mybatis; 2)Spring ; 3)Springmvc; 4)Redis;

posted @ 2018-01-01 19:55  小丸子的西瓜梦  阅读(217)  评论(0编辑  收藏  举报