注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

门户系统单点登录(SSO)统一身份认证的实现原理  

2013-10-01 08:31:22|  分类: 网络认证 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
web-portal认证原理     WEB-portal认证原理:
1)在WEB应用系统所在的服务器上建立一个WEB应用页面,该页面可以通过GET方式接收门户系统传来的用户名密码;
2)然后可按照WEB应用系统的权限管理机制进行身份验证;
3)验证通过后生成一个证书(Cookies或Session),将该证书传递给WEB应用程序,从而进入该 WEB应用系统。


实现SSO的技术主要有:

(1)、基于cookies实现,需要注意如下几点:如果是基于两个域名之间传递sessionid的方法可能在windows中成立,在unix&linux中可能会出现问题;可以基于数据库实现;在安全性方面可能会作更多的考虑。另外,关于跨域问题,虽然cookies本身不跨域,但可以利用它实现跨域的SSO。

(2) Broker-based(基于经纪人),例如Kerberos等;这种技术的特点就是,有一个集中的认证和用户帐号管理的服务器。经纪人给被用于进一步 请求的电子的身份存取。中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的"第三方"。例如Kerberos,Sesame,IBM KryptoKnight(凭证库思想)等。Kerberos是由麻省理工大学发明的安全认证服务,当前版本V5,已经被UNIX和Windows作为默认的安全认证服务集成进操作系统。

(3) Agent-based(基于代理人)在这种解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如,它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理人被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个"翻译"。例如SSH等。

(4) Token-based,例如SecurID,WebID,现在被广泛使用的口令认证,比如FTP,邮件服务器的登录认证,这是一种简单易用的方式,实现一个口令在多种应用当中使用。

(5) 基于网关Agent and Broker-based,这里不作介绍。

(6) 基于安全断言标记语言(SAML)实现,SAML(Security Assertion Markup Language,安全断言标记语言)的出现大大简化了SSO,并被OASIS批准为SSO的执行标准。开源组织OpenSAML 实现了 SAML 规范。

CAS由耶鲁大学开发的单点登录系统(SSO,single sign-on),应用广泛,具有独立于平台的,易于理解,支持代理功能。



1、单点登录的概念

由于企业具有许多应用系统,每个应用系统均有自己的登录界面。工作人员在使用每个应用系统时,都需要输入用户名和密码,这就为工作人员操作带来了不便。单 点登录(Single Sign-On,缩写为SSO),就是解决这种问题的方法,它是目前企业业务整合时使用较多的一种解决方案。通过SSO,用户只需要在某个应用系统入口登 录一次,就可以访问所有与该应用系统相互信任的其它应用系统。

SSO的理想状况是用户可以通过任意一个应用系统进行单点登录。这种情况主要发生在一些基于Web的应用系统中。在这种情况下,单一的登录点(可以称为 SSO Entry)是所有应用系统中唯一的验证用户权限的地方。用户在登录点登录后将产生一个SSO票据(或凭证),然后由登录点将这个票据传递给WEB或应用 系统,在传递的票据信息中,针对不同的C/S结构或B/S结构应用系统可能还会包括用户名及密码等信息。应用系统在收到这些票据信息后,对其用户信息进行 验证,进而登录到应用系统中。

在使用单点登录的过程中,SSO Entry需要完成下列功能;

首先,SSO Entry需要为用户提供一个身份验证的登录界面,用户在此界面中输入用户名及密码;

其次,SSO Enry需要根据用户所具有的权限,显示用户可以使用的应用系统。

第三,SSO Entry可以根据用户的选择调用应用系统,应用系统可以是B/S结构或C/S结构。

第四,SSO Entry可以将SSO票据传递给应用系统,在传递的票据信息中,针对不同的C/S结构或B/S结构应用系统可能还会包括用户名及密码等信息。

第五,SSO Entry可以关闭SSO,并且在SSO票据失效后,可以关闭SSO Entry

2、单点登录的缺陷

