本科毕业设计WEB单点登录系统的研究与设计_第1页
本科毕业设计WEB单点登录系统的研究与设计_第2页
本科毕业设计WEB单点登录系统的研究与设计_第3页
本科毕业设计WEB单点登录系统的研究与设计_第4页
本科毕业设计WEB单点登录系统的研究与设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要随着计算机网络与信息技术的发展,企业网中应用系统越来越多。通常这些系统各自有一套认证系统,用户需要使用各种系统时,就必须逐一以输入口令等方式通过各种系统的身份认证。然而这强制需要用户记住不同系统的认证口令,繁琐的认证也增加了服务器的负荷。因此,需要一种独立的身份认证系统来统一管理各个应用系统的身份认证。本文在分析了主流web单点登录系统相关技术和规范上,总结出一个单点登录系统的基本模型结构,以身份认证服务中心和身份认证服务客户端系统构成。并通过Java平台实现了一个具备基本认证功能的web单点登录系统。该系统采用模块化方式开发,各层次相对独立,减少了已有系统集成到单点登录系统的开发量。关键

2、词:单点登录,统一认证,信息系统,网站设计AbstractWith the development of computer network and Information Technology, the number of applications is increasing in enterprise network. However, each application system has its own identity authentication system. The user who wants to access these applications must be ident

3、ified seriatim, like enter different password. But it compels user to remember each applications password, also, it makes application servers tend to be overburdened. Consequently, an unaided identity authentication system is needs to manage each applications identity authentication. Base on the mai

4、nstream technique and criterion of web single sign-on system, this paper sums up a simple single sign-on system model which is composed identity authentication service center and identity authentication service client system. Base on the java platform, a simple web single sign-on system is carried o

5、ut. This system adopts modularization development manner, the layers in system keep independence from each other, and it cut down integration workload.Keywords: SSO, unite attestation, information system, web site design目 录第一章 绪论11.1 研究目的与意义11.2 国内外研究概述21.3 本文研究内容及组织结构3第二章 单点登录系统相关技术与规范52.1 单点登录系统概念

6、52.2 通用的标准解决方案72.2.1 通用安全服务应用程序接口(GSS-API)7开放软件基金会(OSF)-分布式计算环境(DCE)82.2.3 嵌入式认证模块(PAM)92.3 现实解决方案102.3.1 Broker-Based(基于经纪人) SSO方案102.3.2 Agent-Based (基于代理人) SSO方案102.3.3 Token-Based(基于令牌) SSO方案112.3.4 Agent and Broker-Based SSO方案122.3.5 Gateway-Based(基于网关) SSO 方案122.3.6 SAML-Based(基于安全断言标记语言)方案13第

7、三章 web单点登录系统模型结构153.1 系统模型153.1.1 总体结构153.1.2 详细结构163.2 身份认证服务中心183.2.1 功能183.2.2 结构193.3 身份认证服务客户端203.3.1 功能203.3.2 结构213.4 系统运作流程22第四章 系统实现274.1 需求分析274.1.1 功能需求274.1.2 性能需求274.1.3 运行需求274.2 开发平台及工具284.3 数据库设计304.4 系统关键模块代码实现324.3.1 数据库连接类324.3.2 认证中心票据的生成364.3.3 认证中心对用户身份的认证364.3.4 认证客户端对用户身份的认证3

8、7第五章 总结与展望415.1 本文总结415.2 进一步研究方向41致谢43参考文献45第一章 绪论1.1 研究目的与意义随着信息技术和网络技术的发展,各种应用服务的不断普及,用户每天需要登录到许多不同的信息系统,如网络、邮件、数据库、各种应用服务器等。每个系统都要求用户遵循一定的安全策略,比如要求输入用户ID和口令。随着用户需要登录系统的增多,出错的可能性就会增加,受到非法截获和破坏的可能性也会增大,安全性就会相应降低。而如果用户忘记了口令,不能执行任务,就需要请求管理员的帮助,并只能在重新获得口令之前等待,造成了系统和安全管理资源的开销,降低了生产效率。为避免这种尴尬,牢记登录信息,用户

9、一般会简化密码,或者在多个系统中使用相同的口令,或者创建一个口令列表这些都是会危及公司信息保密性的几种习惯性做法。当这些安全风险逐步反映出来,管理员增加一些新的安全措施的时候,这些措施却在减少系统的可用性,并且会增大系统管理的复杂度。另一方面,较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务。例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门提供全公司人员的维护服务;各种业务系统为公司内部不同的业务提供不同的服务等等。这些系统的目的都是让计算机来进行复杂繁琐的计算工作,来替代人力的手工劳动,提高工作效率和质量。这些不同的系统往往是在不同的时期建设起来

