1、Session和Cookie

Session:在服务器端保持状态的一个方案。

存放在服务器上。

如果浏览器禁用掉了cookie,如何把session id传递回服务器?放到请求URL上或者隐藏在表单中。

在请求过多的情况下,服务器端存放太多session id会造成性能的影响。

Session一般用于存放登录信息等重要信息。

 

Cookie:在客户端保持状态的一个方案。

存放在客户的浏览器中。

如果不设置超时时间,关闭浏览器,cookie消失(该类cookie称为会话cookie,保存在内存中);

如果设置超时时间,cookie被保存在硬盘。

由于其存放在客户端,很容易被仿造,不安全。

cookie的大小是有限制的,不能超过3K。

Cookie一般用于存放有必要存储的非重要信息。

 

2、认识单点登录(SSO,Single Sign On)

对于各企业,会有各种各样的新老应用系统,当然了,这些系统有各自的架构、业务以及用到的数据存储系统不尽相同。老的系统丢不掉,一路用过来对吧。这么多系统混在一起,为企业带来的问题是什么呢?给人的第一感觉就是凌乱,维护起来十分不便。这里就出现了一个名称EAI(Enterprise Application Intergration,企业应用集成),其中包括业务集成、数据集中等等,当然其中还包括很重要的一个身份认证统一(SSO),SSO就是我们要认识一下的内容。

 

SSO就是单点登录,统一所有相关应用系统的身份认证,用户只需要登录一次就能访问相互信任的所有应用系统。

那么SSO带来的好处是什么呢?

只需登录一次带来了更好的用户体验,另外降低了安全的风险和管理的消耗。

 

SSO的技术实现机制是怎么样的呢?

我们可以打个比方:我们知道,对于全国各地的各个景点,我们去游玩的时候,每玩一个项目都需要购票,如果项目太多,每次买票是不是很麻烦?那么我们是不是可以只需要买一次票,就能玩遍所有的景点呢?答案是肯定的。

SSO的技术实现机制:访问多个应用系统,当我们访问其中之一,独立的认证系统进行用户信息校验,并生成唯一的标识(ticket)返回;当我们访问另外一个应用系统时候,就会带着唯一的标识ticket,由独立的认证系统去进行识别,决定是否能访问其他的应用系统。

技术实现机制图示理解如下:

java sessionid 安全 java session存在哪里_Cookie


 

如果我们要实现一个SSO,需要做的如下一些事情:

1、一个统一的身份认证系统,供所有应用系统共享;

2、所有应用系统能够识别和提取唯一标识信息ticket;

 

最简单的SSO可以通过Cookie来实现,认证系统生成唯一的标识ticket,在不同应用系统之间传递。不过通过Cookie实现的SSO,不管是在安全方面、功能方面还是性能方法都有很大的局限性:如cookie的安全保护、认证方式的支持、资源访问过滤的性能等等。

 

总结:单点登录认识很简单,要是真正实现起来,想做出一个完美的解决方案,还是有很多方面需要考虑的:安全方面、认证方式的支持方面(数字证书、SecurId等认证)等等。看来要想真正了解并掌握单点登录,还有很多工作要做的。