一个单点系统的设计与实现.docx
- 文档编号:7295383
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:50
- 大小:1.72MB
一个单点系统的设计与实现.docx
《一个单点系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《一个单点系统的设计与实现.docx(50页珍藏版)》请在冰豆网上搜索。
一个单点系统的设计与实现
分类号学号
学校代码密级
硕士学位论文
一个单点系统的设计与实现
学位申请人
:
学科专业
:
计算机应用技术
指导教师
:
答辩日期
:
ThesisSubmittedinPartialFulfillmentoftheRequirementsfortheDegreeOfMasterofEngineering
TheDesignandImplementationofaSSOSystem
Candidate:
LiNa
Major:
ComputerTechnology
Supervisor:
Prof.HuHeping
HuazhongUniversityofScienceandTechnology
Wuhan430074,P.R.China
Dec,2009
独创性声明
本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。
对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律结果由本人承担。
学位论文作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:
学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
保密,在年解密后适用本授权书。
本论文属于不保密。
(请在以上方框内打“√”)
学位论文作者签名:
指导教师签名:
日期:
年月日日期:
年月日
摘要
随着信息技术和网络的发展,学校各个部门根据业务信息水平的需要构建了相应的应用系统以提高工作效率。
但是由于这些应用系统一般是在不同的时期开发完成的,各应用系统由于功能侧重、设计方法和开发技术都有所不同,也就形成了各自独立的用户库和用户认证体系。
用户在每个应用系统中都有独立的账号,这样就造成在访问不同的应用系统时,需要记录对应的用户名和密码,多个用户名密码非常容易记混,这不但增加了用户的使用负担,而且使用户帐号泄密的危险性增大,降低了系统的安全性。
系统管理员需要维护这些系统中重复的用户帐号,从而无形中增加了工作负担。
门户作为统一的信息访问入口,被越来越多的企业应用于多个系统之间的集成,门户中用户的集成采用单点登录机制来解决。
单点登录技术可以将多个身份帐户进行统一验证授权,每个用户只需记录一个用户名密码,登录一个平台后即可实现各应用系统的透明跳转。
因此,在分析了目前单点登录技术后,本文设计实现了一个单点系统,可以把当前应用系统无缝接入,以达到校园网内构建一个统一身份认证平台的要求。
系统主要采用LDAP技术存储用户信息和应用系统信息;利用Kerberos协议实现可信任第三方的安全的认证;另外,根据校园的应用系统多、地点分布广的实际情况,利用WebServices技术实现认证,使用SSL传输来确保认证中心和应用系统之间的数据传输安全性。
关键词:
单点登录;轻量级目录访问协议;网络服务;安全套接层
Abstract
Asinformationtechnologyandnetworkdevelopment,schools,allsectorsofbusinessinformationaccordingtothelevelofthecorrespondingneedtobuildapplicationstoimproveefficiency.However,becausetheseapplicationsaregenerallydevelopedindifferentperiodscompleted,theapplicationoffunctionalfocus,designmethodsanddevelopmentoftechnologyaredifferent,alsoformedaseparateuserbaseanduserauthenticationsystem.Usersineachapplicationsystemhasitsownaccount,sothatresultedinaccesstodifferentapplicationsystems,theneedtorecordthecorrespondingusernameandpassword,multipleusernamesisveryeasytorememberpasswordmixed,whichwillnotonlyincreasetheburdenontheuser'suseof,butalsouseraccountsincreasestheriskofleaksandreducethesystem'ssecurity.Systemadministratorsneedtomaintainthesesystemsduplicateuseraccounts,therebypotentiallyincreasingworkload.
Portalasaunifiedinformationaccessportalhasbeenanincreasingnumberofenterpriseapplicationintegrationbetweenmultiplesystems,theSSOtechnologyresolvestheintegrationoftheusersinportal.TheSSOtechnologycanbemoreunifiedaccountauthenticationidentityauthorization,eachuseronlyneedtorecordausernameandpassword,loggingonaplatformtojumpindifferentapplicationstransparently.So,theanalysisofthecurrentsituationoftheSSOtechnology,thispaperdesignsaSSOsystemthatallowsseamlessaccesstocurrentapplicationssystemsinordertoachievetobuildaunifiedplatformforidentityauthenticationrequirementswithinthecampusnetwork.
ThesystemmainlyusesLDAPtostorebothinformationofusersandapplications;usingKerberosprotocoltorealizesecurityauthenticationofthetrustedthird-party;addition,accordingtotheactualsituationoncampus-thesystemmorewidelydistributed,thecharacteristicsoflocations,usingWebServicestechnologytorealizetheauthentication,usingSSLtransporttoensurethatapplicationsandcertificationcenterfordatatransmissionsecurity.
KeyWords:
SingleSign-On;LDAP;WebServices;SSL
1绪论
1.1项目的背景、目的、意义
以往的身份认证机制是采用输入用户帐号/口令的弱验证方式进行认证,它的用户管理是分散的,业务系统都有自己独立的用户管理模块,同一用户在各个业务系统分别保存有不同的帐号和密码,之间无法相互传递,即一个用户有多个帐号,在登录不同的业务系统时都需要重新输入相应系统的用户帐号和密码,来通过系统的认证。
对用户而言,在每个应用系统中都有自己独立的账号,需要记住对应的用户名和密码,多个用户名密码极易记混,为了记住它们,就选择一些简单的信息作为口令,这不仅大大降低了安全性,而且如果忘记或记错了某一个业务网站的用户名或密码就无法进行登录,耽误工作,影响工作效率。
对管理者而言,多个应用平台就有多个用户管理,这也为系统管理员维护人员系统带来巨大的工作量,例如,一次变更10个人员,即使只有5个应用系统,也需要重复维护50个人员信息,而企业的每次人员调整远不至10人,这种几何增长的维护工作量,会浪费大量的精力和时间,减弱了信息化系统带来方便快捷,管理显得很困难。
除了上面的情况外,使用用户帐号/口令的认证方式是非常不安全的,用户帐号和密码在网络上以明文的方式传输,攻击者很容易就可以截取到;另外频繁的输入用户名、口令,会相应的增大用户的口令密码被破解的机率,这样就会给用户造成无法想象的损失。
分析其原因,这主要是由分散的用户管理造成的,各个应用系统间没有联系。
各应用系统由于功能侧重、设计方法和开发技术都有所不同,每个系统分别保存了用户的身份标识,也就形成了各自独立的用户库和用户认证体系,无法互相传递。
这就使得用户在登陆每一个系统时都要重新提交各个系统中的身份标识,来通过系统的认证。
解决这个问题的方法就是单点登录,英文名称为SingleSign-On,简写为SSO,通常指一个用户在使用多个应用时只需要同一个认证信息(如用户名/密码),并且只需要登录一次就可使用所有的应用。
IBM对SSO有一个形象的解释“单点登录、全网漫游”[]。
每个用户只需记录一个用户名密码,登录一个平台后即可实现各应用系统的透明跳转,这就使得用户可以更加安全快捷的使用互联网上的各种服务,提高了用户的工作效率。
1.2单点登录系统的国内外发展现状
在具体的单点登录实现中,国外许多著名计算机软件公司中实施单点登录技术的主要代表是Micorsoft公司的Passport单点登录和Sun公司的自由联盟计划(LibertyAllianceProject)。
它们两者具有相同的共性,即都能管理基于Web的身份标识和身份验证,让用户只需具有一个能够进行单点登录的Web身份。
但是,它们又有各自的特点,下面简要介绍这两个主流的单点登录协议:
微软Passport单点登录协议和Sun公司的自由联盟规范。
微软Passport单点登录协议使用了Kerberos认证机制[]来完成身份认证工作。
Kerberos认证是一种面向开放系统的为网络通信提供可信第三方服务的机制。
在Kerberos认证机制中,每当用户(Client)申请得到某服务程序(Server)的服务时,用户和服务程序会首先向Kerberos要求认证对方的身份,认证建立在用户(Client)和服务程序(Server)对Kerberos的信任的基础上。
在申请认证时,Client和Server都可看成是Kerberos认证服务的用户,为了和其它服务的用户区别Kerberos用户统称为principle,principle既可以是用户也可以是某项服务。
当用户登录到工作站时,Kerberos对用户进行初始认证,通过认证的用户可以在整个登录时间得到相应的服务。
Kerberos既不依赖用户登录的终端,也不依赖用户所请求的服务的安全机制,它本身提供了认证服务器来完成用户的认证工作。
简单地说,Kerberos通过集中存储的安全信息和分布式的“tickets”来实现用户身份认证。
微软的.NETPassport[]是由微软公司运行的一种Web服务,提供集中式身份验证,使用户登录到网站以及执行电子商务交易的过程变得更加简便,能将Windows帐号和MSN帐号联系起来,这样登录了Windows就登录了MSN(Messenger),登录MSN就能直接访问Hotmail等其他服务了,这个过程就是单点登录和联盟登录。
不过.NETPassport是一种Web服务,而不是一种开放的规范,从本质上来说是一种由微软控制的中央统筹式的单一登录服务。
该服务需要使用MSN和Hotmail中的基本身份验证。
虽然微软Passport已经提供了多年的服务,承诺用户在P的信息的可靠性和安全会得到充分的保障,但是其安全性一直为人们所置疑。
由于P在整个模型中的核心地位,是黑客可能集中攻击的目标。
另外,Passport核心的验证服务器以及用户个人信息服务器都是微软一手控制的,技术细节不对外公开,导致用户担心自己的资料被泄漏。
LibertyAllianceProject(自由联盟计划)[]是由SunMicrosystems和其他几个公司建立的一个联合会,它开发了定义联盟标识的一种规范。
它提倡一种开放的分散的系统,而且能够容纳多种身份认证机制。
Liberty的目的是允许不同的Web站点代表他们的客户进行合作,从而促进更多无缝和直观的活动。
联盟是LibertyAlliance采用的一种方法,它表示可以在一组信任的对等实体之间共享身份认证信息,从而能够实现SSO。
Liberty建立在OASISSAML规范[]的基础上,同时它也扩充了OASISSAML规范。
Liberty在信任圈成员内的单点登录是利用SAML身份认证断言实现的。
自由联盟Liberty规范的核心部分是身份联合(IdentityFederation),即两个Web应用系统之间仍然保留原来的用户认证机制,通过建立它们各自身份的对应关系来达到单点登录的目的;用户的验证票据通过Cookie或HTTPREDICTION在Web应用间传递来实现单点登录,而用户的个人信息的交换通过两个Web应用间的后台SOAP通信进行。
Liberty的单点注销过程通过身份联合关联起来的服务器间传播的注销请求来实现。
自由联盟单点登录协议的过程同微软Passport单点登录协议过程大体上相同,但不同之处是:
在自由联盟中,身份提供者与服务提供者之间是通过SAML标志来完成认证消息交互的,而微软的Passport是通过将认证消息包含在重定向消息中传递给服务提供者的。
不过自由联盟协议也存在着以下的缺陷问题:
(1)在自由联盟协议中,在Web应用点的组织上,自由联盟缺乏动态性和广泛性。
因为每个Web应用都管理着相互合作的身份提供者(IdentityProvider)和服务提供者(ServiceProvider)的列表,这个列表必须是手工设定的。
至于如何建立这样的列表,自由联盟只限定于互相有商业合作关系的Web应用。
(2)自由联盟虽然通过两个Web应用间的身份联合,来在Web应用间传递用户信息,但是并没有给出明确的关于使用什么样的策略来进行用户信息的交换的定义,可能是自由联盟为了保持其开放性把这个问题留给软件供应商来解决。
(3)自由联盟协议定义过于局限,它仅把精力集中在如何进行单点登录上,而对于如何把SSO的用户身份验证与授权机制结合起来并不关心。
对于一个应用系统来说,一般采用本地验证机制登录的用户比通过网络其他节点应用验证后介绍过来的用户的可靠性要高,而介绍过来的用户的可靠性由于不同的网络节点应用的安全机制和合作关系的不同,也有着一定的差别。
所以,在单点登录环境下的授权机制应该随着不同身份登录方式的可靠性差别,也做出相应的改变。
在国内,对Web服务的单点登录方面也开展了一些研究,取得了相应的研究成果,并提出了一些解决方案。
目前很多高校也开发了自己的统一身份认证系统。
具体采用的身份认证技术都有各自的特点。
现在几种典型的认证方式有:
挑战/应答机制、Kerberos的认证机制、使用SAML技术等等。
基于挑战/应答的认证机制[]:
每次认证时认证服务器端都给客户端发送一个不同的"挑战"字串,客户端程序收到这个"挑战"字串后,做出相应的"应答"。
当用户通过客户端应用程序登录以后,客户向认证服务器发出请求,要求进行身份认证;认证服务器从数据库中查询该用户是否是存在的,如果查不到,则不是合法用户,不做下一步处理;若查到该用户,认证服务器内部产生一个随机数,作为"提问",发送给客户;用户密码经过加密后和该随机数组成一个字符串,对该字符串用HASH函数生成一个字符串作为"应答";认证服务器将应答串与自己的计算结果比较,如果二者一致,则通过一次认证,该用户是合法的;否则,认证失败,以后该身份令牌不能通过认证。
登录其它各个系统过程中,没有了客户认证请求一步,只需将该身份令牌到认证服务器认证,根据返回的结果(包括用户角色和票据的合法性等)来实现单点登录。
基于Kerberos认证机制:
它是一种被证明为非常安全的双向身份认证技术。
Kerberos的身份认证强调了客户机对服务器的认证;而其它产品,只解决了服务器对客户机的认证。
此机制需要有客户端,服务器端(身份认证服务器和票据服务器),用户通过客户端提交要访问应用系统的名称和用户名,认证服务器查询本地数据库,获得用户的密码,并用此密码作为加密密钥生成一个会话密钥和访问票据服务器的票据,然后把它们再发回给客户端,客户端使用用户输入的密码解密票据和会话密钥,从而获得访问票据和会话密钥后,再访问票据服务器取得访问服务器票据,然后再拿票据访问应用系统。
这个过程中在客户端需要进行加密和解密,所以要求客户端能够有一定的计算能力,需要一个“胖”客户端。
采用SAML技术实现[]:
SAML是基于安全的开放的编码标准规则,并不是一项新技术,进行单一的XML描述,允许不同安全系统产生的信息进行交换。
当用户使用客户端登录时,用户向认证机构提交证书,认证机构对用户的证书进行SAML断言,经过加密等处理发送到服务器,服务器再进行解密操作对消息来实施认证。
通过认证后,访问应用系统时再到用户信息库中查询属性声明(角色),生成SAML令牌。
用户访问应用系统时,应用系统解密令牌,得到用户在系统中的角色。
到各个系统访问时,都需要解密该令牌,得到原始SAML断言,然后根据SAML规范解析该声明,取得用户角色。
但是上面认证方式的实现都是C/S(client/server)模式,客户端要求有一定的计算处理能力,而现在越来越多的应用系统是基于B/S的模式,设计基于B/S模式的单点登录系统更加适合当前发展的需要。
从上面的几种实现方案的分析比较,可以得出目前的单点登录技术还存在着下面一些的缺陷:
1、不具备标准性、开放性;
2、需要单独安装客户端;
3、存在安全性隐患;
考虑到目前单点登录技术存在的局限性,就需要在原有技术的基础上对做一些改进来实现跨域的单点登录。
在依据该标准构造单点登录系统时,应该尽量简化系统的实现流程,同时还必须提高系统的安全性。
1.3论文组织结构
论文共分为五章,各章内容组织如下:
第一章:
绪论。
介绍论文的研究背景,对现有的身份认证技术做了简要介绍,并且提出了本文的组织结构。
第二章:
着重介绍了单点登录技术的相关知识。
对本文涉及到的相关技术介绍与分析,分别介绍了Kerberos原理、LDAP的工作原理以及四种模型、WebServices和SOAP技术、WSDL和UDDI技术。
这些技术的特点构成了系统设计与实现的基本依据。
第三章:
分析了LDAP协议和各种认证方式的特点后,根据当前校园网的发展现状,采用目录管理身份认证中的用户和各个应用系统的数据,使用WebServices技术实现在分布式环境下的认证,通过SSL(安全套接层)来保护信息的安全传输,基于HTTP访问协议实现设计一个类似于Kerberos原理的访问方式的可扩展的单点登录系统,实现统一身份认证。
第四章:
利用LDAP目录服务、WebService服务和身份认证技术,提出了一种基于Cookie的单点登录系统模型并予以实现。
对现有的系统进行分析、修改其认证模块,就可方便的集成到单点登录系统中。
对于以后开发得新的应用系统,只需要按提供的服务接口进行调用,就可接入到本系统中的认证。
因此,此单点系统不但能够整合现有系统,而且可以方便地加入新系统,从而实现了统一身份认证。
第五章:
对本文进行了总结和对未来的研究工作进行了展望。
2单点登录及其相关技术
2.1认证系统框架
一般而言,认证的机制分为两类:
简单认证机制和强认证机制。
简单的认证机制中只有名字和口令被服务系统所接受。
强认证机制一般在认证过程中将运用多种加密手段来保护相互交换的信息。
下面讨论几种身份认证机制,并对它们的安全性进行分析。
2.1.1用户/口令机制
多种认证技术中传统的技术主要采用基于口令的认证机制。
当用户要求访问认证方的服务时,系统要求被认证对象提交帐号和口令,系统接收到口令后对其进行验证,将其与系统中存储的口令进行比较,只有通过系统验证,才可以正常登录或者交易,从而有效保证用户身份的合法性和唯一性。
基于口令的认证机制灵活方便,但存在下面几点不足[]:
(1)为了便于记忆,用户多选择有特征的口令,容易被猜测和破解;
(2)黑客可以从网上或电话线上截获口令,如果是非加密方式传输,用户认证信息可被轻易获取;
(3)认证是单向的,即系统认证方对用户进行认证,而用户不能对系统进行认证,所以攻击者能够伪装成系统骗取用户的口令。
(4)所有用户的口令以文件形式存储在系统中,攻击者可以利用系统的漏洞窃取系统的口令文件。
2.1.2挑战/应答机制
基于挑战/应答(Challenge/Response)的认证机制就是每次认证时,认证服务端发给客户端一个挑战的字符串,客户端收到这个挑战字符串后,基于服务端和自己共享的内容(一般是用户的口令),作出相应的响应。
采用挑战/应答方式进行认证,目的是避免在网络上传输口令字。
著名的Radius就是采用这种认证机制。
2.1.3Kerberos机制
Kerberos是MIT大学提出的为网络通信提供可信第三方服务的面向开放系统的认证协议,主要用于计算机网络的身份鉴别(Authentication),它使网络上的用户可以相互证明自己的身份。
Kerberos被证明为非常安全的双向身份认证技术,强调了客户机对服务器的认证;而其它产品,只解决了服务器对客户机的认证。
Kerberos利用随机产生的票据(Ticket)来获取会话密钥,从而避免了在网络上传递用户的口令,并且认证在集中的认证服务器上进行,为两个主体提供身份认证,并利用会话密钥对通信进行加密。
Kerberos的运行环境由下面三个部分组成[]:
(1)KDC(密钥分配中心):
它主要负责管理所有用户的帐号信息,是整个认证系统的核心。
KDC都提供了两种服务:
认证服务(AS)和会话授权服务(TicketGrantingService,TGS)。
AS的任务是对用户的身份进行初始认证,若认证通过便发放给用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 单点 系统 设计 实现