由于只有符合SSO规范的应用系统才能实现真正的SSO。因此,并不是任何系统都可以实现真正的单点登录。许多企业采用了自底向上的信息化建设方式,建立 了许多相互独立的底层应用系统,而这些应用系统大多数都不符合SSO规范。在这些应用系统的整合过程中,如果要实现SSO,则必须要修改这些应用系统的用 户验证模块,使其能通过SSO票据来实现用户身份的验证,并根据用户身份来授权用户的操作权限。这就意味着必须对应用系统的代码进行修改。

SSO还需要建立一个统一的身份验证和权限管理信息库。然而,在现有的许多应用系统中,每个应用系统都有不同的身份验证和权限管理模块,系统的身份验证模 型、权限管理模型、权限信息存储结构和应用系统的业务逻辑之间有非常紧密的耦合性。这种紧耦合性使得身份验证和权限管理模块很难进行扩展,其代码修改的工 作量将非常之大。

由于上述这些SSO的局限性,使得在企业门户系统中无法实现真正的SSO

3、改进的单点登录实现方式

为了在企业门户系统中达到单点登录的效果,可以采用一种变通的方式,对SSO进行改进,我们称之为伪单点登录。真正的单点登录的实现过程是:通过SSO Entry进行身份验证后,企业门户系统生成一个统一的SSO票据,保存在票据证书服务器上,应用系统可通该服务器来读取SSO票据,并验证该用户是否经 过了统一的身份验证。

伪单点登录的实现过程是:通过SSO Entry进行身份验证后,将用户名及相应的密码传递给应用系统,应用系统通过本身的身份验证模块来进行身份验证和授权管理。通过这种方式,也可以达到单点登录的效果。

门户系统单点登录(SSO)统一身份认证的实现原理 - lzdzhy-itoedr - itoedr的it学苑
 

单点登录的实现方式按照应用系统的结构可分为四种,如图1。其中最下面的一种方式为真正的单点登录,上面的三种方式是通过不同形式实现的伪单点登录。需要提到的是,这几种单点登录的实现方式并没有所谓的优劣之分,只是其适用的应用环境不同而已。

门户系统单点登录(SSO)统一身份认证的实现原理 - lzdzhy-itoedr - itoedr的it学苑
 

1 单点登录的四种方式

(1)可共用证书服务器的Web系统

用户在门户系统上输入用户名和密码后,门户系统进行身份验证,并生成一个票据存储在票据证书服务器上。当用户访问可与门户系统服务器共用票据证书服务器的 Web应用系统时,该WEB应用系统可以直接从票据证书服务器中读取票据信息并对用户的票据进行验证。这一种单点登录的实现方式是真单点登录。

(2)无法共用证书服务器的Web系统

用户在门户系统上输入用户名和密码后,门户系统进行身份验证,并生成一个访问应用系统所需要的用户名与密码。当用户访问无法与门户系统共用票据证书服务器 的web应用时,门户系统通过Get方式将加密后的用户名和密码传递给该Web应用中的一个WEB登录适配器(其实现原理及方法见下文)中,WEB登录适 配器得到数据后,解密得到用户名和密码,然后调用Web应用的身份验证模块进行身份验证,验证成功后,即可进入应用系统,并根据权限访问受保护的资源。这 一种单点登录的实现方式是伪单点登录。

(3)基于C/S结构并需要输入用户名口令的系统

用户在门户系统上输入用户名和密码后,门户系统进行身份验证,并生成一个访问应用系统所需要的用户名与密码。当用户需要打开一个需要输入用户名密码的 C/S结构的软件时,门户系统通过命令行参数的方式将经过加密的用户名和密码传递给该应用系统的软件登录适配器(其原理及方法见下文)中,软件登录适配器 自动打开该应用系统并输入解密后的用户名和密码,自动登录到应用系统中。这一种单点登录的实现方式是伪单点登录。

(4)基于C/S结构但不需要输入用户名/口令的系统

一些应系统,不需要用户验证就可以使用。比如一些工具软件(如记事本、通讯录、Word)。用户使用对这些应用系统时,可以从门户系统直接打开。

还有一些应用系统,提供了自动登录的接口,比如可通过命令行参数将用户名密码传递到系统中。用户在使用这些系统时,门户系统可以通过增加命令行参数(命令行参数中包括了用户名及密码等信息)的方式来打开这些应用系统。这一种单点登录的实现方式是伪单点登录。