10、的,运行在不同的平台上;也许是由不同厂商开发,使用了各种不同的技术和标准。每一个应用系统在运行了数年以后,都会成为不可替换的企业IT架构的一部分。随着企业的发展,业务系统的数量在不断的增加,老的系统却不能轻易的替换,这会带来很多的开销。其一是管理上的开销,需要维护的系统越来越多。很多系统的数据是相互冗余和重复的,数据的不一致性会给管理工作带来很大的压力。业务和业务之间的相关性也越来越大,例如公司的计费系统和财务系统,财务系统和人事系统之间都不可避免的有着密切的关系。为了降低管理的消耗,最大限度的重用已有投资的系统,很多企业都在进行着企业应用集成(EAI)。企业应用集成可以在不同层面上进行:例如

11、在数据存储层面上的“数据大集中”,在传输层面上的“通用数据交换平台”,在应用层面上的“业务流程整合”,和用户界面上的“通用企业门户”等等。事实上,还用一个层面上的集成变得越来越重要,那就是“身份认证”的整合,也就是“单点登录”。另外,使用“单点登录”还是SOA时代的需求之一。在面向服务的架构中,服务和服务之间,程序和程序之间的通讯大量存在,服务之间的安全认证是SOA应用的难点之一,应此建立“单点登录”的系统体系能够大大简化SOA的安全问题,提高服务之间的合作效率。因此,在市场上提出了这样的需求:网络用户可以基于最初访问网络时的一次身份验证,对所有被授权的网络资源进行无缝的访问。从而提高网络用户

12、的工作效率,降低网络操作的费用,并提高网络的安全性。正是基于这种市场需求,本文力图通过对web单点登录系统的研究,了解相关系统架构和技术,并尝试开发出一套解决类似市场需求的web单点登录系统。1.2 国内外研究概述在国内,较早使用SSO系统主要是一些大型企业,比如中国移动。随着网络的普及与发展,企业内应用系统的增加,越来越多的企业开始使用SSO来整合企业的应用系统。而国内提供解决方案的企业也蓬勃发展,出现了较多的SSO产品。在国外,对于SSO的研究较国内要早的多而且深入的多。成熟的大型商业系统或技术规范已经非常多了:微软的.NET Passport(已整合到Windows Live ID)1、

13、Sun Microsystems等建立的自由联盟计划(Liberty Identity Web Services Framework)2、Microsoft和IBM联合开发的Web服务联邦语言(WSFederation)以及结构化信息标准促进组织(OASIS)的安全服务委员会(SSTC)提出的安全断言标记语言(Security Assertion Markup Language,SAML)3。NET Passport技术是通过其Passport来实现单点登录的,只要用户通过微软的Passport服务器的验证,就可以访问所有 与Passport服务器合作的站点。但由于微软在Passport验证技

14、术方面不公开,使得在安全性方面有一定的隐患。自由联盟计划和Web服务联邦语言都是通过建立联盟身份,来访问联盟中的其它系统的。但由于Web服务是松耦合的,所以建立联盟身份并不是每个Web服务场景所必须的。SAML主要用来在不同信任域之间交换安全信息,为认证和授权服务提供了标准的描述,基于XML具有跨平台性,提供了强大的断言(Assertion)机制,使得跨域的系统可以通过断言来进行验证,适用于Web服务的松耦合环境。目前对基于SAML的Web服务单点登录模型学术界和工业界都有了一定的研究。SAML规范中的Bindings部分定义了SAML如何与SOAP协议进行绑定,为SAML与Web服务的结合提

15、供了标准。除了大型的商业系统,国外还有很多成熟的开源SSO系统。比如SourceID.NET,OpenSSO,CAS。1.3 本文研究内容及组织结构本文的研究内容主要是基于现有web单点登录系统和技术,分析研究各种系统的结构和技术,并尝试开发出一套实现基本功能的web单点登录系统。主要内容如下:1.介绍单点登录系统的相关技术及规范,并分别从技术,可实施性等方面进行比较。2.结合上一点的分析,概括出一种web单点登录系统的简易模型结构。3.在第2点的基础上,模拟一种需求环境,开发出一套web单点登录系统。组织结构如图1-1所示:第二章 单点登录系统相关技术及规范第三章 web单点登录系统模型结构

16、第四章 系统实现第五章 总结与展望第一章 绪论图1-1 本文组织结构图第二章 单点登录系统相关技术与规范2.1 单点登录系统概念Single Sign-On(SSO),中文名称为单点登录。指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。用一种生活中的例子来对比介绍。西安是一个旅游胜地,有很多著名的景点。通常人们在进入景点之前都需要购买该景点的门票,才能进入欣赏风景。当你游览各个景点时就显得很不方便,每个景点都需要重新购买单独的门票,既费时又费力。于是西安旅游局发行了一种旅游年票,只需购买该年票,就可以

