【SSO单点登录】1.单点登录概念

本文章由聚项云平台博客独家原创,转载请注明出处:http://blog.jxcode.com/?p=2793&preview=true

一、单点登录概述
(1)什么是单点登录?应用场景是什么?
单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。
理解一下上面对于单点登录的定义,主要来解决“企业业务整合”,那么什么是“企业业务整合”?其实就类似下面一种场景:
假设有一个客户是一个银行,那么该银行可能会有许多的业务,可能不同的业务会交给不同的系统来处理:

上面的银行的业务系统有可能是不同的软件公司(供应商)来开发,这些由不同供应商开发的系统共同构成了庞大的银行的业务系统集合。
而我们要思考一个问题,就是上述银行的许多个不同的业务系统,都需要“登录”的功能,即每个系统都需要用户输入用户名和密码来进行验证才能进入系统。
此时,银行有一个业务员,他既做信用卡的业务,又做理财产品的业务,此时他可能经常要登录不同的业务系统去处理业务。而每个系统有自己的一套登录机制,用户名和密码的编制可能也不一样。
这就导致了一个问题,一个业务员可能同时要登录许多个系统,而且有时候登录会话超时了,还需要重新登录,十分麻烦。

此时客户肯定有这样一个需求:在这些业务系统之上,做一个类似“门户”的系统,将下面的子系统纳入仅这个“门户”系统,作为用户的统一登录入口,进入“门户”系统后,再将子系统展示,供用户选择,当用户选择了自己想要登录的系统,点击进去就可以使用了,无需再次登录。类似如下:

对于用户来说,上述操作十分方便,不用逐一的登录所有的子系统,只需要一次认证,就可以使用不同验证机制的系统,十分提高工作效率。

而单点登录(Single Sign On)机制,即可满足上面的业务场景的需求。而它要解决的问题就是,如何统一管理每个系统的登录认证信息,如何统一不同系统不同用户在不同系统中的操作权限。它实现了类似一个门户一样,将所有子系统整合在一起的机制。

(2)SSO的定义
SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有互相信任的应用系统。

(3)SSO的通俗定义
SSO的一种较为通俗的定义是,SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需登录一次,即通过一个应用的安全验证后,在访问其它应用中的受保护资源时,不需要再次登录验证。

二、单点登录的伴侣—数据交互平台
除了上面我们提到的类似银行业务系统整合的案例,系统的来定义促使单点登录机制的缘由,即是—–企业应用集成(EAI,Enterprise Application Integerayion)。
企业集成可以在不同层面上进行:例如在数据存储层面上的“数据大集中”,在传输层面上的“通用数据交换平台”,和用户界面年上的“通用企业门户”等等。事实上,还有一个层面上的集成变得越来越重要,那就是“身份认证”的整合,也就是“单点登录”。
例如下面的企业多系统的架构图:

该企业有多个业务系统,而每个业务系统都有自己的数据存储层(不同的系统不同的数据库)。
那么在最上面的门户中,就可以利用“单点登录”的机制,来解决统一登录子系统认证的问题。但是,每个系统之间的数据存储机制是隔离的,虽然解决了登录的问题,但是如果需要在门户与子系统之间实现数据互通,还需要做以下事情:

即在门户下面与应用系统上面添加一个“数据交换平台”。门户的作用就是解决统一登录的问题,而“数据交换平台”主要解决各个系统中数据存储的问题,即在“数据交换平台”中可以轻松的获取下面所有子系统中的数据存储信息。
关于“数据交换平台”,在生活中就有一个很普遍的例子:跨行取款。
在有“银联”之后的时代,我们拿着农行的储蓄卡,到建行的ATM机器上取款,也是可以取到的,并且还可以查询所剩余额。这就是说明这些加入“银联”的银行,他们的数据就通过了一个类似于“数据交换平台”的机制进行了分享:

上面的原理看似很简单,但实际操作起来十分复杂。
首先,不同银行的系统接入“数据交换平台”是有阻力的,并不是所有的系统都原因将数据共享出来。
其次,不同系统的开发语言可能不同(Java/PHP/C#…),数据存储格式(行级数据/key-value键值对/文件等)可能不同。如果进行统一的数据交换,要做到兼容和数据格式统一,是很不容易的。
在这里我们只讨论其大致原理,让大家了解“数据交互平台”的作用。

所以,综上所述,“单点登录”和“数据交互平台”是企业应用集成(EAI)的十分重要的功能点。

三、系统比较
下面是传统综合系统的架构图:

可以看到,所有子系统可能由不同的软件公司开发,之间的登录机制和数据存储相互独立。

下面是整合了单点登录的综合系统:

上面的整合门户包含了“单点登录”和“数据交互平台”的功能,使用户既能够实现统一认证登录,又能够共享子系统中的数据。

四、单点登录技术的实现机制
(1)用户在第一次登录系统A时,会被引导到认证系统中进行登录;
(2)根据用户提供的登录信息,认证系统进行身份认证。如果验证成功,会返回用户一个认证的凭证(ticket):

(3)用户再去访问系统B时,会带上这个ticket作为自己认证的凭证。系统B会将这个ticket发送到自己的认证系统中进行验证,检查ticket的合法性:

(4)如果验证通过,用户就无需再次登录,可以直接进入B系统。
综上所述,在单点登录中,最终要的就是这个“凭据(ticket)”,如果没有ticket凭据,或ticket过期的话,单点登录就没有意义了。

实现上述凭据的做法有很多种,其中一种最简单的做法就是使用Web网站开发中的“cookie”。
cookie是保存在客户端的一种记录,对于其他业务系统来说记录的是一个统一信息。利用cookie实现简单单点登录的模式如下:

在cookie机制中,用户第一次登录系统A,此时系统A会判断客户端的cookie中有没有指定的内容,如果没有,就将用户引领到认证系统中进行登录。然后用户在认证系统中登录后,认证系统会将用户的登录凭据保存在cookie中,返回给客户端。然后再次登录系统A时,系统A判断客户端的cookie中包含登录凭据,则允许进入系统A,否则拒绝。同理登录其它子系统也是一样。

上面是单点登录的一种简单实现方式,但是目前在实际企业中很少有这么做的,一个是不安全,cookie访问权限十分随意,可能会泄露用户的凭据资料(隐私凭据),二是cookie被清理起来十分方便,主流的浏览器和一些系统优化工具都会很轻松的将cookie清除,导致公共凭据丢失。所以在这里大家了解这种机制即可。

未经允许不得转载:JX BLOG » 【SSO单点登录】1.单点登录概念

赞 (2)

评论 0

评论前必须登录!

登陆 注册