基于SOA的单点登录系统研究与设计(session)

沉默8090

贡献于2012-09-10

字数:0 关键词: WEB服务/RPC/SOA

中南大学 硕士学位论文 基于SOA的单点登录系统研究与设计 姓名:杨荣华 申请学位级别:硕士 专业:计算机应用技术 指导教师:胡志刚 20080920 摘要单点登录的基本思想就是一次登录,多次访问。随着Intemet技术不断发展,Intemet应用系统不断增加,经常需要在多个Web应用系统完成协同工作。单点登录可以简化用户操作,提升用户体验,降低开发和管理成本。因此,单点登录成为当前国内外安全领域的研究热点。在分析研究常见单点登录技术的基础上,通过对Cookie、Session以及IP等技术的分析比较,针对基于W.eb应用的单点登录系统Ticket展开研究。通过深入分析各种单点登录系统模型,研究并提出了基于经纪人的主动式、被动式单点登录系统方案和利用共享Session技术的基于代理的单点登录系统方案。通过对三个方案的分析比较,明晰了共享Session技术在单点登录系统中应用的优势。单点登录技术中共享Session技术方法是一种新颖的方法和手段,该方法特别适合于各种不同类型Web应用软件的单点登录系统研究与开发。在对现有Web应用系统的分析研究基础上,运用共享Session技术设计实现了福建工程学院单点登录系统原型。实际应用表明,运用共享Session技术的单点登录系统可最小化各Web应用系统的软件修改量,并具有安全、可靠特点。关键词SOA,单点登录,认证,共享Session ABSTRACTThebasicphilosophyofSingleSign—On(SSO)istoprovideunlimitedaccessingwithsinglesign-on.WiththecontinuousdevelopmentofIntemettechnology,Internetapplicationscontinuousincrease,oftenworktogethertocompleteinanumberofWebapplications.SSOcansimplifyuser’Soperations,advanceuser’Sexperience,reducethecostofdevelopmentandmanagement.Asaresult,SSOhasbecomethehotspotofresearchsecurityfieldintemallyorabroad.ThecommontechnologyofSSOisanalyzedandresearched,throughanalysisofCookie,SessionandIPtechnology,ticketofsinglesign-.onsystemofWeb·-basedapplicationsisresearchedgradually.ThroughindepthanalysisofavarietyofSSOsystemmodels,researchandbringforwardanactiveorpassivebroker-basedSSOsystemprogramandtheagent-basedSSOsystemprogramofusingSessionsharingtechnology.Throughthecomparisonandanalysisofthesethreeprograms,theadvantagesofSessionsharingtechnologyintheSSOsystemapplicationisclearlydefined.ApplyingtheSessionsharingtechnologyinSSOisanovelmethod,itisparticularlysuitableforresearchanddevelopmentofSSOsystemonavarietyofdifferenttypesofWebapplications.BasingontheanalysisoftheexistingWebapplications,anoriginalformoftheSSOsystemofFujianUniversityofTechnologyisimplementedtouseSessionsharingtechnology.TherealityshowsthattheSSOsystemwhichusesSessionsharingtechnologycanminimizetheamountofmodificationinWebapplicationsystemsoftware,havesafeandreliablecharacteristicsso.KEYWORDSSOA,SingleSign-On,authentication,SessionsharingH 原创性声明本人声明,所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我共同工作的同志对本研究所作的贡献均已在论文中作了明确的说明。作者签名:左查蔓堡日期:2QQ昼年旦月』盟日关于学位论文使用授权说明本人了解中南大学有关保留、使用学位论文的规定,即:学校有权保留学位论文,允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容,可以采用复印、缩印或其它手段保存学位论文;学校可根据国家或湖南省有关部门规定送交学位论文。\期:巡年里月也日 硕士学位论文第l章绪论第1章绪论1.1基于SOA的单点登录系统研究背景随着信息技术和网络技术的发展,各种网络应用不断扩展和延伸,服务同益增多。用户每天登录到许多不同的信息系统,每个系统都要求用户遵循一定的安全策略进行认证和管理。这个复杂的状况越来越使普通用户、系统管理员以及系统开发者大伤脑筋。用户如果要登录到多个系统,他们不仅要面对多个登录界面,他们可能还不得不记忆不同的用户名和口令。各个系统中有他们各自的账号管理方案,互相不信任。系统管理员不得不维护多个系统中的用户信息,保证数据的一致性。给各个系统的整合带来很大的困难和麻烦。随着用户登录系统的增多,出错的可能性就会增加,受到非法截获和破坏的可能性也会增大,安全性就会相应降低。越来越多的用户提出这样的需求:网络用户可以基于最初访问网络时的一次身份认证,对所有被授权的网络资源进行无缝的访问,从而提高用户和管理员的工作效率,降低网络操作费用,并且不降低网络的安全性和操作的简便性。单点登录(SingleSignOn)t¨,简称为SSO,就是通过用户的一次性鉴别登录,即可获得需访问系统和应用软件的授权,在此条件下,管理员无需修改或干涉用户登录就能方便的实施希望得到的安全控制。单点登录消除了用户在一个会话中切换不同应用时的重复认证。单点登录对用户来说,可以是用户在各个会员系统间无缝的穿梭,并减少需记忆的密码等安全信息,提升了用户体验。对系统管理员来说,由于用户降低了密码丢失的可能性,并且单点登录系统的管理是统一集中的,减少了系统维护管理的代价,降低了系统的运行成本。所以单点登录对现代企业系统具有非常重要的作用。1.2单点登录研究现状与存在问题1-2-1单点登录研究现状正如上面提到的,单点登录的概念是随着网络应用的不断增多,为了解决多个应用的登录问题才出现的。单点登录系统虽然经过了不长的发展时间,但是现在市场上已经有了非常丰富的单点登录产品。在这些单点登录系统中,有一部分是实现了个别产品的单点登录,比如说,当登录了微软的Windows系统后,就可以不再经过认证,直接可以访问本地的SQL数据库;还有一部分是实现了单个应用内部的单点登录,这种类型不是我们本文所涉及的内容;另外一部分实现 硕+学位论文第1章绪论了多个应用的单点登录,这种类型是本文重点讨论的内容。目前用于应用软件典型的单点登录系统主要有:1.Microsoft的.NetPassport系统Microsoft的.NetPassport系统【2】【7】是Microsoft公司在Intemet建立的一个在线系统,它允许用户注册登记,并提供集中式的身份认证服务,以此实现单点登录。当注册用户单击一个服务网页进行登录时,浏览器向该网页发送一个HTTP请求,该网页返回一个HTTP重定向到PassportServer的SignOil页面。该重定向信息把服务网页的ID和URL作为请求参数重定向到Signon页面。.NetPassport对网页的ID和URL进行核对,核对匹配则进行请求的认证。User与.Netpassport进行交互,提供口令和密码等相关信息供认证服务器进行认证,PassportServer根据用户提供的信息从数据库中抽取PUID,同时产生三个Cookies。Ticketcookie包括用户PUID和timestamp,Profilecookie包括用户的profile信息,Visitedsitescookie包括用户访问过的网页列表。Passport服务器和提供服务的网页共享一个加密密钥(通过网页的ID生成),用DES加密算法,Passport服务器对Ticket和profilecookies进行加密,并作为查询参数提供给己经认证的URL返回。提供服务的网页摘取相关的信息来进行相应的权限授予并提供相应的服务。这个过程中Passport服务器和提供服务的网页没有进行用户认证信息的直接交互,而是通过用户使用HTTP重定向和Cookies进行信息的交互【13】【19】【20】。2.Kerberos认证系统Kerberos协议【8】是业界的标准网络身份验证协议,该协议是在麻省理工学院起草的,是为其雅典娜(Athena)项目而设计开发的,其命名是根据希腊神话中守卫冥王大门的长有三头的看门狗做的。它旨在给计算机网络提供“身份验证’’,它的最大好处是通过对实体和服务的统一管理实现单一注册,也就是说用户通过在网络中的一个地方的一次登录就可以使用网络上他可以获得的所有资源(单点登录)。Kerberos协议的基础是基于信任第三方,如同一个经纪人(broker)集中的进行用户认证和发放电子身份凭证,它提供了在开放型网络中进行身份认证的方法,认证实体可以是用户或用户服务。这科,认证不依赖于主机的操作系统或主机的IP地址,不需要保证网络上所有主机的物理安全性,并且假定数据包在传输中可被随机窃取篡改。图1.1描述了Kerberos的工作过程121j:2 硕士学位论文第1章绪论图卜1Kerberos协议运作步骤Kerberos把身份认证的任务集中在身份认证服务器(AS)上执行。AS中保存了所有用户的口令。另外,为了使用户输入口令的次数最小化,在Kerberos认证体制中,还增加了另外一种授权服务器TGS(Ticket.GrantingServer),并且AS和TGS同驻于一台主机上。用户登录系统并表明访问某个资源时,系统并不传送用户口令,而是由AS从用户口令产生一个密钥KUAS,并传送给用户U一个可以访问TGS的门票Ttgs以及用KUAS加密的密钥KUTGS。如果用户U知道口令,则可以利用口令产生密钥KUAS,解密后获得KUTGS,用户U需要请求某服务时,可以把Ttgs连同其个人化信息、发送给TGS。TGS认证消息后,发送给用户U一个可以访问某个服务器的门票TS以及用KUTGS加密的密钥KUS。用户U将获得的TS连同其个人化信息发送给服务器。服务器对信息认证后,给用户提供相应的服务。3.SAML认证系统SAML(安全性断言标记语言,SecurityAssertionMarkupLanguag)由OASiS(theOrganizationfortheAdvancementofStructuredInformationStandards)组织的SecurityServicesTechnicalCommittee(SSTC)开发。它是交互用户认证、授权和属性信息的基于XML的框架。SAML允许商业实体对身份、属性和授权主体对其他实体(如合作公司或其他企业应用)的访问作出声明。SAML是开放的基于安全的编码标准【4】【51,使用XML的数据实现方式。允许通过HTTPt61的SOAP(SimpleObjectAccessProtoc01)进行绑定。SAML协议包括三方:用户方U,配置标准的浏览器B,资源网站S,目标网站D。该协议实现过程如下图1.2所示。3 硕十学位论文第1章绪论UserUUser●一ngDestinationSource’BSiteDSiteS1.AccessSource一。●’2.RedirecttoDestinatimSiteFinishofredirectto一◆4.SAMLRequesttoSourceSite~一’5.SAMLResponsetoDestinationSite●——一HTTPResponseresource/error)图卜2SAML协议流程图首先用户U在资源网页S上获得授权,当U访问一个目的网站D时,他要重定向到资源网站S。S上存储了用户的身份信息,包括-d,片数据(保存的重定向信息),叫做SAMLartifact。D收到这个artifact信息,把它出示给S,请求得到S的确认,在得到S的确认后,确保了用户U己经被S认证【I¨。LibertyAllianceProject(自由联盟计划)【3】,它是一个互联网个人认证管理技术的标准化组织,以SAML为基础进行开发。许多公司纷纷加入LibertyAlliance来开发身份认证系统。LibertyAlliance大张旗鼓的公布了SAML2.0,LibertyAlliance的目的是让尽可能多的厂商把SAML加入到他们的产品线中。IBM、NEC、NTT、Oracle和SunMicrosystem公司都在积极支持其安全产品通过了SAML2.014】互操作性测试。现在,LibertyAlliance宣称已经有超过70种产品被授予了SAML证书。现在的很多大型的企业应用都是基于J2EE规范的,是基于应用服务器的。J2EEl.3也在规范中建议J2EE产品应为应用系统提供单点登录的能力。因此,目前国内外的应用服务器提供商也纷纷推出自己的单点登录系统。但J2EEl.3规范并没有规定J2EE产品应遵循何种标准,因此不同的厂商的产品在单点登录上的实现和应用各不相同。有的J2EE产品实现了在本产品环境范围内的单点登录,也就是当用户一次登录该应用系统后,可以维持相应的生命周期,在这个生命周期范围内,无需再次登录。有的实现了特定系统环境之间的单点登录,如IBMWebSphereApplication实现了WebSphereApplicationServer与WebSphereApplicationServer、WebSphereApplicationServer与LotusDominoserver之间的单点登录能力【48】【491。4 硕士学位论文第1章绪论1.2.2单点登录技术面临的问题目前,单点登录技术研究主要应用于同类系统的单点登录技术,如果使用Microsft的.NETPassport,则需要直接受制于Microsoft的认证系统;很多国内外产品厂商与用户都不采用这种受制于Microsoft的方式。采用SAML为认证基础的软件产品虽然不断增多,但是对于我国产品采用SAML进行认证的,则少之甚少。而许多产品在开发时就没有考虑单点登录的技术要求,而只是考虑自身系统的安全性问题;比如大量的ERP、CRM、SCM等软件,我国高校使用的各种系统,都不具备SAML的认证条件。在大中型企业、机关、高校存在不同研究设计单位的不同产品,他们之间往往平台和技术手段都各有不同。如何能做到单点登录是迫在眉睫的事情,研究一种方案易于不同平台系统的单点登录也是我国大中型企业信息化、政府高校信息化的重要步骤。1.3本文研究意义和目的随着Intemet的蓬勃发展,Web应用需求越来越大,大量的软件都基于Web方式编写,不同的应用系统对登录系统的设计都有所不同,本文就Web应用软件的单点登录实现进行研究。实现单点登录对于大中企业、政府高校等工作人员意义显而易见:1.简化工作人员操作随着应用增加,工作人员需要在不同系统中切换的操作大大增加,单点登录提高系统间切换的效率,避免不同系统间操作的诸多登录和登出的麻烦。2.提高操作安全由于不同系统可能具备不同的密码,且很多系统安全规则不同,也使用户不能在不同系统中设置相同密码,用户大量帐户与口令需要记忆和大量口令可能重复都使系统安全性受到影响。3.降低费用实施单点登录,减少登录次数,提高用户操作效率,在同样工作时间内可以访问更多资源,从另一个方面看就可以减低人工成本。本文研究的目的通过Web应用软件的单点登录系统研究,建立一种技术手段新颖的单点登录模型,可运用模型于普通大中企业或政府教学单位对各种Web应用的单点登录系统,实现安全、可靠、使用方便、扩展性好的用户登录管理。1.4研究内容为适应不同种类应用软件系统登录的需要,满足用户在日常管理工作中多样5 硕士学位论文第1章绪论的需要,将在原有单点登录系统研究的基础上,对不同种类应用软件系统特别是w曲应用软件系统的单点登录进行研究与设计,具体研究内容包括:1.单点登录系统技术手段的比较研究目前基于Web的软件开发有很多技术手段,其中主要的技术主线就有基于开源的Java技术路线和基于微软的.net技术路线。Web应用软件开发过程也必须遵循一定的规则和标准,其中Cookie、Session、TCP/IP以及XML相关技术是各种技术路线共同支持的标准。本文对技术路线和技术手段进行研究和探讨。2.不同种类Web应用软件系统的单点登录实现方式的研究根据单点登录系统的模型分类,研究基于不同单点登录系统模型的技术方案;通过研究Cookie方法、Session方法、IP的方法,结合Web软件开发技术,提出不同登录模型的设计方案,并对不同方案进行比较和讨论。3.运用共享Session技术,研究基于SOA的单点登录系统的实现共享Session技术是一项非常规的技术,通过对共享Session的研究,对解决Web应用软件的单点登录系统的设计提供较有力的帮助,应用SOA构架编程对技术实现的可能和主要方法进行研究。1.5论文组织结构本论文详细介绍了单点登录技术的研究现状和发展,并对基于Web应用系统的单点登录系统的关键问题提出了作者自己的看法和观点。为了更好地诠释观点和阐述研究内容,全文主要分为五个章节。第一章主要介绍了本论文的研究背景、国内外在单点登录方面的研究现状和发展趋势,以及论文的研究意义;第二章重点介绍了单点登录系统的理论基础,就单点登录系统的Ticket技术基础进行介绍和分析研究,对单点登录系统安全和单点登录系统软件构架的理论基础进行介绍和分析;第三章是根据单点登录系统的特点,对单点登录系统可能的模型和实现的方案进行研究;针对目前单点登录系统研究主要基于同类系统的研究,提出不同种类系统的解决方法,并对重点对采用共享Session技术实现基于Web应用的单点登录系统方案进行说明、分析与研究。第四章详细说明了针对福建工程学院信息系统进行单点登录系统的研究与设计,采用共享Session技术基于SOA构架对系统的具体实现做了详细的介绍,并对其中关键的算法进行分析;第五章对所作研究做了总结并提出了未来的工作方向。6 硕十学位论文第2章单点登录系统的理论基础与关键技术第2章单点登录系统的理论基础与关键技术实现单点登录,需要运用各种技术,其中Ticket的使用是必不可少的;对于如何生成Ticket,传输Ticket,验证Ticket,也是系统设计人员必须要考虑的问题。2.1单点登录系统概述2.1.1传统认证机制传统的认证机制是基于用户名和密码的,每一个系统都建立有自已的用户信息数据库,用以验证用户的身份。用户要访问n个系统就需要在n个系统中建立n个帐号。当其要访问一个系统中的资源时,用户首先要登录进入该系统,如果他同时要访问处于多个系统中的资源,用户就不得不按照各个系统的要求分别登录进入相应的系统m】。例如在一个大学罩,教师要访问图书馆、教务系统、查看个人工资情况、使用邮件服务等就要分别登录到图书管理服务器、教务管理系统、企业员工工资管理系统、邮件服务器等。用户会输入相应的帐号来登录进入这些系统。对于繁多的用户帐号,大多数用户会选择简单易记的用户名和密码,甚至有人把用户帐号写在字条上,以防忘记;更有人为了避免重复登录系统,干脆在不使用服务的情况下也不退出系统。这样的系统既增加了用户的负担,也容易导致违反基本安全策略的事件发生,使系统更容易受到攻击,降低了系统的安全性。.从技术上分析,传统的认证机制有着严重的安全问题。首先,用户名和密码信息会在网络上传送,且常常为明文传送,这就很容易被攻击者截取到,假扮合法用户来攻击系统。另外,在一般的系统中,密码一般由长度不长的字符组成,用户为了方便记忆往往会选用一些更为简便的密码形式,这很容易遭受到密码猜测的攻击,尤其是基于字典方式的攻击往往非常有效。如果强迫用户使用复杂的密码,则用户很可能将密码写在便条上,以便查阅,这样更大大增加了密码泄露的可能性,安全仍然难以得到保障。由于用户帐号是不断重用的,这样为重放攻击提供了条件,攻击者只要记录下上一次用户的登录数据,以后他就可以原封不动的使用该数据来假扮合法用户通过系统的认证,破坏系统。同样对网络管理员来说,这样的系统会使他们的工作量大大增加。因为每个系统都保存有自己的用户信息数据库。例如当公司新增了一名员工,管理员就要在该员工有权访问的所有系统中逐个为该员工建立帐号。当该员工离开公司后,管理员又要在各个系统中将其帐号删除,工作量无疑是巨大的,而且很难避免某些遗漏。7 硕十学位论文第2章单点登录系统的理论基础与关键技术因为网络管理员并不知道用户到底在多少个系统中建立了自己的帐号,只能逐个检查,很容易忘记在某个系统中删除该员工帐号,这样就会留下安全隐患。厂.一~———]睦望早员f1系统管理墨~j..【蒙橱图2-1传统认证机制的概念结构分析其原因,这一切都是由于分散的用户管理造成的,各个系统间没有联系。用户在现实世界中的身份通过帐号映射成为网络世界中的用户身份标识,但用户的这种身份标识是分别被每个系统分别保存的,无法互相传递。这就迫使用户在进入每一个系统时都要重新提交自己的身份标识,来通过系统的认证。其概念结构如图2.1所示。总之,基于效率和安全的因素,人们必须改变传统的认证机制,设计出一个更为高效,安全的网络认证机制,来简化人们访问网络中各种资源的过程。2.1.2单点登录系统单点登录系统就是用户只需要在网络中主动地进行一次身份认证过程,然后就可以访问其在网络上被授权使用的所有资源而不需要其主动参与其后的身份认证过程。这些服务资源可能处在不同的计算机环境中,用户以后的身份认证是系统自动完成的。在此系统中,管理员无需修改或干涉用户登录就能方便的实施希望得到的安全控制。这是一个为了能够在分布式计算机环境中,安全和方便地鉴别用户而产生的课题。在这里,网络上的资源可以是打印机或其它硬件设备,也可以是各种应用程序和文档数据等等,这些资源可能处于不同的计算机环境中。单点登录系统可以使用基于用户名和密码的身份认证机制,也可以采用结合了密码学技术的新的身份认证机制。新的身份认证机制可以大大提高系统的安全性,同时也可以保证用户的电子身份标识可以安全、高效地在网络上传递。其次,单点登录系统把原来分散的用户管理,集中起来了。各个系统之间依靠相互信赖的关系来进行用户身8~用户 硕士学位论文第2章单点登录系统的理论基础与关键技术份的自动认证。用户的帐号信息是集中保存和管理的,管理员只需要在统一的用户信息数据库中添加、删除用户帐号,不必在多个系统中分别设置用户信息数据库。由此可见单点登录系统的优点有:1.提高工作效率用户不再需要为每访问一个服务资源而进行一次身份认证过程,从而使用户有更多的时间从事有益的工作。同时这样也可以使帮助人员从为用户找回密码的繁重工作中解脱出来。2.更好的网络安全性系统中使用的身份认证机制使用了加密等多种方法,可以防止大部分的网络攻击。同时由于新的身份认证机制使用户的帐号信息记忆量减少,使系统由于用户机密信息的泄露而导致安全事故出现的机会大大减少。3.更有效的管理用户的帐号数据统一保存,网络管理员只需要在一个数据库中对用户的帐号信息进行操作,减少了他的工作量和由于马虎造成的安全漏洞,提高其工作效率。其概念结构如图2.2所示。用户图2-2单点登录系统的概念结构在介绍实际的方案和模型前,我们先设想一个理想的系统。从用户的角度看,虽然是在复杂的企业应用环境中,单点登录不会影响到诸如业务过程,响应效率,网络吞吐量等事情,并将互操作性方面的问题减至最少,任何事情都在顺利工作。当一个单点登录系统被加入使用,迁移应该容易而且所有的用户能够立即学会使用这个工具。从管理员的角度看,计算和网络环境在各个方面必须能被管理,而管理应该不引起额外的工作或安全漏洞。管理过程应该适合组织的结构和政策。这意味着9 硕十学位论文第2章单点登录系统的理论基础与关键技术权利和控制需要有一定的层次结构。认证的方法应能在分布式的组织环境中得到全部的贯彻而不用付出额外的努力。所有的应用程序,无论新IEt,可以不需要或只需很少的改动即可适应新的认证方式。当然,以上都只是理想的情况,现实中的情况往往有很大的差异。2.1.3单点登录技术方案评价对于一个单点登录系统来说考察其性能的优劣需要从安全性、可实施性、可扩展性和可靠性几个方面综合考虑。·单点登录系统的安全性取决于此单点登录系统是否能够抵抗欺骗和攻击。·判断单点登录可实施性主要是根据在实施单点登录时花费的代价和对原有系统改造的工作量。·单点登录系统的可扩展性取决于当制作新的应用系统时是否需要实现特定的接口以及实现这个接口需要耗费的工作量和对应用系统造成的影响。·单点登录系统除了在正常使用的情况下要保证可靠以外,必须在大用户量使用和用户异常使用的情况下也能保证正常运行。2.2单点登录系统的Ticket相关技术所有的系统在用户登录时都要对用户进行身份验证,如何确定用户的身份的。首先要对用户进行标识,使所有的操作过程能由系统识别出是谁;就像每个人,都可以用自己特别的代码来识别一样。每个人都有自己的名字,在一定圈子里名字代表着这个人。当这个圈子比较大时,名字重复不可避免;所以这时可以用一个唯一的代码来识别他或她,如身份证号等。为了唯一标识某个计算机用户,就有相应的技术,如:IP、MAC、其它自动生成或注册的不重复编码。利用不重复编码可以进行用户的识别和认定。当然在计算机世界中,还必须注意用户标识是否可复制和伪造。在应用软件系统中,除了要识别用户,还需要了解用户其它方面的情况,比如:用户权限、用户名字、用户喜好等信息,这些信息都可以由特定的技术来产生、传输、验证;我们就称这些信息集合为ticket,其中单点登录的ticket最主要包含识别用户的唯一编码及其用户应当具备的权限。目前,Web应用中能作为识别单点登录ticket,并作为唯一识别用户编码的主要有以下几种技术。2.2.1Cookie技术1.Cookie的定义及功能10 硕十学位论文第2章单点登录系统的理论基础与关键技术Cookie[6】是在用户在浏览网页页面时,服务器发送给浏览器的体积很小的纯文本信息,存放在客户机中的简单的文本文件,用户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器。通过让服务器读取它原先保存到客户端的信息,网站能够为浏览者提供一系列的方便,例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制等。Cookie的使用很普遍,许多有提供个人化服务的网站,都是利用Cookie来辨认使用者,以方便送出使用者量身定做的内容,像使用Web接口的免费E.mail网站,都要用到Cookie。目前,Cookie已广泛应用于Web应用中,如Microsoft的.NETPassport单点登录服务就是借助于Cookie完成的f34】135】。2.Cookie的组成Cookie由变量名和值组成。其属性里既有标准的Cookie变量,也有用户自己创建的变量,属性中变量是用“变量=值”形式来保存。Cookie的基本格式如下NAME=VALUE;Expires=Date;Path=PATH;Domain=DOMAIN_NAME;Flag;Secure其中各项以分号(:)分开,首先是指定Cookie的名称,并为其赋值。接下来分别是Cookie的有效期、URL路径以及域名,在这几项中,除了第1项以外,其它部分均为可选项。①NAME=VALUE:每一个Cookie均必须有的部分,NAME是该Cookie的名称,VALUE是该Cookie的值。在字符串“NAME=VALUE"中,不含分号、逗号和空格等字符。如NAME是roleCookie,其VALUE是manager。(虿)Expires=DATE:Expires变量是一个只写变量,它确定了Cookie有效终止日期。它必须以特定的格式来书写:星期几,DD—MM—YYHH:MM:SSGMT,GMT表示这是格林尼治时间。反之,不以这样的格式来书写,系统将无法识别。该变量可省略,如果缺省时,则Cookie的属性值不会保存在用户的硬盘中,而仅仅保存在内存当中,Cookie文件将随着浏览器的关闭而自动消失。(蔓)Domain=DOMAINNAME:Domain是Cookie在其内有效的主机或域名。Domain确定了哪些Internet域中的Web服务器可读取浏览器所存取的Cookie,即只有来自这个域的页面才可以使用Cookie中的信息。这项设置是可选的,如果缺省时,设置Cookie的属性值为该Web服务器的域名。@Flag:指明是否所有在指定Domain内的主机都可以改Cookie的信息。⑤Path=PATH:Path定义了Web服务器上哪些路径下的页面可获取服务器设置的Cookie。一般如果用户输入的URL中的路径部分从第1个字符开始包含Path属性所定义的字符串,浏览器就认为通过检查。如果Path属性的值为“/”,则 硕士学位论文第2章单点登录系统的理论基础与关键技术Web服务器上所有的WWW资源均可读取该Cookie。同样该项设置是可选的,如果缺省时,则Path的属性值为Web服务器传给浏览器的资源的路径名。可以看出我们借助对Domain和Path两个变量的设置,即可有效地控制Cookie文件被访问的范围。⑥Secure:在Cookie中标记该变量,表明只有当浏览器和WebServer之间的通信协议为加密认证协议时,浏览器才向服务器提交相应的Cookie。当前这种协议只有一种,即为HTTPS。3.Cookie的安全性Cookie的目的就是为用户带来方便,为网站带来增值。虽然有着许多误传,事实上Cookie并不会造成严重的安全威胁。Cookie永远不会以任何方式执行,因此也不会带来病毒或攻击用户的系统。但Cookie与服务器有一定的交互性,且常会存储用户名,甚至口令,或是其它一些敏感信息,因此其安全性是应值得关注的。一般情况下,在传输信道中Cookie是以明文形式传输的,本身也不能提供完整性等安全验证机制,而且它在客户端的存储是明文存储的,因此存在较大的安全隐患。按照浏览器的约定,只有来自同一域名的Cookie才可以读写,而Cookie只是浏览器的,对通讯协议无影响,所以要进行Cookie欺骗可以有多种途径,如:①跳过浏览器,直接对通讯数据改写;②修改浏览器,让浏览器从本地可以读写任意域名Cookie;③使用签名脚本,让浏览器从本地可以读写任意域名Cookie;④欺骗浏览器,让浏览器获得假的域名等。2.2.2Session对象技术1.Session的定义及功能Session对象是服务器为客户端建立一个带独立编号的对象。它是现在多数WEB服务器的内置对象之一,负责记载单个用户的信息;不同用户的信息用不同的Session对象记载。当每个用户首次与这台WEB服务器建立连接时,服务器就为用户建立了一个Session对象,同时服务器会自动为其分配一个SessionlD,用以标识这个用户的唯一身份。有若干个用户浏览正在运正在这台服务器上的网站,服务器上为各用户建立的Session对象之间是互相独立的。Session对象最大的特点是当Session一旦被创建网站中,各页都可以读取它。当一个用户访问网站时,即启动了一个Session对象即使该用户在网站的各页问跳转时,该Session信息一直存在,网站的任何一个页面都可以读取它直至该用户离开网站。Session对象有有效期,一般为20或30分钟。当用户离开网站或在Session12 硕士学位论文第2章单点登录系统的理论基础与关键技术有效期内不再点击网站的任何内容时该Session对象会自动被删除。2.Session对象的组成Session对象是一个容器的对象,除了具有默认的属性名与对应值外,还可以添加自定义的对象属性名和值组成。当一台WEB服务器运行时,可能大多数的Web应用程序都利用Session对象作为身份认证的方法,Session对象中还提供其它可定义属性用来存储如用户名、用户权限描述。其默认的属性名主要有:●SessionID属性该属性返回当前会话的唯一标志,为每一个Session分配不同的编号。当一个用户登录后,当另一个用户即使用相同的用户名登录时,那么服务器数据库中记录的是新的SessionID。这个唯一的SessionID是有很大的实际意义的。当用户初始(HTTP头信息为空)访问网站时,由网站发出SessionID(与Cookie号相同)交给该用户;当一个用户继续访问其它网页时,浏览器都会将用户的SessionID自动附加在HTTP头信息中,以表示用户身份,服务器才能知道哪个用户在访问网页或提交了数据。具体网页服务器与客户端之间SessionID交互过程见图2-3所示。图2-3Session身份识别应答空●TimeOut属性该属性用来定义用户Session对象的时限。如果用户在规定的时间内没有刷新网页,则Session对象就会终止。一般默认为20或30分钟。3.Session的安全性由于Session对象的相关信息都存放于服务器端,一方面加重了服务器的负13 硕士学位论文第2章单点登录系统的理论基础与关键技术担,但是另一方面提高系统的安全性。服务器只是在客户端第一次访问了发出了SessionlD,没有将其它信息存放在客户端,只要首次发出的SessionlD不被截获,用户的访问都是安全的。如果用户的SessionlD被截获,那么本次的访问就是不安全了,截获者可以用该SessionlD冒充该用户,进行访问操作。2.2.3IP技术和MAC地址IP是英文InteractProtocol的缩写,是网络互连协议,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。通俗的讲:IP地址也可以称为互联网地址或Interact地址,是用柬唯一标识互联网上计算机的逻辑地址。每台连网计算机都依靠IP地址来标识自己,就很类似于我们的电话号码样的;通过电话号码来找到相应的电话,全世界的电话号码都是唯一的,IP地址也是一样。MAC地址是计算机网络适配器的一个物理地址,它在出厂时就被写在网络适配器中,为了保证该地址在全球的唯一性,其地址编码采用厂商编号+流水编号的方式,保证每片网络适配器的MAC不会重复。2.2.4Cookie机制与Session机制的比较SSO的实现机制不尽相同,大体分为Cookie机制和Session机制两大类。Session是一种服务器端机制,当客户端访问服务器时,服务器为客户端创建一个惟一的SessionlD,以使在整个交互过程中始终保持状态,而交互的信息则可由应用白行指定,因此用Session方式实现SSO,不能在多个浏览器之间实现单点登录,但利用服务器本身的联系却可以跨域。WebLogic通过Session共享认证信息。Cookie是一种客户端机制,它存储的内容主要包括:名字、值、过期时间、路径和域,路径与域结合在一起就构成了Cookie的作用范围,因此用Cookie方式可实现SSO,但域名必须相同。WebSphere通过Cookie记录认证信息。目前大部分SSO产品采用的是Cookie机制。2。3单点登录系统的安全理论基础企业如果引入Web服务,那么企业软件系统中将会增加3到4个新的层次,系统需要防护的地方更多了。安全面临的挑战增加,问题也变得更加复杂。虽然Web服务的应用越来越普遍,但是Web服务的安全领域却亟待加强和完善。14 硕士学位论文第2章单点登录系统的理论基础与关键技术2.3.1Web服务安全基本需求通常Web服务必须满足以下四个基本的安全性要求:1.机密性(Confidentiality)是指信息对没有经过授权的个人、实体或进程的不可用性或不公开性,并保证消息内容不对没有经过授权的个人公开。2.授权(Authorization)是指权限的授予,包括根据访问权限授予访问权和保证发送方被授权发送消息。3.数据完整。I生(DataIntegrity)是指数据没有以未经授权的方式或被未经授权的用户不可察觉的改变或者破坏的性质,从而确保消息在传送的过程中不会被偶然或故意修改。4.原始性证明(ProofofOrigin)是对消息或数据的发送者进行标识的证据。断言消息由正确标识的发送者传送,并且不会重新发送以前传送过的消息,这一要求隐含了数据完整性的要求。2.3.2Web服务安全体系目前,标准化组织和公司正在研究如下Web服务安全相关的主题和技术。随着这些标准固定下来,它们将会被并入Web服务安全性体系结构f2i10XMLSignature:定义了认证数据的一组XML模式,XML数字签名可以对整个XML文档、XML文档元素、XML文档元素内容或XML文档中外部引用数据进行数字签名;XMLEncryption:定义了加密数据的一组XML模式,XML加密可以对整个XML文档、XML文档元素、XML文档元素内容或XML文档中外部引用数据进行加密;XMLKeyManagementSpecification(XKMS):定义了进行密钥管理的安全信任WebServices规范;SecurityAssertionsMarkupLanguage(SAML)..一个描述和共享XML安全声明的框架,安全声明可以是决定授权的任意数据,如:信任壮、信任级别等;XMLAccessControlMarkupLanguage(XACML)-SAML的扩展,以XML来描述访问控制策略;WS.Security(WebServicesSecurity),WS-Security是一组规范,这组规范包括一个消息安全性模型(ws—Security),还有WebServices端点策略(ws—Policy)、一个信任模型(ws.Trust)和一个隐私权模型(ws-Privacy)。这些初始规范一起提供了~个基础,在这个基础上可以跨多个信任域建立安全的、可互操作的WebServices。随着对WebServices模型中遇到的所有威胁和对策的研究不断加深,Web15 硕十学位论文第2章单点登录系统的理论基础与关键技术Services安全性体系结构也在不断发展和演化中。2.3.3SSL技术Securesocketlayer(SSL)协议最初由Netscape企业开发,现己成为网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通讯的全球化标准。SSL成为保护网络商业安全的首选协议,几乎所有的主流浏览器都支持它。SSL3.0可以提供优秀的防护能力,阻止窃听和被动攻击,还能在相当程度上防御特殊目的的主动攻击。根据协议规范,SSL的主要目的是确保数据在不安全的公网各个部分传输时的私密性和可靠性。SSL通过以下方式实现【151:①连接的私密性。②连接双方的可验证性。③连接的完整性。SSL利用公用密钥对需要共享的私用密钥进行加密,以确保私用密钥在交换过程中的安全性,私用密钥才是真正用来完成数据传输加密、解密的工具。SSL协议由许多子协议组成,其中两个主要的子协议是握手协议和记录协议[16】。握手协议允许服务器和客户端“在应用协议传输第一个数据字节以前,彼此确认,协商一种加密算法和加密密钥’’。在数据传输期I、日J,记录协议利用握手协议生成的密钥加密和解密后来交换的数据。客户端发送“Hello”信息给服务器端特定的TCP端口(通常443端口用于SecureHttp),请求一个新的握手协议。服务器也发送一个Hello信息响应客户端,这个信息包括它根据随机数值(It务器随机数)选择的密码规格和服务器对客户端的认证,密码规格和客户端随机数的格式相同。服务器的认证仅仅包括服务器的身份和经过“certificateauthority’’(CA)验证的公钥。CA是指对服务器身份进行核实,联系服务器自己的数字“指纹"给予确认。如果CA不能验证客户端,客户端就需要获得CA的证书,并且把证书安装在浏览器中。CA证书可以从Web网站下载,但这样会增加JxL险,因为其他的使用者也可以将他们自己的证书伪装成CA机构的证书。客户端使用CA公钥单独计算证书中的“指纹”,并将它与接收到的服务器的“指纹”进行比较,来确保证书没有被修改过。服务器还给客户端提供一个会话ID号码。客户端确认了服务器的身份后,它可以选择传输自己的证书IIII务器上,进行相互验证。这不是SSL必须的步骤,因为很多客户端没有单独的数字证书。但是如果想对客户端进行验证,可以生成并分配证书给每一个客户端,并且要求服务器验证客户端。当然在客户端连接前,证书必须先下载并安装到浏览器上,16 硕十学位论文第2章单点登录系统的理论基础与关键技术这样就不能用随意一台没有证书的电脑接入内部网络。完成验证后,客户端产生一个二次随机数(Pre.mastersecret),并用服务器的公钥对信息加密,再把信息传回给服务器。客户端也会用客户端随机数、服务器端随机数和Pre—mastersecret结合产生master(secret)key。这种密钥用来对数据传输过程进行加密。客户端也用messageauthenticationcode(MAC)产生二次随机密钥,用来验证随之而来的数据传输。一旦客户端顺利完成任务,它就传送一个”ChangeCipherSpec"的信息(anothersub.protocolofSSL)给服务器,说明它准备用计算出的密钥加密后续的数据传输。服务器执行和客户端一模一样的运算,并发送一个ServerChange_CiperSpec信息给客户端。这时握手协议结束,服务器和客户端开始用SSL记录协议进行数据交换。记录协议是SSL真正的工作者。它负责发送和接收加密SSL帧,这些帧来自或发往网络传输层。记录协议从应用层取得数据流,然后把数据流分解成不超过16K字节的块。然后这些块压缩(不压缩)后,用安全会话密钥加密。最后在recordlayer封装成包,包通过网络传输层传送给接收者。在接收端,进行解密和解压,根据内容类型域的值,把数据传送给支持它相应的应用程序。接收者还会核对MAC,以确保数据在传输过程中没有被修改。SSL独立于应用,因此任何一个应用程序都可以享受它的安全性而不必理会执行细节。SSL置身于网络结构体系的传输层和应用层之间。此外SSL本身就被几乎所有的Web浏览器支持。这意味着客户端不需要为了支持SSL连接安装额外的软件。2.4单点登录系统的软件构架理论基础2.4.1XML技术可扩展的标记语言XML是标准通用标记语’言'(StandardGenericMarkupLanguage,缩写为SGML)的~个子集。其目的在于使得在W-eb上能以现有超文本标记语言(HyperTextMarkupLanguage,HTML)的使用方式提供、接收和处理通用的SGML成为可能。XML的设计既考虑了实现的方便性,同时也顾及了与SGML和HTML的互操作性。与HTML相似,XML是一种显示数据的标记语言,它能使数据通过网络无障碍地进行传输,并显示在用户的浏览器上【6lJ【62】。XML与Access,Oracle和SQLServer等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数17 硕士学位论文第2章单点登录系统的理论基础与关键技术据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、MacOS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结剁31】。XML主要具有如下一些优点:①良好可扩展性。XML是一种元标记语言,用户可以定义自己需要的标一记,这些标记必须根据某些通用的原理来创建,但是在标一记的意义上,也具有相当的灵活性。XML允许各个不同的行业根据自己独特的需要制定自己的一套标记,同时,它并不要求所有浏览器都能处理这成千上万个标记,也不要求一个标一记语言能够适合各个行业各个领域的应用,这种具体问题具体分析的方法更有助于标记语言的发展。②内容与形式分离XML标记描述的是文档的结构和意义,因此,XML的文档是有明确语义并且是结构化的。它不描述页面元素的格式化,可用样式单为文档增加格式化信息。③遵循严格语法要求XML不但要求标一记配对、嵌套,而且还要求严格遵守DTD或XMLSchema的规定。这就增加了文档的可读性和可维护性,也大大减轻了开发人员的负担。④便于异构系统之间信息传输不同企业、不同部门中往往存在着许多不同的系统,XML可以用作各种不同系统之间的交流媒介,是一种非常理想的数据交换语言。⑤通用性和平台无关性XML是一个通用的标准。正是由于这种通用性,使用XML表示信息时,这些信息是独立于平台的。2.4.2SOA与WebServices面向服务的体系结构(Service.OrientedArchitecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起柬。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构18 硕士学位论文第2章单点登录系统的理论基础与关键技术是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需(Ondemand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于SOA的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然SOA是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。SOA系统原型的一个典型例子是通用对象请求代理体系结构(CommonObjectRequestBrokerArchitecture,CORBA),它已经出现很长时间了,其定义的概念与SOA相似。W.ebServices亦可称为Web服务,是SOA构架的一种实现方式。在理解SOA和Web服务的关系上,经常发生混淆。根据2003年4月的Gartner报道,YefimVNatis就这个问题是这样解释的:“W曲服务是技术规范,而SOA是设计原则。特别是Web服务中的WSDL,是一个SOA配套的接口定义标准:这是W曲服务和SOA的根本联系。"从本质上来说,SOA是一种架构模式,而Web服务是利用一组标准实现的服务。W曲服务是实现SOA的方式之一。用Web服务来实现SOA的好处是你可以实现一个中立平台,来获得服务,而且随着越来越多的软件商支持越来越多的W曲服务规范,你会取得更好的通用性。现在的SOA已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensibleMarkupLanguage,XML)为基础的。通过使用基于XML的语言(称为Web服务描述语言(WebServicesDefinitionLanguage,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中,非以前CORBA中的接口描述语言(InterfaceDefinitionLanguage,IDL)可比了。Web服务并不是实现SOA的唯一方式。前面刚讲的CORBA是另一种方式,这样就有了面向消息的中间件(Message.OriemedMiddleware)系统,比如IBM的MQseries。但是为了建立体系结构模型,您所需要的并不只是服务描述。您需要定义整个应用程序如何在服务之间执行其工作流。您尤其需要找到业务的操作和业务中所使用的软件的操作之间的转换点。因此,SOA应该能够将业务的商业流程与它们的技术流程联系起来,并且映射这两者之间的关系。例如,给19 硕十学位论文第2章单点登录系统的理论基础与关键技术供应商付款的操作是商业流程,而更薪您的零件数据库,以包括进新供应的货物却是技术流程。因而,工作流还可以在SOA的设计中扮演重要的角色。此外,动态业务的工作流不仅可以包括部门之间的操作,甚至还可以包括与不为您控制的外部合作伙伴进行的操作。因此,为了提高效率,您需要定义应该如何得知服务之间的关系的策略,这种策略常常采用服务级协定和操作策略的形式。最后,所有这些都必须处于一个信任和可靠的环境之中,以同预期的一样根据约定的条款来执行流程。因此,安全、信任和可靠的消息传递应该在任何SOA中都起着重要的作用。2.5本章小结本章重点介绍了单点登录系统的理论基础,就单点登录系统的Ticket技术基础进行介绍、分析和研究;对单点登录系统安全理论基础进行介绍和说明,就单点登录系统软件构架的理论基础进行介绍和分析。20 硕十学位论文第3章基于Web应用的单点登录系统设计第3章基于W.eb应用的单点登录系统设计单点登录是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。企业应用集成可以在不同层面上进行;例如在数据存储层面上的“数据大集中",在传输层面上的“通用数据交换平台",在应用层面上的“业务流程整合",和用户界面上的“通用企业门户”等等。事实上,还用一个层面上的集成变得越来越重要,那就是“身份认证"的整合,也就是“单点登录”。3.1单点登录模型分类目前单点登录模型主要分为以下几类【11142】:3.1.1基于经纪人的单点登录模型(Broker-Basedsso)在一个基于经纪人的单点登录SSO模型中,都有一个集中的认证和用户账号管理的服务器。中央认证服务器和中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的“第三方",就像一个“经纪人"一样。采用这种模式的产品有很多,如:Kerberos认证系统。3.1.2基于代理的单点登录模型(Agent.Basedsso)在一个基于代理人的解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如,它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理人在服务器的认证系统和客户端认证方法之间充当一个“翻译"。SSH是一个典型的基于代理人的解决方案的例子。SSH的英文全称是SecureShell。通过使用SSH,你可以把所有传输的数据进行加密,这样就能够防止DNS和IP欺骗。这是一个为在网上进行安全连接的客户/服务器类型加密软件,实现了一个密钥交换协议,以及主机及客户端认证协议。SSH的用户可以使用包括RSA算法的不同认证方法。当使用RSA认证时,代理程序可以被用于单点登录。代理程序可以在PC,便携机,或终端上运行,当被认证身份加入到代理程序中,如果该代理程序有新的子连结产生,则继承原有连结的认证。远程系统往往需要一个SSH服务器,用以与代理程序通信。基于代理的单点登录模型(Agent.Basedsso)保证了通道的安全和单点登录,具有比较好的可实施性和灵活性。但是基于代理的单点登录模型(Agent—Basedsso)有一个非常大的缺陷,就是用户的登录凭证要在本地存储,这样就增加了口令泄漏的危险;另外,在实现单点登录时,每个运行SSH的主机(不管是服务2i 硕+学位论文第3章基于Web应用的单点登录系统设计器还是客户端)必须有一个安全代理程序在上面运行,这样就增加了兼容现有系统时需要的开发量,这是用户不能接受的。3.1。3基于令牌的单点登录模型(Token—Basedsso)现在被广泛使用的口令认证,比如FTP,邮件服务器的登陆认证,都可被称为”single—factor”口令的认证,这是一种简单易用的方式,同时也是一种会带来很多安全隐患的方式。它的弱点有:易于猜测、通常很少进行更换、一个口令在多种应用当中使用等。再如,在明文传输的网络环境罩,经常使用但很少更换的VI令,更易于被窃取和造成危害Il71。RSA公司提出的一种称为SecurlD的解决方案。与”single.factor”不同的是它被称之为”two.factor”双因素的认证。构成认证的第一个因素是用户身份识别码(PN,PersonnelIdentificationNumber)是一串保密的数字,可由系统管理员订制;第二个要素是SecurlDtoken,一个小型的数字发生器,这个发生器的时钟将与网络环境中提供身份鉴别的服务器(ACE)保持同步,并且与ACE上的用户数据库保持映射。数字发生器每隔一段时间(比如一分钟)产生新的数字,PIN+同步时钟数字就是用户的登录代码。3.1.4基于网关的单点登录模型基于网关的单点登录模型(Gateway.Basedsso)在网络入口处设置防火墙或专用加密通信设备作为网关,而资源则被隔离在受信网段内。当用户需要访问网关后面的应用服务器时,首先需要通过网关连接的用户数据库进行认证,认证通过后网关自动将用户身份传递到要访问的目标应用服务器进行认证,经应用服务器认证通过后,用户通过网关对应用系统进行后续的访问。在这种方案中,所有的响应服务都需要放在被网关隔离的受信网段里。客户端Client通过网关进行认证后获得接受服务的授权。如果在网关后的服务能够通过IP地址进行识别,并在网关上建立一个基于IP的规则,而这个规则如果与在网关上的用户数据库相结合,网关就可以被用于实现单点登录。网关将记录Client的身份不再需要冗余的认证请求,便可授权所要求的服务。由于网关可以监视并改变应用服务的数据流,所以在不修改应用服务的同时,改变认证信息,并能提供合适的访问控制。这种方案企业中现有的网络环境要求比较严格,同时,也需要现有的企业应用来适应单点登录系统,所以,这种方案的应用范围并不广。3.1.5单点登录系统的方案比较SSO设计方案可以是以上几种方案,也可以综合以上几种方案形成的新方案,如:Agent&Broker-based方案等。22 硕十学位论文第3章基丁二Web应用的单点登录系统设计设计SSO系统总的思想是接口标准化,支持分布式,可嵌入原有系统。评价SSO系统主要考虑其可实施性、可管理性、安全性、和易用性。可实施性是指系统的复杂性并测量现有系统如何能够方便地加载SSO功能;可管理性是系统主管对系统的看法;安全性是估量系统是否易受攻击;易用性是系统的最终用户的观点【421。表3-1各种SS0实现模式的比较通过表3.1比较,可以明显发现以上方案都具有明显的优缺点,能针对不同应用选用不同方案才是解决问题之道。3.2单点登录系统的Ticket与共享Session技术3.2.1单点登录的Ticket单点登录的技术实现机制:当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性。如 硕十学位论文第3章基y-Web应用的单点登录系统设计果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。可以看出,要实现SSO,需要以下主要的功能:·所有应用系统共享一个身份认证系统;·所有应用系统能够识别和提取ticket信息;●应用系统能够识别已经登录过的用户,能自动判断当前用户是否登录过,从而完成单点登录的功能。其中统一的身份认证系统最重要,认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。整个系统可以存在两个以上的认证服务器,这些服务器甚至可以是不同的产品。认证服务器之I、日J要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录。基于WEB应用系统的单点登录,特别是Internet的单点登录,主要可用的机制有两种:基于Cookie和基于Session。Cookie本身具有一定的局限性;为了保证客户的安全,Cookie文本按域名区分存储,Web服务器就不同读取其它域存放在客户机的Cookie文本。如果要实现基于Cookie的单点登录,就需要用其它技术或通讯,使Web服务器之问或Web服务器与认证服务器之间交互信息。而Session是记录在服务器端的连接记号对象,每个用户与Web服务器连接都会产生一个独立的Session对象。服务器之间特别是不同平台的服务器之间,没有建立共同使用Session的机制。当然,基于Internet的单点登录也可以对IP和MAC作为Ticket进行研究,在某些特定的场合也可以应用IP或MAC作为Ticket。Ticket也可以使用复合的方式,即采用多种技术的结合,进行标识,当系统安全性、可靠性要求更高的场合就可以运用。312.2Ticket的生成方法比较1.基于IP的Ticket研究虽然IP在intemet上具有唯一性,但由于网络技术的发展,为了解决IP地址空问不足的问题,主要使用了NAT和PROXY的技术,实现单个IP地址的多客户机应用。NAT技术是将部分客户机的地址按规定进行转换,特别是动态NAT可以将多台客户机的地址,转换到同一IP地址上,即一个特定的IP地址上可能存在多台计算机进行Internet的访问。为了解决一个IP地址多台计算机公用的识别问题,24 硕+学位论文第3章基于Web应用的单点登录系统设计通过实验本文也解决了这个问题,就是采用浏览器到服务器双IP地址并用识别的方式。所谓从浏览器到服务器双IP地址并用识别,就是指采用IP地址作为识别系统的Ticket时,为了保证IP地址作为Ticket的唯~性,除了由服务器收到数据包发送的IP地址(可能是客户机、NAT网关或PROXY服务器的地址)作为识别用Ticket外,浏览器还主动发送浏览器所在计算机的原IP地址同时作为识别依据。要提取浏览器端的IP地址,一般可以采用浏览器下要求运行插件的方式来实现。PROXY技术是基于高层的代理协议,它可以指定为HTTP作为服务对象。如果要实现双IP地址识别,通过实验证明可以使用服务器端脚本实现浏览器端的原IP提取。基于IP的Ticket主要问题有两点:·为了采用双IP识别,服务器端必须编写获取NAT方式和PROXY方式的原IP地址,而且,采用插件方式的客户端是很多客户所不能接受的。·当用户网络环境使用DHCP作为客户机IP的动态获取时,基于IP的Ticket就更缺乏安全性了。在特定情况或有其他技术的支持下,也可以IP方式作为单点登录的Ticket唯一标记,毕竟IP是识别客户机最重要的依据之一。2.基于MAC的Ticket研究MAC地址对于每个网络适配器是独立的,但是在TCP/IP协议中MAC是基于数据链路层的协议,每当数据包通过不同的路由时,原有数据包中的MAC就被更换,也就是说基于协议本身无法将源的MAC通过路由器转发后传输给目标。如果要实现MAC地址的传输,必须把它通过应用程序打包在数据信息中。另一方面,计算机可以通过修改操作系统的一些设置来伪装一个MAC地址。所以,实际使用MAC地址作为单点登录的Ticket,这么一个要求安全的标记是不可行的。3.基于Cookie的Tciket研究Cookie作为单点登录的Ticket,具有较突出的优点。Cookie有独立的全局唯一的编号,而且可以在客户端存储编号以外的其他字符信息,便于单点登录及其应用系统的利用。但是它也有重大的缺点,当单点登录系统与应用系统不在同一个域时,由于考虑系统安全的原因,应用系统服务程序是无法访问其它域的Cookie信息。4.基于Session的Ticket研究Session作为单点登录的Ticket,也具有一定优势。Session也具有独立的全局唯一的编号,由于它存放于服务器端,大部分不同系统之间Session不能直接25 硕十学位论文第3章基于Web应用的单点登录系统设计做到信息共享,只有个别同厂家的Web服务系统具备直接Session共享功能。5.各种Ticket的比较从本质上来看,Cookie和Session的编号是一致的,只是基于Cookie的机制可以将其它信息记录在客户端,当访问对象要在不同域名服务器之间进行时,因为浏览器本身系统安全原因将Cookie信息屏蔽了;而且很多用户因为安全的原因会排斥在客户端生成Cookie文件。基于Session的机制,对于服务器管理来说是比较理想的,特别是不同技术类型的服务器之问;基于XML技术,可以对不同技术类型服务器之问进行Session有关参数的传递。本文主要通过实验确定以Session作为单点登录系统的Ticket,研究几种模型下的解决方案。3.2.3共享Session技术如图3一l所示,一般情况下每个客户端用浏览器访问Webserver时,在WebServer上都为这个访问提供一个独立的Session对象。通过实验发现:不同进程可以共享Web服务器的Session。当两个不同HTTP请求进程使用同样的SessionlD时,Web服务器提供访问的Session对象是同一个;也就是说这两个进程分布在不同计算机上也能做到共享Session对象。由于SessionlD取自Cookie号,发出SessionlD也是浏览器自动完成的,所以要实现共享Session,被共享方要发出SessionlD号给共享方,共享方要用自编程序将SessionlD号放在HTTP请求头上进行访问,共享Web服务器的Session。根据上述的原理,认证代理计算机通过在HTTP头带上指定客户端的SessionlD号,就能与指定客户端共享同一服务器Session对象,为指定的客户端提供登录操作。为了控制HTTP头的发送,实现Web服务器共享Session对象,必须用其它程序来实现,本文用Delphi实现不同计算机共享一个服务器指定Session对象的功能。∥1.厂———————一一一一1计算机A鬻勇、、、WebSerVer一一一,'1sessionA对象、、一一一,一d,一一一骘秘~、、一一计算机B鸳爹,一,一般情况、叫sessi。nB对象计算机A霉乳、、、~..W—ebS—e磐r_一一1一一~].,一一喳参-一~~、▲i兰!竺:!全型号一j计算机B鳕眇/共享sessi。n情况图3-1共享Session与常规访问比较图26 硕士学位论文第3章基于Web应用的单点登录系统设计运用共享Session技术的方式,进行单点登录的实现,这种单点登录方式可以使Web应用系统的软件修改量最少,甚至对很多Web应用系统不需要做修改。应用共享服务器Session对象,使实现基于Web应用的SSO就成为可能。3.3基于Web应用的单点登录系统方案设计研究Web应用的单点登录系统,由于每个应用软件出自不同的厂家,每个厂家所采用的技术可能有所不同,在激烈的竞争中每个厂家肯定都具有自己独特的优势,所以要形成统一的Web应用解决方案是很难的,特别是Web应用的登录系统。通过研究登录过程,能有助于进行单点登录系统的研究,图3.2描述了Web应用程序一般登录的处理过程。/-输入用I户名■——_7.i墼堕:墼鲤f厂蠢⋯7|邀f『一将输天面画硬汗或]GET,I[登录处理程序l@a.用户登录页面程序流程图b.登录处理程序沅程图图3-2Web应用程序的一般登录处理过程下面本文就基于Web应用的单点登录系统方案进行设计,共提出三个基于不同应用的可行方案。3.3.1基于经纪人的单点登录系统方案设计当应用系统的用户管理复杂程度不太高时,可以通过改造用户管理程序,实现基于经纪人的单点登录【3】【4】;并且可以用主动和被动两种方法实现。1.基于主动式经纪人的单点登录系统方案主动式经纪人的单点登录就是用户在认证服务器认证后,认证服务器主动向管辖的应用服务器发送登录用户的SessionID和该用户的权限描述。用户必须访27 硕士学位论文第3章基T-Web应用的单点登录系统设计问认证服务器进行身份认证,并从认证服务器上获得一个认证的SessionlD(认证ID)。认证服务器在每个用户认证后,就向它所管辖的应用服务器发送SessionlD(认证ID)与该用户的权限描述。当用户需要访问某应用服务器时,必须以GET或POST方式将SessionlD(认证ID)发送至该应用服务器中,该服务器可以将本机新生成的SessionlD(服务ID)可以通过SessionlD(认证ID)获得对应的权限描述。具体认证过程见图3.3。应用服务器B(1)登录认证(2)认证确认(3)登录信息发布(4)浏览资源请求(5)响心请求图3—3基于主动式经纪人的单点登录基于主动式经纪人的单点登录系统方案,一般需要对每个应用系统的用户管理系统进行改造,以便于收集单点登录系统(认证服务器)发出的认证信息,确认用户的身份。按图3—2所示,在登录信息发布(3)的处理过程必须与浏览资源请求(4)共同配合完成登录处理程序的过程。当用户在认证服务器中登录成功后,将登录成功的信息发送至各应用服务器,具体流程见图3-4描述28 硕士学位论文第3章基于Web应用的单点登录系统设计a.登录信息发布程序流程图b.登录信息接收页面程序流程图图3-4登录信息发布程序流程图当用户发出图3.2的浏览资源请求(4)时,Web应用必须将图3.3的浏览资源请求(4)中携带的SessionlD与存放指定单元的信息比较后确定用户的权限,并转向访问主菜单程序或其它资源页面。2.基于被动式经纪人的单点登录系统方案被动式经纪人的单点登录就是用户在认证服务器认证后,待应用服务器询问认证服务器时认证服务器才直接发出该用户的权限描述。用户必须访问认证服务器进行身份认证,并从认证服务器上获得一个认证的SessionlD(认证ID)。当用户访问其它应用服务器时,由该应用服务器将从用户处获得的SessionlD(认证ID),以GET或POST方式将发送至认证服务器;认证服务器将该用户的权限描述发送至该应用服务器。具体认证过程见图3.5。 硕+学位论文第3章基于Web应用的单点登录系统设计应用服务器B(1)臀录认证(2)认iJF确认(3)访问心用服务器(4)请求认证(5)认证确认(6)响心应用服务图3-5基于被动式经纪人的单点登录当用户认证后,再访问应用服务器时,用户向应用服务器发出认证服务器的SessionlD与应用服务器为用户创建的SessionlD作为应用服务器的登录标记,由应用服务器一起发送到认证服务器;认证服务器返回应用服务器所需要用户信息数据,以设置用户的权限和属性等。3.3.2基于代理的单点登录系统方案设计如果应用服务器的软件具备比较复杂的用户管理和安全管理(如企业的ERP),就需要尽可能不改变应用软件;用基于代理的单点登录可以使应用软件修改量比较少。1.共享Session技术的单点登录系统方案利用共享Session技术来实现Web应用软件的单点登录,可以实现很少的软件修改或不需要修改。首先,用户在代理服务器认证后,直接访问某个应用服务器,将返回的SessionlD(服务ID)和应用服务器地址以GET或POST方式发送至代理服务器,代理服务器用SessionlD(服务ID)为HTTP头为用户在应用服务器中代理登录认证,这时客户端也就具备相应的权限。如果Web应用软件不是常规的用户名加口令的登录方式,就需要加以改动才能实现单点登录。认证服务器需要记录用户在各应用服务器的用户名与口令等信息。具体认证过程见图3—5。30 硕+学位论文第3章基y-Web应用的单点登录系统设计应用服务器B(1)登录认证(2)认证确认(3)访问戍用服务器(4)请求认证(5)采用共享Session确认(6)响应应用服务图3-6基于代理的单点登录共享Session技术的核心过程就是图3-6中的步骤(5),采用步骤(3)获得的SessionID作为步骤(5)的头信息,认证服务器“假冒’’客户端为客户端进行登录操作,使用客户端在后续操作中无需再次做登录操作。图3-7认证服务器“假冒”用户登录应用服务器的程序流程图图3.7通过认证服务器的“假冒’’登录操作,省去用户登录的过程,应用服务器上的Web应用系统“并不知道”是认证服务器“假冒"用户进行登录的,所以应用服务器上的Web应用软件多数不做修改,可以直接使用。31 硕+学位论文第3章基于Web应用的单点登录系统设计3.4单点登录实现方案的性能分析对于一个单点登录系统来说考察其性能的优劣需要从安全性、可实施性、可扩展性和可靠性几个方面综合考虑。3.4.1安全性分析单点登录系统的安全性取决于此单点登录系统是否能够抵抗欺骗和攻击。基于此点出发,可以从以下方面考察系统的安全性。1.服务器本身的安全性对于部署单点登录系统的服务器,包括硬件系统和软件操作系统必须是安全的,这是单点登录系统安全的基础。这也是单点登录系统无法控制的,需要网络管理员末保证服务器软硬件的安全性。本文讨论的单点登录系统更是非统一性的Web应用软件系统,除了软件多样、平台多样外,其网络分布和域名都可能是不同的,因此管理员要对该主机建立一个妥善的安全防护体系,防止木马程序的侵入和非法登录事件。2.用户端与服务器端数据传输的安全性数据传输的安全性由两方面保证,一是系统使用的数据本身是经过加密的,二是在客户端与服务器之间传输数据时使用信息加密通道。在本文提出的单点登录系统中,如果没有采用加密措施,具备窃听或截获数据的人就可能非法进入各个系统,从本文的系统本身对安全性进行设计与代码实现,但使用HTTPS通过SSL加密通道,使得用户与服务端之问的信息交互是安全的。3.用户身份的安全性在单点登录系统中最常见的问题是用户的冒名使用,单点登录系统必须要有能力防止用户的冒名使用。在本文提出的单点登录系统中,防止用户冒名登录可以在认证服务器或代理服务器使用常规的技术来实现。3.4.2可实施性分析判断单点登录可实施性主要是根据在实施单点登录时花费的代价和对原有系统改造的工作量。由于本文提出的系统有两种:基于经纪人的单点登录系统和基于代理的单点登录系统。基于经纪人的单点登录系统的实施工作需要在Web应用软件服务器做简单的改造,具有一定的改造量,主要对本Web服务器采用权限设置方式进行修改,变成可以从认证服务器中直接进行设置,一般要对本Web应用服务器的Session对象各属性值进行设置,可实施性中等。本文讨论的基于代理的单点登录系统主要应用了共享Session技术,原有32 硕士学位论文第3章基于Web应用的单点登录系统设计Web应用软件代码改动量很小。因为原有人工登录改为代理服务器登录,所以对机器不能完成的登录操作要改为机器容易完成的登录方式。系统只是使用用户名加口令的方式,机器登录完全可以自动实现;如果有数字证书、图形文字识别等用户登录方式,则要屏蔽此类的功能,或提供简单登录方式。3.4.3可扩展性分析单点登录系统的可扩展性取决于当制作新的应用系统时是否需要实现特定的接口以及实现这个接口需要耗费的工作量和对应用系统造成的影响。本文提出的单点登录系统需要新的应用程序分析和单点登录的实施,实现一定的接口才能使用单点登录系统,应用系统开发商需要提供一定的技术支持。基于经纪人的单点登录系统需要对系统修改,所以可扩展性稍差;基于代理的单点登录系统由于对原有系统改动少,或不改动,所以可扩展性好,如果代理软件设计得当可以做到适应更多的登录方式。3.4.4可靠性分析单点登录系统除了在正常使用的情况下要保证可靠以外,必须在大用户量使用和用户异常使用的情况下也能保证正常运行。本文提出的单点登录系统可采用SOA构架,都采用Web服务的SOAP进行服务器之间的数据传递,每一个服务都有异常处理机制,当某一环节出现问题时,不会导致整个系统的崩溃。3.5本章小结本章是根据单点登录系统的特点,对单点登录系统可能的模型和实现的方案进行研究;针对目前单点登录系统研究主要基于同类系统的研究,提出不同种类系统的解决方法,并对重点对采用共享Session技术实现基于Web应用的单点登录系统方案进行说明、分析与研究。33 硕十学位论文第4章基y-SOA的单点登录系统的设计与实现第4章基于SOA的单点登录系统的设计与实现本章主要针对Web应用的单点登录系统的设计,要求Web应用软件的修改量要尽量的少,采用SOA的构架实现Web应用的单点登录系统。主要采用共享Session的技术,较好地实现了用户的需求。4.1设计需求为了实现对这些系统所管理资源的访问控制,大部分系统都提供了登录窗1:3,要求用户输入用户名和口令(可能还有其它参数,如IP地址、访问端口等),只有被授权的用户才能访问受控资源。这些应用的用户及权限管理是具体应用的组成部分。在这些应用系统内部具体实现中,对资源的访问控制都有其自身的一整套策略,若要将这些应用系统的权限控制接管过来,必须深入到具体应用的内部,并对原有应用系统的源代码进行改动,显然这样做是非常困难的,同时也必然会影响到企业原有各种系统的运作,给系统的正常运行带来额外的负担。设计需求的要点:1.单点登录系统设计主要针对各种Web应用系统,其中可以基于Java平台的、也可能是基于.net平台,或者其他应用平台。2.单点登录系统设计对原有应用系统的软件改动很小,甚至不改动。3.单点登录系统要做到安全、可靠、实用。本文针对福建工程学院的信息管理系统进行研究,结合学院的信息管理系统现状,提出单点登录的解决方案。4.1.1应用系统的现状福建工程学院为新升本科的院校,由体制的原因,与其它学校一样,存在多个系统同时在用,每个系统都具备用户登录与管理系统,虽然学院方面进行了一卡通工程,但是由于应用商家的软件都具有独特的应用领域与关键技术,所以在学院方面进行集成就显得十分困难。福建工程学院目前有多个应用子系统,多数是基于Web的应用;个别基于C/S模式的应用是非公开的应用,这些应用只针对本部门或小团体的人员使用。目前主要的信息系统有教务管理系统、学生管理系统、人事管理系统、评建管理系统、邮件服务、图书管理系统、财务管理系统、资产管理系统等;还有部分单机版的小信息系统,如党组织的信息管理等。所有在校园网上运行的系统都是基于Web的,由于考虑客户端的安装与维护,一般C/S模式的应用不在校园公网中运行;基于Web的财务管理系统只有查询功能,所以在校园公网上使用,而具备所有功能的财务管理系统,则是在财务处内部网络上运行。34 硕士学位论文第4章基y-SOA的单点登录系统的设计与实现根据调研,主要的信息系统如下图信息管理系统图4-1福建工程学院信息管理系统构成每个系统采用的技术手段各有不同,教务系统是微软.net的系统,对应使用微软的IIS服务器;学生管理系统采用J2EE的构架,采用JSP作为Web服务器设计语言;而邮件服务器采用PHP作为设计语言,其对应的Web服务器为ApacheServer;其它系统都采用ASP作为服务器端语言,微软的IIS服务器作为W曲服务器。就技术手段而言,各种各样的Web服务器和脚本语言.4.1.2用户的需求由于现状系统的复杂性,要在所有系统中进行适应性改造对于用户和软件开发商都是一个大工程,而所有经过修改的软件还需要重新需求分析、设计、实现、测试等漫长的过程,只有资金雄厚、坚定决心的用户才做得起。显而易见,如果能用最小的改造甚至不改造,就可以实现单点登录是系统设计最重要的需要。其次,软件安全性不能随着单点登录系统的启用而减低。单点登录系统作为后台的系统,没有过多界面的要求,只要求实现当用户第一次登录系统后,可以自由访问其它信息系统,不需要第二次登录。而福建工程学院的各种信息管理系统都是不例外地采用用户密码的登录方式。以教务系统为例,它是采用浙江的正方软件公司的正方教务管理系统。采用ASP服务器端脚本语言开发,后台数据库为ORACLE。登录界面如图4-2所示。35一n⋯引●● 硕+学位论文第4章基丁SOA的单点晋录系统的址计。o实现图4-2福建I程学院教务管理系统登录界面其它的信息系统的界面l与教务系统类似,都采用用户密码的置录方式,所不刊的在于可能存在一些选择项,选择其登录的身份,如教务系统中的部门、教师、学生坯是甜客:而这些信息都是通过删贞以POST或GET的方式传到服务器中,Web服务器通过脚本语言获得有关参数确定是雨登录成功,如果毪录成功,ⅢU对系统的一些参数进行设定.最常见的是对Session对象进行设簧;而Session对象或其它对象的设置并不是一种固定的方式,而是多种解决方法。川户的需求就是这些鼗录过程一Ⅱ以山后台的自动脚本实现,这些自动实现可以m单点登录系统发H{的,也町以通过修改Web应用系统术身实现。413需求分析图4-3用例图简单表示二种角色及其用例福建工程学院单点登录系统孓p◇Ⅺ唾丽夺、/jV、、童璺/、以,面丽扑“\剞鉴.∥℃埋靳图,I-3福建工程学院单点登录系统用例图根据系统的需要,馗过对象分析,系统主要有二个角色,它们分别是_【lj户 硕十学位论文第4章基于SOA的单点登录系统的设计与实现管理员、代理者。4.2基于SOA的单点登录系统设计及Ticket的生成、传输方案研究根据第三章的研究,应用共享Session技术实现基于Web应用的单点登录系统具有较明显的优点,特别是针对不同厂商的Web应用的单点登录系统;所以,福建工程学院各信息系统不同的平台和技术对于共享Session技术实现单点登录是具有明显的好处。4.2.1总体设计共享Session技术的单点登录方案可以用于福建工程学院单点登录系统的建设;根据方案的特点,认证服务器(即代理服务器)主要是代替用户对应用资源的进行登录操作,所以它主要由用于单点登录的统一登录模块、用于接收应用服务器的用户识别模块和用于“假冒"用户登录进行共享Session登录的代理登录模块构成;具体分模块的方式见图4.4所示。I统一登录II用户识别ll代理登录II模块Il模块Il模块I图4-4福建工程学院单点登录系统分模块图统一登录模块完成的工作与一般登录模块类似,通过这个模块实现用户登录的身份识别和获得用户信息,主要是为了描述用户的权限,而针对单点登录系统要获得用户对应用服务器的代理登录信息(包括用户名、密码、其它要求登录项和登录方式等)。用户识别模块是完成用户客户端、认证服务器、应用服务器之间用户统一识别作用;为了完成这个目标,模块必须在三个系统问传输Ticket,以识别当前用户。代理登录模块是让认证服务器代理用户去完成登录过程;它必须从Ticket获得必要的信息,以便实现“假冒”用户对应用系统进行登录。4.2.2数据库设计比较Cookie、Session、IP方法,选择Session方式作为实现方案的技术路线。为了对用户登录进行识别与管理,需要进行数据库的设计,本文采用ORACLE数据库,进行用户管理。通过分析设计数据库的表主要有用户信息表、代理登录信息表,如表4.1与表4—2所示。37 硕七学位论文第4章基于SOA的单点登录系统的设计与实现表4-1用户信息表t-user表结构序号列名定义类型含义备注表4.1中SessionlD表示指定用户当自{『的Session号,如果系统允许实现一个用户多处同时登录,就可以将tuser表中UserlD、SessionTime、SessionlD独立定义成一个表,实现用户与Session之间一对多的关系。表4-2代理登录信息表t—agent表结构由于表4.2是采用代理登录,所以必须采用POST或GET方式将数据提交到登录处理页面,其中LoginName和Password都需要以指定的对象名=参数值的方式存放在数据库表中。有关如何形成对象名=参数值的过程,主要通过单点登录系统后台管理程序的设置来完成,在这里不做讨论。4.3基于SOA的单点登录系统的方案构架4.3.1基于SOA的系统软件构架38 硕+学位论文第4章基于SOA的单点登录系统的设计与实现认证服务器勋图4-5单点登录系统软件构架图如图4.5所示,系统软件主要安装在认证服务器上,应用系统应安装用户识别模块。认证服务器上主要需要安装统一登录模块、代理登录模块和用户识别模块(服务端)。由于用户识别模块(应用端)只需要根据服务器端脚本不同编写代码,而不需要针对不同W曲应用编写不同的代码,所以对原有Web应用系统的代码修改量很小,甚至有的可以不做代码修改。由于统一登录模块、代理登录模块、用户识别模块(服务端)、用户识别模块(应用端)采用的技术不相同,所以为了沟通他们之间的消息必须采用与语言无关的中间文本XML,软件构架考虑接口的简洁、使用,采用SOA的构架进行设计。特别是代理登录模块,需要更改HTTP头信息,所以很难采用Web服务脚本语言(如:ASP、JSP等)来实现编程。而统一登录模块是Web的应用界面,采用Wreb类语言实现就比较顺利。各模块间采用XML格式进行数据交换,模块间的接口都支持HTTP协议;采用SOA的软件构架【551,方便各部分的软件编程以及接口间的数据交换。4.3.2统一登录模块统一登录模块主要完成用户在认证服务器上的登录,以此为依据,认证服务器才能为用户在其它Web应用服务器上代为登录。其主要功能就是用户登录的判断,可以通过存储过程的调用对用户合法性进行判断,并记录最后登录的时间,提醒用户注意返回上次登录时间。对于登录成功的用户,设置认证服务器的Session对象,并对用户登录做出响应回答。4.3.3代理登录模块代理登录模块根据收到的图4.5中请求(1)和请求(3)的Session号,与39 硕士学位论文第4章基于SOA的单点登录系统的设计与实现Session集合中的做比较;如果查找到相应的登录记录,则获取其应做代理登录的登录参数,将请求(3)的Session号放在准备发出HTTP请求的Cookie属性上,将其它的参数POST或GET给Web应用软件的登录程序,这样就代理客户进行登录。如果Web应用软件的登录程序特殊性,造成不能代理登录,只需要将Web应用的登录程序修改为最常规的用户名密码方式就可以实现共享Session登录。比如,目前有很多的网站设置数字水印作为登录的安全措施,防止密码字典攻击或自动登录,只要将水印功能去除,就可以实现代理登录。4.3.4用户识别模块(服务端)当用户识别模块(应用端)将请求(1)和请求(3)的Session号发送到用户识别模块(服务端)时,用户识别模块(服务端)必须将有关信息通知代理登录模块,由代理登录模块集中处理,并判断返回用户是否统一登录,已经统一登录的用户访问将转入主界面,未完成统一登录的用户转入统一登录界面。4.3.5用户识别模块(应用端)当用户进入应用服务器用户识别页面时,页面嵌入AJAX代码【50】【51儿521,异步访问认证服务器,以获得请求(1)Session号,并由将请求(1)与请求(3)的Session号都异步提交给用户识别模块(服务端)。由于采用AJAX,实现客户端多个Session可以在一个页面中异步提交,并采用XML格式作为信息交换的标准。用户识别模块(应用端)因为安装在应用服务器上,所以要采用与应用服务器相同的Web脚本语言。虽然应用系统会各有不同,但是,同一种脚本语言的模块程序不需要改动。4.4算法设计单点登录系统由于在运行过程中,多次在客户端、应用服务器和认证服务器之间调用,如果采用简单的流程图描述就难以描述,采用类似时序图的方式来表示页面访问顺序。图4—6是以已经统一登录的用户首次访问应用服务器时,需要进行认证服务器协助验证的过程。40 硕士学位论文第4章基于SOA的单点登录系统的设计与实现图4-6已统一登录的用户首次访问应用服务器流程图图4-6的过程描述了用户识别模块的工作过程,由于语言种类和运行环境不4l 硕十学位论文第4章基丁SOA的单点登录系统的设计与实现同有许多过程不能详细列出,就图中调用的储存过程A和代理登录过程进一步的描述。存储过程A是为登录用户提供验证服务的,以PL/SQL编写,各种语言均可以调用。存储过程输入参数为:统一登录的Session号、应用服务器IP地址,输出参数为:返回标志值、返回描述、代理登录URL、用户名、密码、其它参数、提交方式等。具体处理过程如下:1.Select查询表tuser、tagent,两表用UserID做连接键,查询条件SessionlD等于输入参数统一登录Session号且当前时问与LoginTime之差小于规定值(如1小时),AppIP等于应用服务器IP地址。2.如果返回0行,例外处理:返回标志值设l,返回描述为尚未登录或登录超过时限,程序结束。3.如果返回多行,例外处理:返回标志值设2,返回描述为内部错误,程序结束。4.将返回行的代理登录URL、用户名、密码、其它参数、提交方式赋值给对应的输出参数。5.设置LoginTime为当前时间。6.返回标志值设为O,返回描述为用户已经登录,程序结束。代理登录程序是实现共享Session的重要程序,其实现算法由Delphi语言编写,具体过程如下:1.将调用命令参数(统一登录Session)赋值给存储过程A的输入参数。2.将应用服务器IP赋值给存储过程A的输入参数3.执行存储过程A.4.如果返回参数中返回标志值不为零,程序结束;返回标志值为零,继续。5.实例化TidHTTP类的对象idHTTP。6.将idHTTP的Cookie位设置为应用Session号。IdHttp.Request.SetHeaders;IdHttp.Request.RawHeaders.Values[’Cookie’】:2Get_SessionlD(PSMem);IdHttp.Request.CustomHeaders.Values[’Cookie’]:2Get_SessionID(PSMem);//GetSessionlD(PSMem)获取应用SessionID7.初始化PostData(Tstrings类),赋初值存储过程输出参数用户名。8.PostData追加字符串:存储过程输出参数密码。9.PostData追加字符串:存储过程输出参数其它参数。10.给idHTTPURL赋值,用存储过程输出参数应用URL。11.发送HTTP请求,使用调用参数idHTTPURL和PostData,返回页面42 硕士学位论文第4章基于SOA的单点登录系统的设计与实现代码存入字符串。4.5安全设计对系统的威胁来自多个方面。系统可能被网络窃听的,也可能被伪造的DNS服务器欺骗,或可能受到近期最频繁的MAC类攻击,还有受到重复式攻击或字典式密码攻击:对于应用系统来说,它主要防止网络窃听和字典式密码攻击的威胁,其它很多威胁主要需要操作系统和标准的安全软件来防止。为了防止网络窃听,就必须将网络传输的信息保密。HTTPS就可以为Web应用提供很好的保护【5411551。当然,系统开销将会成倍的增长。在本系统中将统一登录模块可使用HTTPS的平台,对登录系统进行安全加固。认证服务器湖图4—7系统登录传输过程协议图如图4.7所示,当进行统一系统登录时,采用HTTPS协议,保护统一登录过程能抗窃听;而其它传输过程没有采用HTTPS协议保护,所以不能抗窃听。认证服务器与应用服务器之间一般在重要的机房或IDC,所以它们之间即使采用HTTP的连接,一般用户也无法从中窃听。为了防止客户端对认证服务器进行字典式密码尝试攻击,可以采用许多网站使用的验证码图像生成技术,防止来自客户机的字典式密码尝试攻击;也可使用多次登录失败后延长登录时间的办法来实现。统一登录过程的Session号需要在用户识别模块之间传输时,也在登录后可以采用对称加密算法对统一登录的Session号进行加密,由于最后解密也在同一服务器上进行,所以即使被窃听也不会直接影响到认证服务器的安全,但是被窃听的应用服务器就可能被入侵。入侵者窃听到应用服务器的Session号时,可以采用共享Session技术进入应用服务器,但虽然窃听到被对称加密过的统一登录的Session号,还是不能直接进入认证服务器,确保认证服务器的安全。43 硕+学位论文第4章基于SOA的单点登录系统的设计与实现当采用HTTPS连接和验证码图像技术进行统一登录时,其登录访问应用过程安全性得到加强。过程l图4-8系统传输过程安全性如图4-8所示,采用加固后的单点登录系统的安全性得到提高,在登录过程都处于安全保护之下,唯一不安全的是图4.8中步骤3和4过程,而这些过程也可以通过其它方法实现安全过程,如在程序中增加IP实时绑定等。4.6使用效果分析目fj{『多数基于Web应用的单点登录系统主要是基于经纪人模型,其单点登录系统要求Web应用系统使用统一的认证方式,需要对应用软件做较大的修改。就使用效果而言,与目前系统相比如表4.3所示。表4-3基于Web应用的单点登录系统使用效果比较 硕士学位论文第4章基于SOA的单点登录系统的设计与实现系统经过安全加固后,客户并不会感觉到大的变化,但系统内部需要新增软硬件开支来完成安全程序。采用HrrPS方式加固的系统在统一登录时,只是在浏览器的状态栏出现采用安全连接的标志,连接速度会变慢一些。采用验证码图像技术进行加固时,客户每次登录需要用肉眼识别文字后,用手工输入的方式来实现登录,使客户机难以运用程序自动登录。4.7本章小结本章详细说明了针对福建工程学院信息系统进行单点登录系统的研究与设计,采用共享Session技术基于SOA构架对系统的具体实现做了详细的介绍,并对其中关键的算法进行分析。45 硕士学位论文第5章总结与展望第5章总结与展望5.1论文总结随着Intemet技术不断发展,Intemet应用系统不断增加,企业、事业单位对单点登录的需求同益增加,除了可以用统一规划统一实现的方式使Web应用系统达到身份一致,另一种方式还是需要单点登录技术实现身份认证和登录管理。单点登录技术还会不断“平民化”,促进更小的企业、事业单位能得到应用。本文首先对单点登录的背景、现状、问题、目标进行探讨,对Microsoft的.NetPassport认证系统、Kerberos认证系统和SAML认证系统比较和分析,针对Web应用特点,提出研究目标和方法,并初步确定研究内容。其次,对单点登录涉及的技术进一步的探讨。比较分析了单点登录的Ticket生成技术和传输技术,对单点登录系统的软件构架理论基础进行分析和比较。在单点登录Ticket技术中,主要分析比较Cookie、Session、IP、MAC等,对传输过程安全方法进行描述。通过研究各单点登录模型并进行比较分析,对单点登录中Ticket生成技术和传输技术进行研究和探讨,通过实验的方法,验证了共享Session技术的可行性。研究并提出了基于经纪人的主动式、被动式单点登录系统方案和利用共享Session技术的基于代理的单点登录系统方案。通过对三个方案的分析比较,明晰了共享Session技术在单点登录系统中应用的优势。单点登录技术中共享Session技术方法是一种新颖的方法和手段,该方法特别适合于各种不同类型Web应用软件的单点登录系统研究与开发。在对现有Web应用系统的分析研究基础上,运用共享Session技术设计实现了福建工程学院单点登录系统原型。实际应用表明,运用共享Session技术的单点登录系统可最小化各Web应用系统的软件修改量,并具有安全、可靠特点。5.2研究展望研究单点登录技术,目前对该技术的安全性,以及SAML在该方案中实现还需要进一步研究和探讨。特别是SAML的运用,将常规方法的实现方案与现代标准进行接轨,更加完善该单点登录技术方案。随着基于IPv6协议的网络不断扩大,基于IPv6的认证系统也将利用IPv6的特点,给单点登录系统的研究增加新的元素,也会成为新的研究方向;IPv6提供IPv4所无法比拟的地址空间,使网络地址唯一性的问题得以很好的解决, 硕士学位论文第5章总结与展望特别是IPv6协议的安全性,基于P的单点登录系统将在未来的系统中起更重要作用。回顾论文,虽然对单点登录有了一定的了解,但是对于深入研究任务还很艰巨;因此,在今后的学习中,我将把握住自己最感兴趣的方向不断努力前进。47 硕+学位论文参考文献参考文献【1]金辉.SingleSign—On单点登录技术谈.URL:http://www-128.ibm.com/developerworks/cn/security/se-sso/index.html.2002,4[2】Microsoft.Microsoft.NETPassport2.5SoftwareDevelopmentKit,http://msdn.Microsoft.com/library/default.asp?url=/downloads/list/websrvpass.asp[3】LibertyAllianceProject.TheLibertyAlliance.http://www.projectliberty.org/【4】OASIS.SAMLV2.0.http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security#samlv20[5】OASIS.SAMLV1.1.http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security#samlv11/[6】IETEHypertextTransferProtocol—HTTP/1.1.http://www.ietf.org/rfc/rfc2616.txt?number=2616【7】RolfOppliger.Microsoft.NETPassport:ASecurityAnalysis.ComputingPractices.IEEEComputerSociety,2003,36(7):29-35【8】MIT.Kerberos:TheNetworkAuthenticationProtoc01.December06,2005.http://web.mit.edu/kerberos/www/【9】Malek,HarmantzisESecurityManagementofWebServices.NetworkOperationsandManagementSymposium,2004:175~189【10]ParkN,MoonK.AStudyontheXKMS—basedKeyManagementSystemforSecureGlobalXMLWebServices.NetworkOperationsandManagementSymposium,2004:492-495[11]Gross,SecurityT.AnalysisoftheSAMLSingleSign-onBrowser/artifactProfile.ComputerSecurityApplicationsConference,2003:298-307[12]Srinivas.NetworkandWebServicesSecurityConceptsUsingJava.ProceedingsofWebCongress,2003:238-238[13]OppligerR.Microsoft.NetPassport:asecurityanalysis.Computer,IEEE,2003,36(7):29~35【14]PfitzmannB,WaidnerM.Analysisoflibertysingle-sign-onwithenabledclients.IntemetComputing,IEEE,2003,7(6):38-44[15]GangZhao,DongZheng,KefeiChen.DesignofSingleSign-On.E-Commerce48 硕十学位论文参考文献TechnologyforDynamic—E—Business,IEEEInternationalConference,2004:253-256[16]WillianBoswell.InsideWindowsServer2003.USA:Addison-wesley.2003【17]BirgitPfitzmann,MichaelWaidner.Token-basedWebSingleSignonwithEnabledClients.USA:IBMZurichResearchLaboratory,2002,11【18]ViaDelegationMechanismsUsingShort-livedUserIdentities.ParallelandDistributedProcessingSymposium,2004,1:22-23[19]AndrewConry—Murray.Microsoft’SPassporttoControversy.NetworkMagazine,2002,17(3):46-49【20]DavidRKormann,AvielD.Rubin.RisksofthePassportSingleSign-onProtoc01.ComputerNetworks,2000,33(6):51-58【21】丁健生.多企业应用的单点登录系统的研究与设计.西安:西北工业大学硕士学位论文,2005【22]李旭伟,汤丽萍,朱宏等.B/S架构的单点登录系统模型.四川大学学报(7-程科学版),2006,38(2):132.136【23]周晓寰,张秦艳.SAML2.0在WEB单点登录系统模型中的应用.科技信息,2007,(4):14-16[24]武文丽,黄永忠,陈海勇.基于安全断言标记语言实现单点登陆.计算机工程与设计,2007,28(4):785~788【25]孙绪荣.吐哈油田单点登录系统中登录信息同步的研究与实现.成都:四川大学硕士学位论文,2006“[26]filj寅庚.吐哈油田单点登录系统WEB访问子系统的设计与实现.成都:四川大学硕士学位论文,2006[27】汤丽萍.吐哈油田单点登录系统总体设计与控制台管理子系统的实现.成都:四川大学硕士学位论文,2006[28]申婷.基于令牌的单点登录协议及其应用.西安:西安电子科技大学硕士学位论文,2006[29]陈波,徐鲁强,张晓丹.基于SAML的单点登录模型.网络与信息技术,2007,26(2):56-57【30]DirkKrafzig,KarlBanke,DirkSlama。EnterpriseSOA.北京:清华大学出版社,2006【3l】尹星.基于SAML的单点登录模型及其安全的研究与实现.南京:江苏大学硕士学位论文,2005[321丁立新,赵曦滨,顾明.基于kerberos的W曲单点登录研究.计算机工程与应49 硕十学位论文参考文献用,2005,14:124~126[33]仵小暾,张武君,李晖.基于SAML的单点登陆系统模型.电子科技,2006,204(9):54~56【34]沈海波,洪帆.基于Cookie的W曲服务安全认证系统.计算机工程与设计,2006,27(5):762-764[35]杨文波,张辉,刘瑞.基于Cookie的门户系统单点登录模型.计算机应用研究,2006,(8):100~101【36]朱瑞丹.单点登录在企业门户应用中的实现.杭州:浙江大学硕士学位论文,2007[37]SumalathaAdabala,A.Matsunaga.SingleSign—oninIn-VIGO:Role-basedAccessViaDelegationMechanismsUsingShort-livedUserIdentities.ParallelandDistributedProcessingSymposium,2004,1:22N23[38]续岩,季永志.单点登录技术在Web应用中的研究与实现.计算机工程,2006,32(101:271-273[39】戴芳胜,何守才,黄建华.单点登录技术的研究.上海第S.-I-业大学学报,2005,22(3):25-30[40】毛捍东,张维明.一个基于W曲服务的单点登录系统.计算机工程与应用,2004,24(1):18-20【41]茅维华,谢金宝.w曲应用单一登录的类Kerberos实现.计算机应用与软件,2004,21(2):87-89[42]张挺,耿继.w曲环境下的SSO实现模式的研究.计算机仿真,2005,22(8):128-13l【43】王珊珊.XML安全认证协议及单点登录系统的研究.西安:西安电子科技大学硕士学位论文,2004[44】陈晓东.基于微软护照协议的单点登录系统的研究.武汉:华中科技大学硕士论文,2004【45]韩涛,郭荷清.w曲服务安全模型的研究与实现.计算机工程,2006,32(10):130N134【46]H.M.Deitel,P.J.Deitel.B.DuWaldt,L.K.Trees.WLeb服务实用技术教程.北京:机械工业出版社,2004【47]BenGalbraith,WhitneyHankison.W曲服务安全性高级编程.北京:清华大学出版社,2003【48]BretHartman,DonaldJ.Filnn,杨硕译.全面掌握W曲服务安全性.北京:清华大学出版社.2004 硕士学位论文参考文献[49]肖菁.WebSphere环境下的SSO(Singlesign-on-单点登录、全网漫游)实现之:一SSO实现技术准备.http://www.ibm.com/developerworks/cn/websphere/library/techarticles/xiaojing/SSOprepare/SSOprepare.html【50】肖菁.WebSphereJ不境下的SSO(Singlesign—on:单点登录、全网漫游)实现之:~SSO(SingleSign—On)实现步骤.http://www.ibm.corn/developerworks/cn/websphere/library/techarticles/xiaojing/SSOimplement/SSOimplement.html[51]BrettMcLaughlin.掌握Ajax系列.http://www.ibm.corn/developerworks/cn/web/wa—ajaxintro/[52]PhilipMcCarthy.面向Java开发人员的Ajax.http://www.ibm.com/developerworks/cn/java/j—ajax/[53]JamesSnell.使用Ajax调用SOAPW曲服务.http://www.ibm.corn/developerworks/cn/webservices/ws-wsajax/[54]金戈,姚辉,赵勇,谭佳.SOA快速指南123.http://www.ibm.corn/developerworks/cn/webservices/soal23/index.html【55]HenryCui.使用RationalApplicationDeveloper构建HTTPSW曲服务:第1部分:W曲服务与W.eb服务客户机.https://www6.software.ibm.com/developerworks/cn/education/webservices/ws-httpsradl/[56]MartinCBrown.基于SOA构建网格应用程序.http://www.ibm.com/developerworks/cn/grid/gr-soa/【57]ERICNEWCOMER,GREGLOMOW.UNDERSTANDINGSOAWITHWEBSERVICES中文版.北京:电子工业出版社,2006,6【58】STEVEGRAHAM等.用JA、,A构建WEB服务.北京:机械工业出版社,2003,1【59]SCOTTSEELY.XML跨平台WEBSERVICE开发技术.北京:机械工业出版社,2002,4【60]孙鑫.JAVAWEB开发详解一xML+XSLT+SERVLET+JSP深入剖析与实例应用.北京:电子工业出版社,2006,4f61】丁跃潮,张涛.XML实用教程.北京:北京大学出版社,2006,10【62]耿祥义.XML基础教程.北京:清华大学出版社,2006,4【631赵强.J2EE应用开发(WEBLOGIC+JBUILDER)(第二版).北京:电子工业出版社,2006,1151 硕+学位论文参考文献[64]RtJ晓飞,张健,赵洁.精通JBUILDER2006.北京:电子工业出版社,2006,1052 硕十学位论文致谢致谢首先,我要感谢我尊敬的导师胡志刚教授,感谢他在我多年的学习和研究的时问里对我的关心和帮助;特别是我论文定稿的这段时间罩,为使我的论文更加完美导师倾注了大量的心血。导师严谨的治学态度、和蔼的为人作风都在我脑海里留下了深刻的印象!感谢中南大学其他老师,他们在我的学习和论文写作过程中给予很多的帮助。感谢我的同事,他们跟我一起学习,一起完成论文。感谢我的家人,是她们默默陪伴我,给我创造很好的学习条件。53 硕士学位论文攻读学位期间主要的研究成果攻读学位期间主要的研究成果发表论文[1]杨荣华,胡志刚.基于SOA的单点登录系统研究与设计.福建工程学院学报.2008,(6)参加科研项目[1]杨荣华,黄晓伟,蒋建辉等.基于ASP模式的中小离散型企业ERP软件设计与实现.福建省教育厅.2008年54

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档

相关文档