17、随时进入西安市多个景点,并不需要在各个景点单独购票。单点登录机制与上述情况类似。当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录(1);根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据ticket(2);用户再访问别的应用的时候(3,5)就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性(4,6)。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。如图2-1所示: (3,5)(4,6)(2)(1)应用系统1应用系统3应

18、用系统2用户认证系统(2)图:2-1从上面的视图可以看出,要实现SSO,需要以下主要的功能:1. 所有应用系统共享一个身份认证系统。统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。 2. 所有应用系统能够识别和提取ticket信息要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从

19、而完成单点登录的功能。上述是对单点登录系统的概述,对于本文所研究的web单点登录系统而言,众所周知,Web协议(也就是HTTP)是一个无状态的协议。一个Web应用由很多个Web页面组成,每个页面都有唯一的URL来定义。用户在浏览器的地址栏输入页面的URL,浏览器就会向Web Server去发送请求。浏览器向Web服务器发送了两个请求,申请了两个页面。这两个页面的请求是分别使用了两个单独的HTTP连接。所谓无状态的协议也就是表现在这里,浏览器和Web服务器会在第一个请求完成以后关闭连接通道,在第二个请求的时候重新建立连接。Web服务器并不区分哪个请求来自哪个客户端,对所有的请求都一视同仁,都是单

20、独的连接。这样的方式大大区别于传统的(Client/Server)C/S结构,在那样的应用中,客户端和服务器端会建立一个长时间的专用的连接通道。正是因为有了无状态的特性,每个连接资源能够很快被其他客户端所重用,一台Web服务器才能够同时服务于成千上万的客户端。但是我们通常的应用是有状态的。先不用提不同应用之间的SSO,在同一个应用中也需要保存用户的登录身份信息。例如用户在访问页面1的时候进行了登录,但是刚才也提到,客户端的每个请求都是单独的连接,当客户再次访问页面2的时候,如何才能告诉Web服务器,客户刚才已经登录过了呢?浏览器和服务器之间有约定:通过使用cookie技术来维护应用的状态。Co

21、okie是可以被Web服务器设置的字符串,并且可以保存在浏览器中。当浏览器访问了页面1时,web服务器设置了一个cookie,并将这个cookie和页面1一起返回给浏览器,浏览器接到cookie之后,就会保存起来,在它访问页面2的时候会把这个cookie也带上,Web服务器接到请求时也能读出cookie的值,根据cookie值的内容就可以判断和恢复一些用户的信息状态。Web-SSO完全可以利用Cookie结束来完成用户登录信息的保存,将浏览器中的Cookie和上文中的Ticket结合起来,完成SSO的功能。2.2 通用的标准解决方案2.2.1 通用安全服务应用程序接口(GSS-API)Gene

22、ric Security Service Application Program Interface简写GSS-API4,译为通用安全服务应用程序接口,一个典型的GSS-API调用者是通讯协议本身,调用GSS-API,用可信性、完整性和机密性的安全服务来保护他的通讯。例如Kerberos。这就是GSS-API可以在不同的安全服务和应用程序被使用的原因,包括SSO。GSS-API 的目的是提供隐蔽特定的内在安全机制的一个接口。这可以帮助不同应用程序之间有更好的互操作性。一个典型的GSS-API调用者是通讯协议本身,调用GSS-API,用可信性、完整性和机密性的安全服务来保护他的通讯。调用者接受一

