【SSO单点登录】2.单点登录分类

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

上一篇我们讲解了SSO单点登录的概念以及应用场景,本篇我们来继续探讨单点登录的实现方式。

在讲分类之前,先再深入了解一下有关单点登录的一些特性:
一、简单的单点登录应具备的功能
一个简单的单点登录系统,至少要具备以下两个特征:
(1)身份认证系统
如果我们在项目里面真正的实现一个现实的单点登录系统,必不可少的系统就是“身份认证系统”。所有应用系统共享一个身份认证系统。

统一的认证系统是SSO的前提之一。认证系统的主要功能就是将用户的登录信息和用户信息库做比较,对用户进行登录认证;认证成功后,认证系统应该生成一个统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行校验,判断其有效性。

通俗的解释就是,这个“身份认证系统”就类似户籍管理部门的户籍管理系统,每个人去办理身份证,户籍管理部门会给你一个唯一的身份证号码作为你的凭据,当需要进入一些需要认证的场所,该场所就会拿着你的唯一凭证——身份证号码,查询户籍管理系统提供的接口,如果身份证号存在,且没有违法记录,并且符合你的生理特征,就通过,否则你要去办理一个唯一凭证。

要了解,这个“身份认证系统”是独立于任何系统的一个单独的系统。

(2)所有应用系统能够识别和提取ticket信息
要实现SSO的功能,让用户只登录一次,就必须让用户能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

上面两个条件,一个是针对认证系统,一个是针对在单点登录环境下的应用系统。

二、单点登录需要注意的问题
(1)单一的用户信息数据库并不是必须的
我们前面提到过,在单点登录的系统中,每个单独的系统的数据库一般都是分开的,也就是说所有的子系统的数据是相互独立且隔离的:图2.1

而单点登录并不要求用户信息数据库统一。事实上,只要统一认证系统,统一ticket的产生和校验,无论用户信息存储在什么地方,都能实现单点登录。

(2)统一的认证系统也并不是只有单个的认证服务器
一般来说,一个企业或团体的子系统统一认证只需要一个认证服务器即可,但是有的时候就需要两个或多个认证系统进行认证。就拿之前我们提到的,拿着银行A的银行卡,去银行B的ATM机取钱,实际操作过程如下:
图2.3

首先用户通过银联系统访问了银行B的系统,此时银行B会向银行A询问银行A该用户的凭据信息是否有效,银行A通过自己的单点登录系统进行确认,然后将相关凭据结果返回给银行B。

所以,整个系统可以存在两个以上的认证服务器,这些服务器甚至可以是不同的产品。
那么认证服务器之间就要进行凭据交换。这里,认证服务器之间要通过标准的通讯协议,相互交换认证信息,能完成更高级别的单点登录。
如下图:

图2.2

当用户在访问应用系统A时,由第一个认证服务器1进行认证后,得到由此服务器产生的ticket。当他访问应用系统B的时候,认证服务器2能够识别此ticket是由第一个服务器产生的,通过认证服务器之间的标准的通讯协议(例如SAML)来交换认证信息,仍然能够完成SSO功能。

三、单点登录的好处
(1)方便用户
用户使用应用系统时,能够一次登录,多次使用。用户不再需要每次输入用户名和用户密码,也不需要牢记多套用户名称和用户密码。单点登录平台能够改善用户使用应用系统的体验。

(2)方便管理员
系统管理员只需要维护一套统一的用户账号,方便、简单。相比之下,系统管理员以前要管理很多套的用户账号。每一个应用系统就有一个套用账号,不仅给管理上带来不妨表,而且也容易出现管理漏洞。

(3)简化应用系统开发
开发新的应用系统时,可以直接使用单点登录平台的用户认证服务,简化开发流程。单点登录平台通过提供统一的认证平台,实现单点登录。因此,应用系统并不需要开发用户认证程序。

如果的使用了单点登录平台的系统,需要和其它的系统进行统一认证,则需要大的单点登录接入小的单点登录系统,此时小的单点登录系统就相当于单点登录群体中的一个应用系统了:
图2.4
下面就是单点登录的具体分类
四、单点登录的分类
(1)跨子域单点登录
所谓的跨子域单点登录,就是A、B站点和P站点位于同一个域下面。比如:
A站点为http://bbc.jack.cn,B站点为http://mail.jack.cn,P站点为http://www.jack.cn。
以百度的多个子域模块为例:
图2.5
上面登录了百度门户系统后,就可以使用下面的服务了。这就是一种跨子域的单点登录效果。
在跨子域单点登录的模式中,除了统一认证系统以外,也完全可以使用系统的session会话来实现单点登录,只要用户登录,就会产生session,而只要session会话没有过期,其它子域的模块可以读取session的认证信息,如果存在且没有过期,就可以放行了。

(2)完全跨域单点登录
所谓的完全跨域单点登录,就是A、B站点没有共同的父域,但仍可以共用登录。比如:
A站点为http://www.jack.cn,B站点为http://www.hellworld.cn。
假设搜狐收购了校内网,当用户登录搜狐时,可以直接进入校内网而不需登录:
图2.6
即跨域单点登录,就是完全不同的域之间的相互认证效果。

在这种完全跨域的不同系统中,就无法使用session会话进行认证了,因为不同系统的session会话时完全隔离的。而用cookie机制进行单点登录,则安全性十分危险,黑客可以利用修改cookie进行认证。所以这种完全跨域的情况,必须使用一个独立的认证系统进行认证。

未经允许不得转载:JX BLOG » 【SSO单点登录】2.单点登录分类

赞 (1)

评论 0

评论前必须登录!

登陆 注册