版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要身份认证是网络安全技术的一个重要方面,在各高校的各种应用系统中身份认证技术都得到了很好的应用。但是,随着高校中各种应用系统使用越来越多,随之而来的问题是:在校园应用系统中有太多的密码需要记忆;住在院外的老师因没有合法的身份而无法浏览和使用院内的一些重要应用系统;教职工和学生的与身份相关的详细信息在各个应用系统中不一致;添加新的应用系统时没有一致的认证和授权框架可以使用等等。建立数字校园系统是解决上述问题也是近年来各高校校园网应用建设的一个新的方向,它涉及数据集成、单点登录、授权管理等多方面的内容,而统一身份认证方案是首先需要解决的问题,其中包括单点登录和授权管理。本文介绍了在进行数字校园信息系统的建设过程中,采用LDAP作用户信息存储,实现了基于LDAP服务的统一认证服务。系统的各个层次相对独立,保证了系统的松散耦合,同时,系统易于集成,新的应用系统可以不带自己的用户系统,依靠统一认证系统实现对用户的认证和授权,降低了开发难度。系统采用JAVA编程,说明了各主要模块的实现方法和步骤。随着统一身份认证系统的逐步完善,将在信息安全体系中发挥重要的作用。关键词:数字校园;身份认证方案;LDAP;单点登录;授权管理AbstractIdentityauthenticationisaveryimportantfactoronnetworksecuritytechnology,whichbeusedondifferentapplicationsystemsbyalotofuniversities.However,withthemoreusingofapplicationsystems,themoreproblembeappeared.Wehavetorememberlotsofpasswords.Someteaeherslivingoutofcampusdonotbrowseandloginsomeusefulwebpagebecausetheyhavenotalegitimateidentity.Thebasicinformationaboutteaehersandstudentshavesagreatdealofvarianceindifferentapplicationsystems.TherehavenotUnifiedAuthenticationandAuthorizedArchitecturewhenyouappendanewapplication.Digitalcampussystemissetuptoresolvetheproblemsaboveanditisalsoanewdirectionthatleadstheapplicationofthecampusnetworkconstructioiinrecentyears.Itinvolvesdataintegration,singlesign-on,authorizationmanagement,etc.Whatisfirsttoberesolvedistheprogramofuniformidentityauthentication,includingsinglesign-onandauthorizationmanagement.ThisarticleintroducedtheDigitalCampusconstruction,wechooseLDAPtosavetheusersinformationabouttheDigitalCampusSystem,atthemeantimerealizetheUnifyIdentityAuthenticationServicebaseonLDAP.Thesystemrelativelyindependent,whichguaranteestheloosecouplingofthesystem.Inadditional,thesystemcanbeintegratedeasily.So,newapplicationsystemneednotrelyonit'sownauthenticationsystembutunifiedauthenticationtocompletetheauthenticationandauthorizationofusers,andreducesthedegreeofdificulofsystemdeveloping.Javalanguagewasusedforprogrammingatthispaper.Thispaperindicatestheeachkeyfanctionimplementationmethod.Withtheunifiedidentityauthenticationsystembeingperfected.Itwillplayanimportantroleamongtheinformationsafesystemofcampusnetwork.KEYWORDS:DigitalCampus;IdentityAuthenticationScheme; LDAP;SingleSign-onPrivilegeManagementTOC\o"1-5"\h\z摘 要 IABSTRACT. II第1章引言 11.1论文的背景 11.1.1数字化校园出现的必然性 1\o"CurrentDocument"1.1.2传统身份认证的局限性 21.1.3统一身份认证的重要性 3\o"CurrentDocument"1.2基于目录服务的统一身份认证 31.2.1目录服务在校园网建设中的作用 31.2.2统一身份认证的现状 41.3研究目标与意义 4第2章系统开发环境及工具介绍. 62.1LDAP简介 6LDAP协议概述 6LDAP的安全模型 6\o"CurrentDocument"2.2STRUTS简介 7\o"CurrentDocument"Tomcat简介 8\o"CurrentDocument"Eclipse和myEclipse简介 8\o"CurrentDocument"2.5SQLSERVER2000简介 9\o"CurrentDocument"第3章总体设计 11\o"CurrentDocument"3.1总体设计 11\o"CurrentDocument"3.2功能设计 113.2.1用户注册 123.2.2账号关联 123.2.3用户认证 123.2.4用户管理 12\o"CurrentDocument"3.3数据库设计 13第4章详细设计 174.1主界面设计 174.2系统首页设计 错误!未定义书签。4.3用户注册 21\o"CurrentDocument"4.4关联注册 24\o"CurrentDocument"4.5用户管理 25\o"CurrentDocument"4.6数据库连接 29\o"CurrentDocument"4.7LDAP服务器连接 30第5章结论 32\o"CurrentDocument"参考文献 33致谢 35第1章引言1.1论文的背景1.1.1数字化校园出现的必然性随着计算机的普及,人们己迈入信息化的社会,互连网技术的大力推广和快速发展,更使得社会信息化的程度不断提高。目前,网络已经成为人们交换信息的主要手段。社会的信息化,必定会带动校园的信息化。在校园网中,用户的数量在迅速的增长,网络的使用由简单的上网,发展到现在的各种应用和服务,如:网上教学、视频会议等。在校园网中,除了有大量的信息资源,同时还存在着各种应用系统。随着校园网络信息的逐渐增加和网络规模的日益扩大,每种应用系统都需要进行身份的识别和认证,并且对不同身份所拥有的操作权限进行授权。通常的做法是在每一个应用系统中建立独立的身份认证模块,使用独立的认证机制在各自的身份认证文件或数据库中认证。这种管理模式和方法虽然可行,但是,这种传统的访问控制,都是单个应用系统,各自独立,各个用户之间数据不能共享地访问控制。这样,使网络信息的查询及网络管理都变得很不方便,还会造成数据的不一致性。除此之外,这种认证方式存在很多的弊端:消耗开发成本和延缓应用开发进度;无法统一认证和授权策略;无法统一分析用户的应用行为;数据冗余度大,管理维护工作麻烦等等。另外,传统的开发模式都是基于关系型数据库的用户认证信息管理模型,读取速度慢,可移植性差。由此可见,我们迫切需要一个统一的、完善的、安全的、易于管理的、有良好的可移植性和扩展性的校园网用户身份管理系统[1]。“数字化校园”的概念就在这样的背景下出台了。“数字化校园”是以校园网为硬件基础,利用先进的信息化手段和工具,实现校园的资源数字化,形成一个数字空间,使得现实校园在时间和空间上延伸开来。校园网络及其应用系统构成整个园的神经系统,完成现实校园的信息传递和服务。在数字化校园里,可以方便的实现学校的教学、科研、管理、服务等活动的全部过程,从而达到提高教学质量、科研水平、管理水平的目的1]。可以说,“数字化校园'是目前现代化学校建设的主要目标,是传统信息化管理系统的进一步深化和延伸。这一理念的提出,意味着以信息化为标志的现代教学管理模式在教育行业已经确立,也意味着更先进的学校管理理念向信息化系统的建设工作提出更高的要求2"1.1.2传统身份认证的局限,性传统的独立身份认证方式存在着很多弊端,给用户的使用带来诸多不便。(1) 从信息的角度来说:信息缺乏有效共享:由于缺乏全局统一的系统规划,应用系统建设容易各自独立,信息难以交换,更难以在更高的层次上进行信息的处理。用户信息无法统一更新:当一个用户的属性发生改变时,他的身份信息只在有限系统中被更改,其他系统无法自动更新,最终造成用户信息无法统一。信息重复情况严重:在整个系统中,同一个用户的信息反复存放,数据冗余量过大,最终会造成所有系统信息存储成本上升,性能下降,影响系统正常运行。(2) 从管理的角度来说:系统信息的管理难度增加:由于信息无法统一进行更新,以及大量的信息严重重复,使得系统信息的管理的难度大大增加。用户身份严重不一致:同一个用户在不同的应用系统中可能存在完全不同的属性,造成同一个用户同时有多个不同身份P4](3) 从用户使用的角度来看:用户操作复杂:用户在使用不同应用系统时,必须反复登录,操作极其麻烦。用户缺乏统一的界面:对于不同的应用系统,用户需要在不同的位置逐个进入访问,缺乏统一的访问资源和应用的接口。(4) 从开发和维护的成本角度来说:增加系统的开发和管理成本:众多应用系统,相互独立,信息重复性大,共享程度低,更新困难,管理不便,都造成了成本的大幅度提高。增加用户信息的维护难度:当用户状况变更时,需要同时修改不同应用系统中的大量条目,增加了维护管理的难度。[成(5) 从安全的角度来说:严重破坏了系统的安全性:同一个用户为进入众多应用系统,必须记忆和采用大量不同的密码和身份信息,为了防止遗忘密码,必定会大量使用重复的密码和身份信息,而这些信息又分散在各个应用系统的数据库中,一旦泄密,系统安全荡然无存。[3]由此可见,传统的身份认证存在着很多弊端。为了解决以上问题,现在各个学校纷纷提供各种解决方案,向数字化校园的目标不断探索。单点登录,统一身份认证就是实现了数字化校园重要的基础框架。1.1.3统一身份认证的重要性在校园网中,存在着各种应用系统,每一个应用系统,我们都可以把它看成是现实的校园在数字空间上的一个映射。多个应用系统组成了整个校园在数字空间上的多个映射,我们可以把它称之为数字校园。在现实校园中,每一个成员都有一个固定的身份,用户的身份决定了用户在校园空间所享有的权限。囹数字校园是现实校园在数字空间的反映,因此对于数字校园中的每一个成员,在数字空间也相应地需要有一个固定的身份,即电子身份。对于数字校园来说,就是要建立一套统一的身份管理系统,学校的每一个成员都有一个与其身份相应的电子身份,用户可以使用自己的电子身份访问数字校园中有权访问的任何系统。电子身份的确认需要身份认证技术。邸]身份认证一般与授权控制是相互联系的。授权控制是指一旦用户的身份通过认证以后,具体负责确定该用户可以访问哪些资源,有什么样的操作权限等。因此,在数字校园中,应该有一个统一的身份认证系统供各应用系统使用,并且有单一的注册中心统一为各部门服务。建立统一身份认证系统后,用户每次要访问网络资源之前,必须先到认证系统认证身份,经确认后才能使用相应的网络资源。这样,可以方便地实现对用户的统一管理。1.2基于目录服务的统一身份认证1.2.1目录服务在校园网建设中的作用目录服务是指网络系统将网络中的各种资源信息集中管理起来,为用户提供一个统一的服务系统。目录服务在某种程度上讲就是代表网络用户及资源在基于对象的数据库上的网络应用服务,每个对象中都存储着与特定用户和网络资源有关的信息。对象可以在目录的树状结构中分层存储,便于用户建立一个与校园组织结构一致的网络结构。网络上的每个用户及资源均与其它用户和资源有关联,目录能够通过鉴定和授权来管理和控制人和计算机、计算机和计算机之间的关系我们可以说,目录是用于保存资源信息的,其中资源信息包括用户和各类软硬件设施、用户的帐号和口令信息等。相对于关系型数据库,应用目录服务管理用户信息的优点在于:目录数据库以树状的层次结构描述数据信息,其数据模型与现实生活中的组织基本一致,在资源信息管理方面有很大的优势,能够较好的解决信息的分布管理和集中使用的问题。概括而言,目录数据库有如下特点:分布性:目录信息能够自然地分布在各地的服务器中,并由各地组织管理,既保证了目录信息总体结构一致,又满足了分级管理的需要;易扩展性:规模可大可小,大到全球,小到只有一台目录服务器的单位,目录系统都能胜任,并且很容易扩展;[17]查询快速灵活:目录国际标准定义的检索操作提供了非常灵活的查询条件,并且还可根据需要扩充,可满足复杂的模糊查询需求,其面向查询优化的算法使得其检索速度比关系数据库快一个数量级;[18]平台无关:作为国际标准,目录系统所使用的通信协议框架是OSI网络七层结构模型,完全与平台无关,保证了目录系统的开放性和各种类型计算机在目录服务中的互操作性,从而保证了用户投资的长期有效性;安全性:目录系统规定了一个精密的存取控制方案,充分保证条目信息的安全,同时又便于管理者对用户的存取权限进行控制。因此目录服务可以用来为其他应用提供完善的身份认证及权限控制服务。1.2.2统一身份认证的现状基于目录服务的上述特点,我们可以采用目录服务技术来实现统一身份认证。现有的一些统一身份认证的系统,就是利用目录服务技术实现部分系统的统一认证的。[11我们使用目录服务器来集中存储用户的个人身份信息和权限信息,在应用服务器遵从统一的目录服务标准的情况下,和目录服务器通信,进行统一认证⑵1.3研究目标与意义随着通信技术、网络技术的不断发展网络已经成为我们学习和生活中重要的基础设施。而校园网作为学校教育信息化建设的基础在教学、科研、管理等方面发挥着越来越重要的作用。同时校园网是一类复杂而很有代表性的网,具有用户数量大,网络应用与服务繁多等特点。在校园网中通常是由各个应用程序和服务使用各自特定的数据库来存储用户信息,并使用各自特定的协议实现用户信息的访问。因此产生了各类用户信息重复和不一致等问题给管理员和用户带来了麻烦同时也存在网络安全隐患。因此迫切需要实现校园网用户的统一身份管理和认证。校园网统一身份认证系统能够实现校园网上各种应用系统和服务的统一用户管理和身份认证,可让用户只使用一套用户账户>就可以登录校园内所有的采用统一身份认证的应用系统和服务。从而实现集中的用户管理、统一的身份认证和统一的访问控制。从一定意义上讲,校园网的建设是衡量一个高校综合实力的重要标志。开发本系统的目的就是充分利用现代信息技术,提高信息利用效率,提高学校教学、办公管理的水平,实现学校信息化管理,为此在数字化校园的建设中使用统一接口、统一信息服务平台、统一身份认证系统的结合的显得尤为重要。建立统一身份认证系统,对用户的身份集中集中管理,保证用户电子身份的惟一性、真实性与权威性,大大提高了校园应用系统的安全性。第2章系统开发环境及工具介绍2.1LDAP简介LDAP协议概述LDAP(LightweightDirectoryAccessProtocol)即轻量级目录访问协议,直接运行于TCP/IP或者其他可靠传输协议之上,是目录服务的前端访问协议LDAP基本工作方式为LDAP客户端向LDAP服务器发送请求,服务器发回应答信息,LDAP协议定义的便是客户机与服务器之间请求、应答的格式和约定,即LDAP客户机访问服务器的前端访问协议。⑸目录服务就是按照树状信息组织模式,实现信息管理和服务接口的一种方法,是一种特殊的逻辑数据库,具有强大的检索功能和完善的安全机制,并有良好的跨平台性。LDAP以目录信息树结构的形式存储信息,目录信息树中的一个节点即为一个条目(Entry),每个条目包含属性(Attribute和口属性值。[6]属性由对象类(objectclass确定,每个对象类包含多个必须或可选属性。条目信息通过LDAP数据交换格式文件(LDIF)以文本的形式进行描述。LDAP的安全模型LDAP中的安全模型是为了保护存储在LDAP中信息的安全性,主要通过身份认证、安全通道和访问控制来实现[刀。身份认证有匿名、基本认证和SASL(SimpleAuthenticationandSecureLayer)认证。匿名认证即不对用户进行认证,该方法仅对完全公开的方式适用;基本认证是通过用户名和密码进行身份识别,又分为简单密码和摘要密码认证;SASL认证即LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证。LDAP中提供了基于SSL/TLS的通讯安全保障,SSL/TLS是基于PKI信息安全的技术,是目前工nternet上广泛采用的安全服务。罔在LDAP中是基于访问控制策略语句来实现访问控制的,这不同于现有的关系型数据库系统和应用系统,它是通过基于访问控制列表ACL,AccessControlLists)来实现,在通过目录认证后,对目录的访问操作权限援CL的定义来分配。[9],[10],[11无论是基于组织模式或角色模式,都摆脱不了这种限制。对于LDAP,用户数据管理和访问标识是一体的,应用不需要关心访问控制的实现。无论是访问控制的数据对象,还是访问控制的主体对象,均是与这些对象在树中的位置和对象本身的数据特征相关。在LDAP中,可以把整个目录、目录的子树、制定条目、特定条目属性集或符合某过滤条件的条目作为控制对象进行授权可以把特定用户、属于特定组或所有目录用户作为授权主体进行授权最后,还可以定义对特定位胃例如IP地址或DNS名称)的访问权。2.2STRUTS简介Struts只是一个MVC框架(Framework),用于快速开发JavaWeb应用。Struts实现的重点在C(Controller)包括ActionServlet/RequestProcessor和我们定制的Action也为V(View提供了一系列定制标签CustomTag)o但Struts几乎没有涉及M(Model)所以Struts可以采用JAVA实现的任何形式的商业逻辑。优点:Struts跟TomcatTurbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰12]。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处同尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。缺点:Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。Struts从产生到现在还不到半年,但已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的2EEMVC实现方式。Struts最早是作为ApacheJakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages>Servle、标签库以及面向对象的技术水准。Struts跟TomcatTurbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。基于以上分析,本系统采用Struts框架。Tomcat简介自从JSP发布之后,推出了各式各样的TSP引擎。ApacheGroup在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet,这样Tomcat就诞生了。Tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的servlet和jsp容器,因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。Tomcat与Apache的组合相当完美。Tomcat服务器的使用也非常简单,将打包好的工程Lvar)拷贝到目录webapps下,然后启动Tomcat服务器即可。Eclpse和MyEclpse简介Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentToos,JDT)。虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment.PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL和Eiffel等编程语言的插件已经可用,或预计会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse的应用程序的突出例子是IBM的WebSphereStudioWorkbench它构成了IBMJava开发工具系列的基础。例如,WebSphereStudioApplicationDeveloper添加了对JSP、servletEJB、XML、Web服务和数据库访问的支持。MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate在结构上,MyEclipse的特征可以被分为7类:J2EE模型,WEB开发工具,EJB开发工具,应用程序服务器的连接器,J2EE项目部署服务,数据库服务,MyEclipse整合帮助。对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。SQLSERVER200简介SQLServer2000是微软公司最新推出的高性能关系数据库管理系统,使微软公司在大型数据库领域的最新版本和旗舰产品,也是微软公司争夺电子商务领域最重要的核心部件市场--网络数据库平台的一大利器。SQLServer2000建立在SQLServer6.5和SQLServer7.0坚固而雄厚的技术基础之上,是公认的运行在WindowsNT平台上的最佳数据库°SQLServer2000已经在性能和可扩展性方面确立了世界领先的地位,是一套完全的数据库和数据库分析解决方案。SQLServer2000的特点如下:与INTERNET的紧密结合,集成了对XML的支持,可扩展、易于使用和安全。可扩展性和可用性,支持联盟数据库服务器口3]企业级数据库,具备有完善而强大的数据处理功能。简单友好的操作方式,具有非常友好的用户界面,易于安装、使用和发布。数据仓库支持,满足当代企业对大规模数据进行有效分析和利用。第3章总体设计3.1总体设计统一身份认证系统的工作流程是:用户登录一在LDAP服务器上进行身份认证一认证成功一使用可以使用的系统服务。主要功能模块图如图1所示。图3-1功能模块图3.2功能设计根据校园网身份统一认证的分析与设计的需求分析,该系统主要需要具备三项功能:3.2.1用户注册(1) 用户登陆系统。(2) 用户向统一身份认证服务发出新用户注册请求。(3) 服务查询用户注册库,如果该用户可以注般有同名ID等违背约束情况发生),那么将该用户的信息保存到用户注册库中。(4) 当保存完毕后,统一身份认证服务响应用户,注册完成。3.2.2账号关联(1) 用户向统一身份认证服务发出帐号关联注册请求,用户提供了应用系统的标识A,同时提供了可以在该应用系统中使用的用户信息可能包含用户名和密码等)。(2) 服务首先向该应用系统A征询,用户信息是否合法。如果合法则响应服务。(3) 如果收到合法响应,那么服务就将这个帐号关联注册信息保存到用户注册库中,以后该用户登录统一身份认证服务之后,就能够使用相应的应用系统(4) 注册库完成保存操作后,统一身份认证服务响应用户,注册完成。3.2.3用户认证(1) 用户使用在统一认证服务注册的用户名和密时数字签名等)登陆统一认服务;(2) 统一认证服务核查用户身份,创建了一个全局Oginsession,同时将与会话关联的访问认证令牌返回给用户;(3) 用户使用这个访问认证令牌访问某个支持统一身份认证服务的应用系;(4) 该应用系统将访问认证令牌传入统一身份认证服务,认证访问认证令牌有效性;(5) 统一身份认证服务确认认证令牌的有效性;(6) 应用系统接收访问,并返回访问结果,用户可以凭借该令牌访问任何应系统。3.2.4用户管理(1)为用户分配该用户可以使用服务。删除用户及其可以使用的服务。管理员和非管理员权限分配3.3数据库设计为了使各种类型的数据库系统能够充分发挥它们的优越性,必须对数据库管理系统的使用提出一些明确的要求。对数据库设计的具体要求如下:尽量减少数据的重复,使数据的冗余度达到最小。提高数据的利用率,实现多用户共享数据资源。保持数据的完整性。注意同一数据描述方法的一致性,使数据操作不致发生混乱。对于某些需要保密的数据,必须增设保密措施。数据的查询效率高,根据需要数据应能被及时维护。系统中主要的表有三张表,分别是:用户信息表、系统服务)信息表和用户系统(服务)表。用户信息表主要存放的是可以使用统一身份认证服务器的用户信息;系统(服务)信息表主要存放的是该系统中所有需要登录才能使用的子系统或服务;用户系统(服务)表主要存放的是每一个用户登录统一身份认证服务器后可以使用的子系统或服务。数据表的结构设计如下:user_info表主要用来存放LDAP服务器上注册的所有用户信息及关联注册的用户信息,其中字段序号为主键,自动增长的,每添加一条信息就会自动增加该字段主要用来做数据信息更新和删除用。字段用户帐号、用户姓名、用户密码、性别、年龄、所在班级及描述为注册用户的基本信息;字段注册时间为该用户注册时的时间;字段更新时间为更新用户信息时的时间;字段管理员标志主要是用来区分该用户是管理员还是普通用户,管理员标志为1,普通用户标志为0,默认为0。其中用户帐号不能重复表3-2userinfo表的结构编号 字段名称 数据类型 长度 允许空说明1 id int4N 序号、主键
2userIDchar20N用户账号3userNamechar20N用户姓名4passWordchar20N用户密码5sexchar2N性别6ageint4N年龄7classchar20Y所在班级8descrchar100Y信息描述9createTimedatetime8Y注册时间10updateTimedatetime8Y更新时间11adminFlagtinyint1N管理员标志system_info表主要用来存放统一认证服务器上所有的子系统(服务),其中字段序号为主键,自动增长的,每添加一条信息就会自动增加该字段主要用来做数据信息更新和删除用。字段系统编号、系统名称和系统描述为子系统(服务)的基本信息,其中系统编号不能重复。表3-3system_info表的结构编号字段名称数据类型长度允许空说明1idint4N序号、主键2systemIDchar20N系统编号3systemNamechar50N系统名称4systemDescchar100N系统描述user_system表主要用来存放统一认证服务器上所有用户可以使用的子系统(服务)信息,其中字段序号为主键,自动增长的,每添加一条信息就会自动增加1,该字段主要用来做数据信息更新和删除用。字段用户帐号关联用户信息表中的用户帐号,字段系统编号关联系统服务)信息表中的系统编号。表3-4user_system表的结构
编号字段名称数据类型长度允许空说明1idint4N序号、主键2userIDchar20N用户账号3systemIDchar20N系统编号user_info表主要是用来存放该子系统上的用户信息,其中字段序号为主键,自动增长的,每添加一条信息就会自动增加该字段主要用来做数据信息更新和删除用。字段用户帐号、用户姓名、用户密码为用户的基本信息,同时为用户关联注册时的关联注册信息;字段注册时间为该用户注册时的时间;表3-5user_info表的结构编号字段名称数据类型长度允许空说明1idint4N序号、主键2userIDchar20N用户账号3userNamechar20N用户姓名4passWordchar20N用户密码5createTimedatetime8Y注册时间user_info表主要是用来存放该子系统上的用户信息,其中字段序号为主键,自动增长的,每添加一条信息就会自动增加该字段主要用来做数据信息更新和删除用。字段用户帐号、用户姓名、用户密码为用户的基本信息,同时为用户关联注册时的关联注册信息;字段注册时间为该用户注册时的时间;表3-6user_info表的结构编号字段名称数据类型长度允许空说明1idint4N序号、主键2userIDchar20N用户账号3userNamechar20N用户姓名passWord char 20 N 用户密码createTime datetime 8 Y 注册时间第4章详细设计本系统共分为四个主要的功能模块。用户注册模块:统一认证服务器上没有该用户的用户可以进行信息注册,同时,服务器会检测用户账号是否唯一,唯一则进行注册,否则不注册。账号关联模块:用户登陆到自己可以使用系统服务)中后,可以向统一认证服务器发送账号关联注册请求,统一认证服务器对用户提供的账号信息进行检查,检查成功则进行关联注册,检查失败则不注册。用户认证模块:用户通过已有的统一认证服务器账号和密码进行用户认证,认证成功,则可以使用系统提供的服务。用户管理模块:管理员可以对用户信息管理员权限分配、用户账号删除、用户可使用系统:服务)进行分配等功能。4.1主界面设计主界面设计主要是以简单友好、快捷方便为主要设计理念,因此系统的主界面设计主要是用户登陆界面及模拟系统服务)的登录链接。[9在该登陆界面输入正确的用户名和密码即可登陆到统一认证系统。主界面如图-1所示。用户登录时,如果用户帐号和用户密码都不输入,然后点击登陆按钮进行用户信息验证,则显示错误信息用户帐号和用户密码不能为空。if(loginForm.getUserID().trim().length()<=0&&loginForm.getPassWord().trim().length()<=0){loginForm.setErrorInfo(用户账号和用户密码不能为空!”);用户登录时,如果用户帐号不输入,然后点击登陆按钮进行用户信息验证,则显示错误信息[用户账号不能为空|。if(loginForm.getUserID().trim().length()<=0){loginForm.setErrorInfo(用户账号不能为空!");用户登录时,如果用户密码不输入,然后点击登陆按钮进行用户信息验证,则显示错误信息[用户密码不能为空|。if(loginForm.getPassWord().trim().length()<=0){loginForm.setErrorInfo(用户密码不能为空!");用户登录时,如果输入错误的用户帐号和用户密码,然后点击登陆按钮进行用户信息验证,则显示错误信息[用户帐号和用户密码不正确],同时把输入的用户帐号和用户密码清空。If(alist==null||alist.isEmpty()){loginForm.setErrorInfo(〃用户账号和用户密码不正确!〃);loginForm.setUserID(〃〃);loginForm.setPassWord(〃〃);用户登录时,如果输入正确的用户帐号和用户密码,然后点击登陆按钮进行用户信息验证,用户信息验证成功,系统将取得的用户基本信息保存3SESSION中去,然后取得系统当前时间,显示系统首页,同时将保存的用户帐号和系统当前时间显示在系统首页上。图4-3用户帐号和用户密码验证成功,显示系统首页用户登陆成功后,系统会将用户信息保存至Session中去,同时,系统会读取该用户的操作权限,根据用户的操作权限,用户只能使用与自己权限相同的系统功能模块,如果用户权限不等于系统功能所需要的权限,则对此用户屏蔽相应功能,这样做提升了系统的安全性以及对高级和低级用户使用系统时的区分。而且设置了登陆的的最大有效时间:publicclassCommonVlues{//Login的最大有效时间(分钟)publicstaticfinalintMAXTIME=30;主要程序实现:系统通过判断用户输入的用户帐号和密码是否符合要求,如果符合要求,那么系统会以输入的用户用户帐号和用户密码为检索条件,在数据库中查找满足条件的用户信息,如果查找成功,那么系统将会在LDAP服务器上查找该用户信息,如果该用户的登陆信息存在,那么修改用户登录时间为当前系统时间;如果该用户信息不存在,那么系统会在LDAP服务器上注册该用户的登陆信息和登陆时间。同时显示系统首页。下面是在数据库中检查用户帐号和用户密码为例的处理流程:publicArrayList<UserBean>getLoginInfo(UserBeanbean)throwsException{DBConnectiondbConn=newDBConnection();Connectionconn=dbConn.getConnection();Statementsta=conn.createStatement();StringstrSQL="select*fromuser_infowhereuserID='"+bean.getUserID().trim()+"'ANDpassWrd='"+bean.getPassWord().trim()+""'•+;ResultSetrs=sta.executeQuery(strSQL);ArrayList<UserBean>alist=newArrayList<UserBean>();//用户账号和用户密码检查成功while(rs.next()){UserBeanloginBean=newUserBean();loginBean.setUserID(rs.getString("userID"));loginBean.setUserID(rs.getString("userName"));loginBean.setUserID(rs.getString("passWord"));loginBean.setAdminFlag(Integer.parseInt(rs.getString("adminFlag")));alist.add(loginBean);bean.setUserName(rs.getString("userName"));//检查LDAP服务器上该用户信息是否存在booleanuserCheck=LDAP.checkUser(bean.getUserID().trim(),bean.getPassWord().trim());〃如果该用户信息已存在if(userCheck){//修改用户登陆时间LDAP.modifyUser(bean.getUserID().trim());}else{//添加用户信息LDAP.addUser(bean);}}//关闭数据库连接dbConn.closeConnection(conn);returnalist;}4.2权限管理权限管理的主要原则是区分用户级别,因此在用户成功登陆后就可以直接看到用户可以使用的操作,如果是管理员登陆,那么管理员可以进行用户管理及权可使用服务分配等操作。如果是普通用户登陆,那么普通用户只能使用该用户可以使用的系统(服务)。系统根据用户的操作权限(管理员和普通用户)来决定该用户可以使用的功能模块.<logic:equalname="loginForm"property="adminFlag"value='T'>S个是用来判断管理员的。<logic:equalname="loginForm"property="adminFlag"value="0">S个是用来判断普通用户的。4.3用户注册如果没有注册的用户想使用统一认证服务器,那么除了做关联注册,还有就是进行用户信息注册,输入必须填的信息后点击登陆]按钮进行信息提交,统一认证服务器会根据用户提交的注册信息进行检查,如果该用户账号已经存在,那么本次注册失败,同时系统会显示注册失败信息该用户账号已存在,请重新输入!],如果该用户账号不存在,那么统一认证服务器会将该用户信息进行注册,同时显示注册成功信息[恭喜您,注册成功。系统首先判断用户提交的输入信息是否合法,也就是数据类型是否正确,如果输入的用户信息合法,那么系统会将用户的输入信息添加到数据库中(用户信息表user_info)。如果数据库操作成功,那么系统会将该用户信息添加到LDAP服务器上,添加的数据信息有:用户账号、用户密码、用户姓名以及注册时间。如果数据库操作失败,那么直接跳转到错误画面;如果输入的用户信息不合法,那么直接返回到用户注册画面。下面是系统检查用户提交的输入信息是否合法操作:if(registerForm.getFlag()!=null){//用户账号检查if(registerForm.getUserID().trim().equals("")){registerForm.setErrorInfo(用户账号不能为空');return(map.findForward("fal"));}//用户姓名检查if(registerForm.getUserName().trim().equals("")){registerForm.setErrorInfo(用户姓名不能为空');return(map.findForward("fal"));}//用户密码检查if(registerForm.getPassWord().trim().equals("")){registerForm.setErrorInfo(用户密码不能为空,);return(map.findForward("fal"));}//确认密码检查if(registerForm.getRePassWord().trim().equals("")){registerForm.setErrorInfo确认密码不能为空');return(map.findForward("fal"));}//用户密码和确认密码是否一致检查if(!registerForm.getPassWord().trim().equals(registerForm.getRePassWord())){registerForm.setErrorInfo确认密码不正确');return(map.findForward("fal"));}//班级检查if(registerForm.getStrClass().trim().equals("")){registerForm.setErrorInfo班级不能为空");return(map.findForward("fal"));}//信息描述检查if(registerForm.getStrDesc().trim().length()>100){registerForm.setErrorInfo信息描述不能超过100个字符');return(map.findForward("fal"));}图4-4用户注册图注册用户信息提交后,系统会去检查提交的数据信息,如果数据信息检查通过,那么该用户信息会被注册到数据库中,同时也会被注册至LDAP服务器上,下图为注册在LDAP服务器上的用户信息,主要有:用户帐号、用户密码、用户名和用户注册时间(登录时间)。图4-5LDAP服务器上的用户信息4.4关联注册模拟系统(服务)的注册用户通过登陆该模拟系统:服务),登陆成功后,如果用户想使用统一认证服务,那么可以进行关联注册,点击关联注册]按钮就可以向统一认证服务器发送关联注册请求,同时发送用户账号、用户姓名、用户密码,统-认证服务器接收到该用户发送的关联注册请求后,会发送用户信息去模拟系统服务)确认该用户信息,如果确认成功,那么就将该用户信息注册到统一认证服务器上,如果确认失败,那么就不去做注册。
| 001系统若| 001系统若E-VxndowicIntvznulExplozIS画囱1@http.//8080/LDAP/syst«m001Locin.doHP*]|x||Liv.Search ||Q|♦|立件(Z)端悟(X)查看&)收8®夹(A) XAa) 助QI)34^|顷looi系tgtr页C•&J *.心•页面(£)▼◎工具(Q)一a欢迎使用001系统test002您好I欢迎您使用001系统美联注珊退出.系统图4-6关联注册图4.5用户管理这个模块负责完成用户管理功能,包括用户的查询、添加、删除、锁定、指定用户所属角色以及角色的查询、添加、删除。管理员用户登陆成功后,可以对统一认证服务器上的所有用户进行信息管理和可使用服务分配。
如果管理员要删除该用户是可以点击删除]按钮就可以从统一身份服务器上删除该用户及相应的可使用服务,同时显示信息[用户删除成功];用户删除失败,则显示信息[用户删除失败]。,,,,息;如果用户信息不存在,那么现实信息用户信息不存布。如果修改用户信息,那么点击该用户信息后的超链接详细信息],然后设置要修改的用户信息及该用户可以使用的子系统或服务。如果修改该用户为系统管理员,那么选择管理员前面的复选框,然后点击更新]按钮,系统会将用户信息表中该用户信息中的管理员标志修改为如果修改该用户为普通用户,那么不选择管理员前面的复选框,然后点击更新]按钮,系统会将用户信息表中该用户信息中的管理员标志修改为。如果分配用户可使用的子系统或服务,如果分配用户可以使用该子系统或服务时,那么选中该子系统或服务前面的复选框;如果分配用户不可以使用该子系统或服务时,那么不选中该子系统或服务前面的复选框;然后点![更新]按钮,那么系统会将原来用户系统:服务)表和该用户关联的数据信息全部删除,然后再添加改用户可以使用的子系统或服务。如果添加成功,那么显示信息言息修改成功];如果添加失败,那么直接跳转到错误画面,显示错误信'您已出错啦!]。如果删除用户,那么点击用户信息画面的册。除]按钮删除该用户,同时先删除用户系统(服务)表中和该用户关联的用户信息,然后再从LDAP服务器上删除该用户的注册信息,再从用户信息表中删除该用户信息,如果用户信息删除成功,那么现实信息[用户删除成功],如果用户信息删除失败,那么直接跳转到错误画面,显示错误信息[您已出错啦!]。系统为了模拟统一身份认证系统的实用性,特别模拟了两个子系统或服务(system_001和system_002*用户在没有登陆统一身份认证服务器的情况下去使用模拟的子系统或服务时,需要先登录,然后才能使用该子系统或服务。如果用户在登陆了统一认证服务器的情况下去使用模拟的子系统或服务时,系统先用session中的用户信息去LDAP服务器上做用户信息验证,如果验证成功,再检查该用户的登录时间是否在允许的时间范围内,如果在允许的范围内,那么用户可以直接使用该子系统或服务;如果不在允许的范围内,那么直接跳转的统一身份认证系统的登录画面,需再次登陆或才可使用。主要的程序实现如下:publicActionForwardexecute(ActionMappingmap,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){//获取系统登陆用formHttpSessionsession=request.getSession();LoginFormloginForm=(LoginForm)session.getAttribute("loginForm");//取得系统IDStringsystemID=request.getParameter("systemID");try{booleanuserCheck=false;booleantimeCheck=false;if(loginForm.getUserID()!=null){//LDAP服务器上检查该用户是否已经登陆userCheck=LDAP.checkUser(loginForm.getUserID().trim(),loginForm.getPassWord().trim());//LDAP服务器上该用户已经登陆if(userCheck){//该用户的上次登录是否过期if(LDAP.getLoginTime(loginForm.getUserID().trim())<=CommonValues.MAXTIME){timeCheck=true;}}}//该用户已登录,且上次登录没有过期if(userCheck&&timeCheck){//系统ID检查if("system001”.equals(systemID)){//ID==system001,跳转到系统001的主页面...return(map.findForward("system001”));}else{//ID==system002,跳转到系统002的主页面...return(map.findForward("system002”));}//该用户没有登录,或者上次登录已过期}else{if("system001”.equals(systemID)){//ID==system001,跳转到系统001的登陆画面return(map.findForward("system001Login"));}else{//ID==system002,跳转到系统002的登陆画面return(map.findForward("system002Login"));}}}catch(Exceptione1){//TODOAuto-generatedcatchblock//跳转到出错画面return(map.findForward("error"));}}4.6数据库连接本系统的数据库连接利用JDBC数据源进行连接,在其中进行数据存储,其中连接数据库的代码如下:publicclassDBConnection{privatefinalStringdriverName="com.microsoft.jdbc.sqlserver.SQLServerDriver”;privatefinalStringdbURL="jdbc:microsoft:sqlserver://:1433;DatabaseName=ldap”;privatefinalStringuserName="sa";privatefinalStringuserPwd="admin";//连接数据库publicConnectiongetConnection()throwsException{Class.forName(driverName);//返回数据库连接returnDriverManager.getConnection(dbURL,userName,userPwd);}//关闭数据库连接publicvoidcloseConnection(Connectionconn){if(conn!=null){try{//关闭数据库连接conn.close();}catch(Exceptione){}}}4.7LDAP服务器连接LDAP服务器本身具有读密集型操作的特点,这使得读取速度比关系型数据库快一个数量级,减少资源的消耗,提高系统的影响速度。并且更适合于为各种应用服务器平台做分布式处理。staticDirContextctx=null;privatefinalstaticStringROOT="o=localhost,c=com”;privatefinalstaticStringGROUP="ou=User,o=localhost,c=com
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度房地产销售代理合同:别墅销售代理
- 机器拉带市场发展现状调查及供需格局分析预测报告
- 2024年度常州消防工程电气设备安装合同
- 榻榻米专用座椅市场需求与消费特点分析
- 膝上桌市场发展预测和趋势分析
- 2024年度企业信息安全监测与预警合同
- 2024年度商业保理合同保理融资额度与利率
- 赛车市场发展预测和趋势分析
- 科学用棱镜市场需求与消费特点分析
- 2024年度国际餐饮文化交流活动策划合同
- 唱游子吟小儿垂钓课件小学音乐苏少01课标版三年级上册课件1
- 北京科技大学第二批非教学科研岗位招考聘用(必考题)模拟卷和答案
- 社团面试评分表
- 智慧园区 物流基地集装箱货堆场智能管理平台建设方案
- 血清转氨酶异常病因分析
- PDCA提高护理管道标识规范率
- 世界未解之谜英文版
- 中小跨径公路桥梁设计课件
- 放射培训考试习题及答案
- 译林牛津版9A-Unit8-Detective-Stories-Reading-2公开课优质课件
- 邯郸市政府采购办事指南
评论
0/150
提交评论