23、个本地GSS-API实现提供的一个令牌,并且把令牌传送给远程系统的对应方;对方接收令牌并把其传送给他的GSS-API本地实现处理。通过GSS-API这种方式实现的可用的安全服务在基于公钥和私钥的底层加密技术的多种机制上可实现的。关于认证和密钥分配系统的一个经常遇到的问题是,由于它要求对应用系统本身做出改动,所以经常受到的冷遇。考虑到这一点, 对一个认证和密钥分配系统来说, 提供一个标准化的安全API就显得格外重要。能做到这一点, 开发人员就不必再为增加很少的安全功能而对整个应用程序动大手术了。因此, 认证系统设计领域内最主要的进展之一就是制定了标准化的安全API, 即通用安全服务API(GSS

24、-API)。德州Austin大学的研究者们开发的安全网络编程(SNP), 对GSS-API接口进行了进一步的封装, 使同网络安全性有关的编程更加方便。GSS-API的设计假定和强调以下几个基本目标:1. 机制独立:GSS-API定义了一个接口来使用密码技术实现强壮的认证和其他安全服务-在独立于特定的底层机制的通用层上。例如,GSS-API提供的服务可以用密钥技术实现(例如,Kerberos)或者使用公钥技术实现(例如 X.509)。2. 协议环境独立:GSS-API独立于使用它的通讯协议组,允许在多种协议环境中使用。在进行调用的协议和GSS-API的应用中间,加入一个面向特定的通讯协议(如RP

25、C)的中介,可以保持GSS-API功能的起用和协议通讯的起用之间的同步。3. 协议联合的独立:GSS-API安全上下文构造是独立于通讯协议相关的构造的。这个特点允许单独的GSS-API实现可以被多种协议模块使用,以利于调用这些模块的应用程序。同时GSS-API服务也可以被应用程序直接调用,完全独立于协议关联。4. 适应多种实现:GSS-API客户不是被限制存在于实现GSS-API的系统定义的TCB(Trusted Computing Base)范围内;安全服务被以一种既适应intra-TCB调用,又适用extra-TCB调用的方式说明。2.2.2开放软件基金会(OSF)-分布式计算环境(DCE

26、)开放软件基金会(OSF)的分布式计算环境5。DCE是一个被广泛接受的解决方案,用于开发和部署安全的、企业级的分布式计算应用,提供网络安全、透明的服务分配和跨平台通信的能力,允许在一个异构的环境中快速设计基于主/从或对等结构的应用。它能方便地对网络提供最佳的性能和可靠的保护。因为DCE是由主流操作系统厂商的行业协会所支持的,所以这个标准在很多计算平台上都得到了广泛的支持。DCE核心功能现在已经被几乎所有的UNIX系统及其变种所支持,并且,在PC操作系统日益普及的今天,DCE核心服务也在PC机上变得越来越普遍。 DCE的认证管理服务是集成了基于DES私人密钥加密技术和MIT开发的Kerberos

27、技术的身份验证。这是一种企业级的安全解决方案,它使企业能为网络资源的使用提供安全。保管理护和通过企业Intranet的用户和通过Internet的远程用户都可以有控制地访问这些资源。DCE对于安全涉及到4个方面:1.认证(authentication), 2.安全通讯(secure communications), 3.授权(authorization), 4.和审计(auditing)。2.2.3 嵌入式认证模块(PAM)PAM(Pluggable Authentication Modules )6是由Sun提出的一种用于实现应用程序的认证机制。其核心是一套共享库,目的是提供一个框架和一套编

28、程接口,将认证工作由程序员交给管理员,PAM允许管理员在多种认证方法之间作出选择,它能够改变本地认证方法而不需要重新编译与认证相关的应用程序,同时也便于向系统中添加新的认证手段。 PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX 9.0等,并在Linux中得到广泛的应用。PAM的设计目标是:1.管理员可以选择认证方式,从简单的密码到智能卡系统。 2.可以为不同的程序配置不同的认证机制。如 使telnet使用 S/Key认证。而本机的 login 缺省使用一般的 UNIX password。 3.支持程序的显示方式的需求。如login 需要基于终端

29、的显示,而dtlogin需要X显示, 而ftp 和 telnet需要透过网络来认证。 4.支持为一个程序配置同时使用多种认证机制。 5.可是用户在使用多种认证机制时,不必为同一个密码敲入多次。 6.可是用户在认真时需要输入多个密码。 7.当底层的认证机制改变时上层软件不需要修改。 8.结构为system authentication提供一个pluggable_ model。 9.必须能满足现有的服务需要。 PAM的功能包括:1.加密口令(包括DES以外的算法); 2.对用户进行资源限制,防止Dos攻击; 3.允许随意Shadow口令; 4.限制特定用户在指定时间从指定地点登录; 5.引入概念c

30、lient plug-in agents,使PAM支持C/S应用中的机器-机器认证成为可能。 PAM为更有效的认证方法的开发提供了便利,在此基础上可以很容易地开发出替代常规的用户名加口令的认证方法,如智能卡、指纹识别等认证方法。2.3 现实解决方案2.3.1 Broker-Based(基于经纪人) SSO方案这种技术的特点就是,有一个集中的认证和用户帐号管理的服务器。经纪人7给被用于进一步请求的电子的身份存取。中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的第三方。例如Kerberos(如图2-2所示)、Sesame、IBM KryptoKnight(凭证库思想)等。图2-2 K

31、erberos图例该方案采用一个中央数据库来管理用户数据,可能遇到的问题是如果中央数据库当机,会导致所有应用系统无法认证使用。并且对于旧系统的改造也是使用该方案的一个挑战。2.3.2 Agent-Based (基于代理人) SSO方案在一个基于代理人的解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如, 它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理人能也被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个翻译。 一个基于代理人的解决方案的一个例子是SSH。SSH的英文全称是Secure Shell。通过使用SSH