3.1 WEB登录适配器

       WEB登录适配器工作原理是:在WEB应用系统所在的服务器上建立一个WEB应用页面,该页面可以通过GET方式接收门户系统传来的用户名密码,然后可按 照WEB应用系统的权限管理机制进行身份验证,验证通过后生成一个证书(CookiesSession),将该证书传递给WEB应用程序,从而进入该 WEB应用系统。

3.2 软件登录适配器

软件登录适配器的是一个小的可执行程序,该程序部署在应用系统所在的计算机上。其工作步骤是:首先通过命令行参数的方式接收用户名口令,然后打开应用系 统,并找到登录窗口中用户名、口令的输入子窗口以及“登录”按钮,最后通过键盘模拟的方式向用户名、口令的输入子窗口中分别输入用户名和口令,并模鼠标拟 点击“登录”按钮,进入应用系统。

门户系统单点登录(SSO)统一身份认证的实现原理 - lzdzhy-itoedr - itoedr的it学苑
理解图1
门户系统单点登录(SSO)统一身份认证的实现原理 - lzdzhy-itoedr - itoedr的it学苑
 理解图2
门户系统单点登录(SSO)统一身份认证的实现原理 - lzdzhy-itoedr - itoedr的it学苑
 理解图3
门户系统单点登录(SSO)统一身份认证的实现原理 - lzdzhy-itoedr - itoedr的it学苑
 理解图4
 
 注:分析以上多种方案,可以优先出与需求更为应合的方案。

4、统一身份验证的实现

门户系统中涉及到许多子系统,这些子系统之间可能是不同时期由不同厂商开发应用的系统。各个应用系统之间彼此相互独立,并且每个应用系统都有自己的用户身 份验证模块与权限管理策略。在企业应用系统整合的过程中, 需要通过企业门户系统对这些子系统的用户进行统一的管理, 达到单点登录、统一身份验证的目的。

统一身份验证,可分为两个层次:登录门户的用户身份验证和登录应用系统的用户身份验证。

4.1 登录门户的用户身份验证

用户首先需要登录到企业门户系统,然后才能访问企业门户系统中的应用系统。因此,用户在登录企业门户系统中,需要首先进行身份验证。其工作流程如下:

首先,用户在登录页面中输入用户名和密码;

其次,企业门户系统通过身份验证模块对用户名称密码进行验证;

第三,验证成功后,将在服务器端生成一个票据信息并保存起来,该票据信息可用于前文中所述的真单点登录;

第四,服务器端将用户验证信息传递给企业门户系统的展现策略管理,通过展现策略管理实现用户界面的个性化定制,并确定应用系统在客户端界面中的展示方式;

第五,将定制的信息显示在客户端。

4.2 登录应用系统的用户身份验证

用户登录到企业门户系统后,再调用应用系统时,将使用该应用系统的用户身份验证模块进行身份验证。

由于企业门户系统中登录所用的用户名密码与各个应用系统所用的用户名密码并不相同,因此,可以通过建立一个用户映射表的方式, 将企业门户系统的用户与应用系统中的用户(或角色)对应起来,如图2。企业门户系统的用户与应用系统的用户可以是多对1的关系。当用户访问该应用系统时, 企业门户系统首先通过用户映射表得到应用系统的用户名与密码,并将此用户名和密码传递给应用系统,由应用系统进行用户身份验证并进行权限分配。

 

门户系统单点登录(SSO)统一身份认证的实现原理 - lzdzhy-itoedr - itoedr的it学苑
 

2 用户映射示意图

对一些基于WEB的应用,也可以在应用系统中安装门户系统的身份验证代理程序。比如前文中所述的WEB登录适配器就是一个身份验证代理。当用户访问该应用 系统时, 企业门户系统将应用系统的用户名及密码传递给身份认证代理,身份验证代理通过应用系统的身份验证系统进行身份验证, 验证通过后,将返回的验证票据或用户信息提交给应用系统。应用系统根据此验证票据或用户信息进行权限和界面管理,将可用的界面展示给用户。


  评论这张
 
阅读(468)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017