单点登录全方位学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单点登录全方位学习相关的知识,希望对你有一定的参考价值。

 

 

写作提纲

 

1. http协议的无连接、无状态特性

2. 用于解决http协议无状态性的会话机制:session、cookie

3. 是否登录的判断:附代码

4. 单点登录的cookie解决方法及其缺点:cookie有哪些限制

5. 单点登录、登出的交互是如何进行的:client,application A,application B,认证中心

6. 全局会话与局部会话

7. 单点登录的实现:联系代码

8. 单点登录的企业级实现:框架是如何来实现的

9. 单点登录的安全性

10. 单点登录中的其他问题:比如令牌如何生成

 

一、http协议的无连接无状态特性

 

现在大多数web应用采用的是browser/server架构,http作为通信协议。http是无连接、无状态的协议,这两个特性都后来web应用的架构和设计点产生了很大的影响。

 

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

 

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来。再次访问发送HTTP请求之后,服务器会把我们当成从未服务过的新人一样,只会根据我们的请求来响应,和上次以及后来的HTTP请求没有任何的关联。

 

技术分享

图1 http请求的无连接无状态特性

 

HTTP 协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求"点到为止"不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。
客户端与服务器进行动态交互的 Web 应用程序出现之后,HTTP 无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。

 

再比如,在一个需要登录的系统(目前大多数企业级应用都有登录功能),我第一次登录的时候需要输入账号密码。如果没有其他任何机制的话,对于这个系统我们只能登录,其他的什么都干不了,想一下为什么。

 

于是,两种用于保持 HTTP 连接状态的技术就应运而生了,一个是 cookie,而另一个则是 session。

二、Web应用的会话机制:cookie和session

cookie和session都可以用来解决http协议无状态的特性,简单回顾一下它们的区别。

Cookie是由网景公司的前雇员Lou Montulli在1993年发明的,现今Cookie已经广泛使用了。

 

cookie 和session 的区别:

1. cookie数据存放在客户的浏览器上,session数据放在服务器上。

2. cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。

4. 浏览器对每个站点的cookie数,以及每个cookie的大小都是有限制的。

各浏览器中cookie个数和大小限制汇总(转)

服了这些人了,为啥转载不附上原作的地址!!!

5、所以个人建议:
    将登陆信息等重要信息存放为SESSION
    其他信息如果需要保留,可以放在COOKIE中

 

 

 

如果对于单一的应用的话利用会话机制登录问题不大。但是对于一个公司中共享账户的多个应用系统来说每个应用都需要登录一次就太麻烦了,用户会骂人的。

 

在以前采用的方案就是利用cookie实现单点登录

 

 

单点登录,单点注销。

 

全局会话与局部会话的关系

 

单点登录要解决的问题其实很简单:多个系统共享一次登录。

 

假设现在又A,B,C,D四个应用,你的一个账号可以同时登录这4个应用,那么你要如何实现单点登录呢?

 

有个很简单的方法就是令牌机制:当你登录了




以上是关于单点登录全方位学习的主要内容,如果未能解决你的问题,请参考以下文章

单点登录方案[学习]

Shiro学习(15)单点登录

Java单点登录学习心得

谈谈单点登录

第204天学习打卡(认证服务 单点登录)

CAS 单点登录原理解析