32、,你可以把所有传输的数据进行加密,这样就能够防止DNS和IP欺骗。这是一个为在网上进行安全连接的客户/服务器类型加密软件,实现了一个密钥交换协议,以及主机及客户端认证协议。SSH的用户可以使用包括RSA算法的不同认证方法。当使用RSA认证时,代理程序可以被用于单点登录。代理程序可以在PC,便携机,或终端上运行,当被认证身份加入到代理程序中,如果该代理程序有新的子连结产生,则继承原有连结的认证。远程系统往往需要一个SSH服务器,用以与代理程序通信。利用个性化的安全代理来实现时,每个运行SSH 的主机(不管是服务器还是客户端)必须有一个安全代理程序在上面运行。例如,要获得主机密码和服务器密码,个性

33、化代理参与如下的两部分:1.密钥生成和存储:当服务器需要生成主机密码和服务器密码时,它会要求本地的安全代理来完成这一工作。本地安全代理或是自己生成密钥对,或是要求另一个安全代理来生成。SSH协议并不区分这两种情况。生成的密钥由安全代理保管,在需要时使用。 2.身份认证:当客户端得到主机密码或服务器密码,它要传给自己的安全代理,由安全代理负责对密码进行认证。作为认证结果,安全代理会返回成功或失败。SSH协议本身不关心有关密码的细节。稍后,如果有新的公钥算法引入SSH,只需要替换安全代理的部分。2.3.3 Token-Based(基于令牌) SSO方案 现在被广泛使用的口令认证,比如FTP,邮件服

34、务器的登陆认证,都可被称为single-factor 口令的认证。这是一种简单易用的方式,同时也是一种会带来很多安全隐患的方式。比如:易于猜测,很少进行更换,一个口令在多种应用当中使用等等一会危及安全的习惯。再如,在明文传输的网络环境里,经常使用并很少更换的口令,更易于被窃取和造成危害。RSA公司提出的一种称为SecurID的解决方案。与single-factor 不同是是它被称之为two-factor双因素的认证。构成认证的第一个因素是Personnel Identification Number (PIN),即用户身份识别码,这是一串保密的数字,可由系统管理员订制。第二个要素是SecurI

35、D token,一个小型的数字发生器,这个发生器的时钟将与网络环境中提供身份鉴别的服务器(ACE)保持同步,并且与ACE上的用户数据库保持映射。数字发生器每隔一段时间(比如一分钟)产生新的数字,PIN + 同步时钟数字就是用户的登录代码。解决方案中也有种被称为WebID的模块。在Web服务器上安装一个ACE服务器的代理程序,用来接受SecurID。当访问第一个需要认证的URL时,WebID会软件产生并加密一个标识,这个标识将在访问其他资源的时候被用到。2.3.4 Agent and Broker-Based SSO方案通过字面我们知道这是Agent 与 Broker的结合方案。当Agent-B

36、ase的解决方案和Broker-Base的解决方案被相结合时,就结合前者的灵活性和后者的中央式管理两方面的优势。Agent-Base的好处还在于是减少了改变网络应用程序的的代价。这样,与Kerberos相比,就不需要kerberize化的应用程序。2.3.5 Gateway-Based(基于网关) SSO 方案在Broker-Based的方案中,会在网络中放置一个看门狗的模型。而Gateway-Based则是另一种单点登录的方法,具体的做法是提供类似象门一样的网关用以安全的接入到可信的网络服务。网关可以是防火墙, 或者是专门用于通讯加密的服务器。在这种方案,所有的响应服务都需要放在被网关隔离的

37、受信网段里。Client通过网关进行认证后获得接受服务的受权。如果在网关后的服务能够通过IP地址进行识别,并在网关上建立一个基于IP的规则,而这个规则如果与在网关上的用户数据库相结合,网关就可以被用于单点登录。网关将记录Client的身份不再需要冗余的认证请求,便可授权所要求的服务。由于网关可以监视并改变应用服务的数据流,所以在不修改应用服务的同时,改变认证信息,并能提供合适的访问控制。2.3.6 SAML-Based(基于安全断言标记语言)方案SAML8是结构化信息标准促进组织 (OASIS)推荐的安全服务标准,主要用于相互信任的合作者之间交换安全信息。SAML是一种基于 XML的框架 ,集

38、成了 XML Signature、 XML Encryption和SOAP等其他产业标准协议和通信技术。SAML是联合身份认证的主要协议 ,允许企业发布在整个企业范围有效的用户身份认证和授权证书。SAML并没有设置中央化、 分散化或联合的基础结构或解决方案 ,相反 ,它用于实现身份认证信息、 授权信息和属性信息的交换。SAML并未推出任何新的身份认证模式或方法 ,也不是其他安全性标准 (如 WS - Security)的替换方案 ,它可以被添加到以前的应用程序或 Web浏览器应用程序中 ,不受任何限制。SAML在解决安全的 Web服务互操作性整个问题的过程中起重要作用。除了专用网桥以外 ,互操

