一、研究背景
随着企业的发展,业务系统的数量在不断地增加,老的系统不能满足业务需求了,但是又步能轻易替换,这样带来很多不必要的开销,例如管理上的开销,系统维护的开销,数据冗余及重复,数据不一致可能带来的风险都会给公司的发展带来很大的影响。这是我们急需一种系统可以处理各应用系统之间的关系,单点登录应运而生。单点登录最早发起于耶鲁大学,目的是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。单点登录的主要作用就是整合,整合数据,整合业务,整合用户 。
二、解决的问题
单点登录通过为相互信任的应用系统提供统一的的登录门户,减少了用户在不同的系统中的登录时间,减少用户登录出错的可能性,同时增加了安全系数和对用户认证信息保存和处理的功能。减少了系统管理员添加删除用户以及修改用户权限的时间。最重要的就是集成了过个应用系统,公用一个门户,一组数据库,减少了数据的冗余,减少了企业的开支,提高企业管理的效率,这样就是为企业创造的最大的效益。
三、原理
这是我找的一张比较形象的图,针对这张图来阐述单点登录的原理。当用户第一次登录某个应用系统的时候,要重定位到认证系统,进行信息验证,信息验证需要连接数据库中的用户信息。验证成功后返回给用户一个票据(ticket),用户拿着这个票据去登录这个门户下的各个子系统都可以陈宫登录,就好比我们去动物园需要买门票,进入各个馆需要验证门票,如果有才能够进去,如果没有则不能进入。单点登录也是这种机制,他是为门户下的各个子系统提供一个统一的票据,拿着这个票据去进行自己的操作。
四、实现
单点登录的实现多种多样,有.net版的,也有Java版的,实现机制大致分为两种Cookie机制和Session机制两类。
WebLogic通过Session共享认证信息。Session是一种服务器端的机制,当客户端访问服务器时,服务器为客户端创建一个唯一的SessionID,在整个交互过程中始终处于保持状态,交互信息有应用系统指定,因此不能够实现多浏览器单点登录,但是可以实现跨域的单点登录。
WebSphere通过Cookie记录认证信息。Cookie是一种客户端机制,登录服务器会在客户端创建一个Cookie,这个Cookie保存了用户的登录信息,登录后用户访问门户下的应用系统时,首先寻找服务端在客户端创建的Cookie,根据Cookie进行验证登录。因为Cookie并不是真正的保存在内存中么日式浏览器已关闭,cookie就会自动过期,并且认证成功后,会产生一个ticket,这个ticket是一次性使用的一种凭证,只使用一次,使用后自动失效。
五、总结
单点登录是在系统集成的环境下产生的,只有需要访问多个相互信任的应用系统时,才会同时使用相同的认证信息。很明显,统一用户是单点登录的基础,但统一用户并不意味着实现了单点登录。下一篇我会写单点登录的环境的搭建,欢迎大家指正!