39、作性的另一个必要条件是具备一个不同层和安全模型都可以解释的标准凭据。SAML为安全信息定义了一种标准化格式和一种在不同的应用程序之间传输安全数据的标准化方式。S AML规范由断言、 请求/响应协议、 绑定和配置文件这 4个部分组成。第三章 web单点登录系统模型结构3.1 系统模型3.1.1 总体结构传统的web应用系统和认证系统通常都是集成在一起的。用户在使用某个需要身份认证的web应用系统时,系统都会要求用户进行诸如输入用户名和密码之类的验证操作,并且各个web系统的认证模块都是孤立的。当用户在web系统1里通过认证并使用了相关服务后,转向web系统2时,即便他同时是web系统1和web系

40、统2的合法用户,他也必须重新在web系统2进行身份认证。如图3-1所示: 用户Web系统1Web系统2数据库数据库认证系统认证系统图3-1 传统web认证系统结构在图3-1中,web系统1和web系统2拥有同样的用户信息数据(比如企业内部各个应用系统,使用者都是相同的企业员工),但是因为各自拥有独立的认证系统,导致用户在使用各个系统时必须各自输入认证信息。而在单点登录环境下,用户和应用系统之间的认证方式9就有很大的不同了。如图3-2所示: 用户应用系统1应用系统2数据库数据库图3-2 单点登录系统结构认证系统对比图3-1,可以清楚的发现,在图3-2中两个应用系统各自的认证系统被剔除了,取而代之

41、的是一个公用的认证系统。不管用户访问应用系统1还是应用系统2,他都将先通过公有的认证系统的认证,而在通过认证系统的认证后,无论用户是在系统1还是系统2之间跳转,甚至更多的应用系统,都不需要再进行身份认证。3.1.2 详细结构 USERPSOSSOPSOPSODATABASE认证服务SSO票据应用服务PSO票据图3-3 SSO详细结构图在对web单点登录系统有了整体认识后,下面对系统进行详细的分析。假定我们称身份认证服务中心为SSO,身份认证服务客户端为PSO。如图3-3所示。首先用户访问某一个应用程序服务,系统检查用户是否登录或者持有SSO票据,如果用户没有登录,PSO则调用转发服务,将用户重

42、定向到SSO登录页面。用户输入授权的合法认证信息,SSO认证服务通过查询数据库的用户相关信息验证用户,验证无误后,SSO将调用SSO票据生成服务来为该用户生成SSO票据,然后将该票据附在之前PSO应用程序的URL后,并且调用重定向服务,将浏览器重定向到该PSO应用程序。此时PSO应用程序再次被用户访问,与之前不同的是访问URL增加了SSO生成的登录票据。PSO解析该URL,从中截获SSO票据,并进行验证。同过验证后,PSO将调用PSO生成服务来生成该用户对该PSO应用程序的访问票据。此后只要用户持有该PSO票据,无需到SSO验证即可使用该应用程序提供的相关服务。假定用户访问并通过某一个应用程序

43、身份认证后继续访问另一个处于相同认证系统保护下的应用程序。传统的认证方式必然需要用户重新输入认证信息进行身份认证。而在单点登录环境下,用户则省略了这些繁琐操作。用户同某一应用程序认证后,访问另一个应用程序时。应用程序同用户访问第一个应用程序时一样对用户进行身份认证,此时用户并没有该应用程序的PSO票据,换言之就是用户没有在该应用程序登陆过。此时应用程序将用户重定向到SSO进行认证。SSO在接收到该应用程序送来的认证请求消息后,发现该用户已经合法登录过其他应用程序并持有SSO票据,于是SSO将用户的SSO票据附在请求认证的应用程序URL后面,并重定向到URL。应用程序截取到URL后附加的SSO票

44、据并进行验证,验证通过后调用PSO票据生成服务生成用户的PSO票据。此时用户就可以访问该应用程序的相关服务了。3.2 身份认证服务中心3.2.1 功能通过上面的介绍,实际上本文介绍的web单点登录模型一个基于Ticket的认证方式10。User想要获取PSO端所提供的服务资源,先得通过PSO端的认证;而认证的先决条件是User向PSO端提供从SSO端获得的一个SSO票据。可以这么说,SSO票据是User进入某个PSO端应用服务的一张门票。而这张门票必须从一个合法的票据颁发机构获得,这个颁发机构就是所有PSO端所认同的身份认证服务中心(SSO), 同时这张票据具有超强的防伪标识:它是被SSO加密

45、的。对User来说, 获得SSO票据是整个认证过程中最为关键的部分。如图3-4。 USERSSOUsername&PasswordSSO 票据图3-4 USER与SSO身份认证服务中心无疑是单点登录系统中最重要的模块之一。它承担着对用户身份的合法性验证和分发合法身份消息的任务。从功能上说主要有一下几点:1.负责对用户进行身份认证。这一点同传统的应用系统中的身份认证是相同的。身份认证服务中心连接着存放用户信息的数据库。当用户提交认证信息(通常是用户名和密码)后,身份认证中心通过查询数据库中存放的用户信息,并进行比对来验证用户的身份是否合法。2.负责SSO票据的生成。这是身份认证服务中心一个较传统

46、应用系统中的身份认证不同的地方之一。当身份认证服务中心验证了用户的身份合法后,将调用SSO票据生成服务来生成用户通过身份认证服务客户端(PSO)认证所必需的SSO票据。通常SSO票据具备PSO确认用户合法的相关信息,但出于安全因素不直接包含用户的身份认证信息,并且经过一定的加密来防止被非法获取。3.负责处理用户在不同应用系统间切换时的身份认证。单点登录的特点就是用户在通过身份认证侯,访问另一应用系统时不需要再次输入身份认证信息。当用户访问某一个应用系统并通过认证中心认证后,继续访问另一个应用系统时,该应用系统端的PSO将用户重定向到SSO端进行用户身份认证,此时身份认证服务中心检测到该用户已经

47、通过身份认证。然后身份认证服务中心将该用户之前产生的SSO票据重新发送给该应用系统,应用系统接收到SSO票据后即确认了用户的合法身份。此功能就实现了单点登录系统环境下,用户在多个应用系统进行切换时不需要多次输入认证信息进行身份认证的繁琐步骤。3.2.2 结构 开始无SSO票据有SSO票据附加SSO票据重定向到PSO页面返回登录页登录成功登录失败生成SSO票据图3-5 SSO结构通过前面的分析,对单点登录系统中的身份认证服务中心有一定的认识。下面通过分析其结构来进一步了解身份认证服务中心的内部。如图3-5。分析上面的结构图,用户访问身份认证服务中心有两种情况:1.有SSO票据状态访问。即用户之前

48、在访问某个应用系统时已经通过身份认证服务中心的认证,再访问另一个应用系统时,该应用系统需要对用户身份进行验证。此时第二个应用系统将用户重定向到身份认证服务中心进行验证,SSO检查该用户时发现该用户已经登陆过,并持有SSO票据,于是不再需要用户输入用户名和密码等相关身份信息,而直接将SSO票据附加到请求验证的第二个应用系统的URL,然后重定向到该URL交由PSO端进行后续操作。2.无SSO票据状态访问。即用户是第一次访问身份认证服务中心。此时身份认证服务中心要求用户输入用户名和密码等之类的身份认证信息,然后SSO通过查询数据库对该信息进行比对认证。如果用户信息通过校验,则身份认证服务中心调用SS

49、O票据生成服务为用户生成SSO票据。然后将该SSO票据附加到请求验证的PSO端URL上,并重定向到该URL,继而交给PSO进行后续操作。3.3 身份认证服务客户端3.3.1 功能与身份认证服务中心配套的是身份认证服务客户端(PSO),它也是整个单点登录系统中非常重要的部分。通常来讲,身份认证服务客户端是嵌入应用系统中的一个模块。它与应用系统的权限系统相配合来达到对用户访问服务资源的控制。实际上,身份认证服务客户端在应用系统和身份认证服务中心扮演中间人的角色。一方面,用户访问应用系统提供的需要认证的服务或资源时,应用系统首先检查用户是否登录,如未登录,则调用身份认证服务客户端模块准备进行认证操作

50、。此时,身份认证服务客户端模块记录下当前用户访问URL,并将用户浏览器重定向到身份认证服务中心的登录页面,进行登录操作。另一方面,当身份认证服务中心验证了用户身份,生成了SSO票据,并且将用户浏览器重定向到附加了SSO票据的原请求认证URL后,此时身份认证服务客户端截获到URL中有SSO票据,然后携带该票据到身份认证服务中心进行SSO票据合法性验证。验证通过后,身份认证服务客户端即授权用户(或者通知应用系统的权限系统进行授权)访问相应服务资源。3.3.2 结构下面结合图例对身份认证服务客户端进行结构分析。如图3-6所示: 开始请求的URL跳转到SSO请求登录认证URL包含SSO票据URL不包含

51、SSO票据到SSO验证SSO票据合法性验证成功完成验证失败生成PSO票据返回用户访问资源图3-6 身份认证服务客户端结构图通过前面的分析,对单点登录系统中的身份认证服务客户端有一定的认识。下面通过分析其结构来进一步了解身份认证服务中心的内部。如图3-6。分析上面的身份认证服务客户端结构图,可以体现出身份认证服务客户端的中间人特点。同样,访问(系统内部模块间的调用)身份认证服务客户端也有两种情况:1.请求URL不包含SSO票据。可能情况是用户第一次访问应用系统或者PSO票据失效,需要重新认证。此时身份认证服务客户端的工作比较简单,只需要简单的将用户浏览器重定向到身份认证服务中心的登录页,让用户进

52、行登录即可。2.请求URL包含SSO票据。这表明用户已经(正常情况下)在身份认证服务中心进行了登录操作,该URL是身份认证服务中心重定向而来。此时身份认证服务客户端分析并截获URL中的SSO票据。然后调用相关模块服务到身份认证服务中心验证该SSO票据是否合法。如果是非法SSO票据,则将用户浏览器重定向到身份认证服务中心登录页面要求用户重新进行登录操作;如果是合法票据,通过验证后,身份认证服务客户端立即调用PSO票据生成模块来生成用户访问该应用系统的服务和资源所需要的凭证,即PSO票据。最后身份认证服务客户端返回用户之前所请求的服务或资源。3.4 系统运作流程在对单点登录系统模型结构进行了简单分

53、析后,下面通过一个模拟情景总结一下单点登录系统的运作流程。该情景模拟企业人事管理系统11。在这之前先来看一看传统的用户认证流程,如图3-7所示:开始员工打开人事管理系统登录页面系统认证模块接受用户账号填写用户名及密码查询用户认证数据库认证帐户信息数据库认证失败认证成功返回系统主界面图3-7 传统认证方式运作流程 传统的认证方式符合人们的常规思考。分为以下几个步骤:1.用户打开人事管理系统登录页(或者系统主页登录处)。2.用户输入用户名和密码,并提交登录请求。3.人事系统登录验证模块接收到用户填写的账号信息后,查询数据库,比对用户名和密码是否合法。4.如果用户帐户正确,则系统返回系统主界面,此时

54、用户已具有相应授权。如果用户帐户错误,则重新返回登录页面。接下来是使用单点登录系统后的认证流程。如图3-8所示: 开始员工打开人事管理系统主界面,试图进入系统查询用户认证数据库认证帐户信息数据库认证失败认证成功返回系统主界面向系统提交请求PSO获取到SSO票据没有SSO票据SSOSSO登录页面填写用户名及密码图3-7 单点登录认证方式运作流程使用了单点登录认证方式的系统运作流行相比较未使用单点登录的系统来说要复杂一些:1.用户打开人事管理系统主页,准备进入系统。2.嵌入到系统的单点登录PSO模块检测到用户没有登录过,即未持有PSO票据或者SSO票据。3.PSO模块将用户浏览器重定向到身份认证服

55、务中心的登录页面。4.用户输入用户名和密码等认证信息并提交。5.身份认证服务中心连接数据库对用户输入的认证信息进行比对,如果通过验证,则调用身份认证服务中心的SSO票据生成模块生成该用户的SSO票,并附加到请求认证服务的URL后,然后重定向该URL;否则返回登录页面要求用户重新输入认证信息。6.身份认证服务客户端接受到URL后面附加的SSO票据后,将携带该票据到身份认证服务中心进行验证。7.如果通过验证,身份认证服务客户端调用PSO票据生成模块来生成该用户的PSO票据授权用户访问权限,并返回到系统主页面;否则重新返回身份认证服务中心登录页面。第四章 系统实现基于前面对单点登录系统理论的学习研究

56、和分析,接下来本章将进行程序设计,开发一个单点登录系统。该系统将具备基本的单点认证功能。4.1 需求分析4.1.1 功能需求本系统将实现如下功能:1.用户注册功能:允许用户注册统一的通行证,可以在系统提供的两个示例网站中使用。2.单点登录功能:即用户在本系统提供的两个示例中的任意一个示例网站中登录成功后,无需再另一个示例网站中进行登录操作即可访问示例网站的内容。3.用户修改资料功能:允许用户修改注册资料及密码。4.后台管理用户功能:管理员可以查看、修改和删除注册用户。4.1.2 性能需求1.用户角度:尽可能提高系统响应时间;避免系统的代码级错误;友好的错误提示。2.系统角度:由于多个应用系统的

57、身份认证集中到一起进行处理,所以模拟高访问量情况下,web服务器需要承受高强度的负荷,在web服务器操作系统、数据库和网站开发平台的选择上要综合考虑。本系统选择了java平台作为网站开发语言,数据库选择了开源数据库MYSQL。3.开发角度:代码应尽量符合规范;选择最优算法;数据库设计要合理;数据库查询要尽量优化。4.1.3 运行需求1.硬件需求:一般PC机,笔记本2.软件需求: a. UNIX或WINDOWS服务器操作系统b. TOMCAT6.0+MYSQL5.0+JDK6c. IE或FIREFOX等浏览器支持4.2 开发平台及工具JSP12,全称为Java Server Pages / Servlet ,JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java 2 platform Enterprise Edition)应用体系中的一部分。Servlet的形式和前面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论