资源描述
毕业设计(论文) 第IV页
毕业设计(论文)
设计(论文)题目: 统一用户管理系统及在门户中的应用
学生姓名 金军航
学生学号
专业班级
学院名称
指导老师
院长 (系主任)
5月30日
统一用户管理系统及在门户中的应用
摘 要
随着企业信息化程度越来越高,企业内的应用系统也越来越多。但是这些企业系统的孤立也引发了大量的问题:信息共享困难,数据一致性,安全漏洞,昂贵的人工维护成本等等。统一用户管理的目标就是要改变以往的松散、孤立的管理方式,创建统一并可重用的用户管理体系,并且逐步使之成为企业信息化中重要的基础性构件。同时现在许多企业都将已开始利用门户技术整合应用系统,而统一用户管理系统可以做为门户的后台管理。
本文首先分析了目前企业信息化建设现状,提出统一用户管理存在的意义。接下来分析了统一用户管理系统的系统需求,模块设计和系统架构。统一用户管理系统提供了一个通用的用户-组织-岗位模型,并为这套模型进行了科学编码,来为信息共享,系统交互做好准备。同时,统一用户管理系统也是门户平台的后台支持:基于LDAP目录树,管理门户平台用户信息和授权信息;对门户的单点登陆实现提供支持;管理整合到门户平台的应用系统。本文将重点介绍统一用户管理系统如何管理门户目录树和对单点登陆提供支持的设计。统一用户管理系统还有一个作用就是加强了企业系统管理,在众多应用系统之间架起了一座桥梁,解决了目前系统孤立所引起的许多问题。
关键词: 门户,目录树,单点登陆,企业信息化,系统孤立
Unified user management system and its application in portal
Abstract
As the information level of enterprise is higher, the application of enterprise is getting more and more. But these isolated enterprise systems have also led to a lot of problems: difficulties in sharing information, data consistency, security loopholes, Artificial expensive maintenance costs.Unified user management goal is to change the loose, isolated management, create reusable user management system, and gradually bring it into enterprise basic component. Now while many companies have begun to use portal technology to integrate applications, and unified user management system can serve as a gateway to the management background.
First, this paper analyzes the current information construction status and significance of unified user management exists. Next analysis of a unified user management system of demand, modular design and system architecture. Unified user management system to provide a common user-organization - post model and this model of scientific coding preparing for information sharing, interactive system. Meanwhile, unified user management system is used to manager portal platform : Based on LDAP directory tree, manager portal platform management information and user authorization information; support portal’s SSO; Management Integration Platform gateway to the application. This paper focuses on unified user management system for the management of portal directory tree and single-point landing support design. Unified user management system is also an enhanced role in the enterprise systems management, In many applications served by a bridge to solve the problems caused isolation systems.
Key words: Portal, Directory tree, SSO, Enterprise information, System isolation
目 录
1绪论 1
1.1课题背景 1
1.2课题的目标和意义 2
1.3 本文结构 2
2相关技术简介 3
2.1 J2EE体系结构 3
2.2 Spring框架概述 5
2.3 Hibernate框架概述 7
2.4 Struts框架概述 8
2.5 WebService介绍 8
3系统设计 10
3.1系统需求 10
3.2模块设计 10
3.3系统架构 13
4目录树在门户中的设计 15
4.1 LDAP协议 15
4.1.1 LDAP协议机制 15
4.1.2 LDAP模型 15
4.1.3 LDAP数据库 17
4.2门户和目录树的关系 17
4.3目录结构设计 18
4.4目录树持久化设计 21
5 对单点登陆的支持与设计 23
5.1门户的单点登陆 23
5.1.1单点登陆技术 23
5.1.2单点登陆的实现 24
5.1.3统一用户名的提出 25
5.1.4统一用户名生成规则 25
5.2异构系统间的信息同步 26
5.2.1同步方案 26
5.2.2同步状态分析 26
5.2.3同步设计 29
5.2.4不同方式连接的信息同步 30
6系统孤立问题的解决办法 32
6.1统一信息编码 32
6.2统一流程处理 33
6.3用户信息变更处理 33
6.4小结 34
7 结论 35
致 谢 36
参考文献 37
毕业设计(论文) 第 37 页
1 绪论
1.1 课题背景
目前,一般的企业都拥有众多的应用系统,包括CRM,ERP,OA,HR,SCM,PLM等,同时还有各种IT资源服务,如数据库,目录树,邮件系统,网络接入系统那个等等。各个应用系统都有自己特定的一个用户群体,并且拥有各自的认证信息以及授权信息。各个系统的用户信息的存储和管理都没有一定的标准,并且拥有各自的组织岗位实现方式,这样造成各个系统很难做到互相交互。
同时,应用系统间用户信息相互孤立引发了大量问题:
Ø 各个系统都有自己的用户群,但没有一个系统能提供企业的统一用户视图
Ø 各个系统之间信息共享困难,同一用户在不同应用系统间的信息之间也可能出现冲突
Ø 身份信息需要由人工维护,人员信息的新建、调整或调离都需要人工调整各个应用系统的用户数据;
Ø 安全漏洞,如当人员离开企业时,访问权限不能被及时取消,人员调动时权限叠加,操作流程中的人为错误也会留下安全漏洞;
Ø 运行过程中,高昂的维护成本也不容忽视,耗费了大量的人工去操作用户信息变更,并且每次变更用户都往往需要等待很长时间。
统一用户管理新近被作为独立的问题提出,其实用户和身份管理一直是人们信息化实践的一部分,但目前的意义在于要改变以往的松散、孤立的管理方式,创建统一并可重用的用户管理体系,并且逐步使之成为企业信息化中重要的基础性构件.
最近门户思想逐渐被企业管理者重视,门户通过整合众多的企业应用系统,实现单点登陆,提供单一办公界面,极大的提高了员工的办公效率。统一用户管理系统可以管理门户的目录树;为单点登陆实现提供支持;管理接入到门户中的应用系统,提高应用系统整体安全性。
1.2 课题的目标和意义
统一用户管理系统就是要致力于解决目前众多应用系统孤立而引起的问题,创建一个统一并可重用的用户管理体系,并且逐步使之成为企业信息化中重要的基础性构件.同时现在许多企业都将已开始利用门户技术整合应用系统,而统一用户管理系统可以作为门户的后台管理。统一用户管理系统将极大地优化企业应用系统的管理,促进企业信息化发展。
1.3 本文结构
第一章介绍统一用户管理的背景以及它带给企业信息化的作用和意义;第二章介绍了统一用户管理系统所采用的一些技术;第三章介绍统一用户管理系统的主要功能和整体架构; 第四,五章介绍了统一用户管理系统在门户中的运用,重点介绍了如何管理门户的目录树和为门户提供单点登陆支持的设计。第六章介绍了系统孤立问题的解决办法。第七章对本文做了最后的小结。
2 相关技术简介
2.1 J2EE体系结构
目前,Java2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition, J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform StandardEdition,J2SE)、适用于创建服务器应用程序和服务的Java2平台企业版(Java 2 Platform Enterprise Edition, J2EE)。
J2EE是一种利用Java2 平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系架构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API. CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对Enterprise JavaBeans (EJB), Java ServletAPI, Java ServerPages (JSP)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系架构。
J2EE 使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,SUN设计J2EE的初衷正是为了解决两层模式(Client/Server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想。而且经常基于某种专有的协议-一通常是某种数据库协议,它使重用业务逻辑和界面逻辑非常困难。现 在 J2 EE的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的服务提供一个独立的层,以下是J2EE典型的四层结构:
(1)运行在客户端机器上的客户层组件。
(2)运行在J2EE服务器上的Web层组件。
(3)运行在J2EE服务器上的业务逻辑层组件。
(4)运行在Enterprise Information System (EIS)服务器上的企业信息系统层软件。
J2EE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的常用技术规范进行简单的描述。
(1) J DBC (Java Database Connectivity)
JDBC A PI 通过定义几个数据库访问的类和接口,为访问不同的数据库提供了一种统一的途径,用以建立数据库连接生成语句。象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDBC对数据库的访问也具有平台无关性。
(2) JNDI (Java Name and Directory Interface)
JNDI API被用于执行名字和目录服务。其作用主要有两个方面。第一,它提供了对LDAP 与Netscape Directory Services之类目录服务资源进行标准操作的方法。第二,PEE应用程序利用JNDI查找生成EJB等所用的接口和JDBC连接。
(3) JTA(Java Transaction API)
JTA提供事务管理的基础结构。编程人员用这个接口打开事务,实现事务和在发生错误时撤销事务。如果客户端事务位于同一服务器中部署的多个Bean上或是分布在多个服务器中,则服务器厂家应保证正确实现事务控制。跨多个服务器的事务要求通过HOP在服务器之间传递事务情景。
(4) EJB(Enterprise JavaBean)
J2EE技术之所以赢得广泛重视的原因之一就是EJB。它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。EJB规范的目的就是表示业务对象而不让业务逻辑编程人员提供系统级服务。EJB技术不适合作为报表系统来分析处理过程和把文件提供到Web上。但如果需要访问任何复杂程度的业务逻辑,则可以将业务逻辑写成EJB组件,从而大大提高开发人员的生产率。应用程序的部署、性能可靠性、复用性等等。这里值得注意的是,EJB并不是实现J2EE的唯一途径。正是由于J2EE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。
(5) JSP (Java Server Pages)
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
(6) Java Servlet
Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而Servlet全部由Java写成并且生成HTML。
(7) XML (Extensible Markup Language)
XML 是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据,XML的发展和Java是相互独立的,但是,它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,就可以得到一个完美的具有平台独立性的解决方案。
2.2 Spring框架概述
Spring 框架是一个分层架构,由7个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 2.1 所示。
图 2.1 Spring 框架的7个模块
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
核心容器:
核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring 上下文:
Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring AOP:
通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO:
JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
Spring ORM:
Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
Spring Web模块:
Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
Spring MVC框架:
MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。
2.3 Hibernate框架概述
在传统的数据库编程中,开发人员要面对大量重复性代码的编写,以实现对不同数据表中数据的获取,并将获取到的记录数据封装成对象,在处理完成之后,如果需要进行对象状态的存取,需要将对象中的数据拆卸成数据库记录中的对应字段的值,然后向数据库中进行存储。
这种工作方式显然没有实现真正意义上数据存取阶段的面向对象.虽然数据存取过程中的工作步骤是基本固定的,但是由于操作的数据表中字段列数据的不同,使得开发人员必须要不厌其烦地书写相应的实体类对应的封装处理过程。
而在Hibernate中,类似这种重复性高、工作量大、但是又必须保证高质量的体力活,全部由Hibernate接管过去。
Hibernate本质上是一个面向Java开发环境的对象/关系数据库映射工具。在Hibernate之前,开发人员要将面向对象的软件和关系数据库结合在一起,往往会很麻烦。而借助于Hibernate对象/关系数据库映射(Object/Relational Mapping( ORM)) 技术,可以非常轻松地将以面向对象思想封装的对象的各个状态映射到基于SQL的关系模型数据结构中去。
Hibernate提供的是一种轻量级的持久方案。从实现的原理来看,Hibernate是在JDBC上面的一层轻型的封装。与不同的数据库具体的连接和优化Hibernate并没有参与在其中。它只是对JDBC做了一个非常优雅的封装,同时提供了Java对象和数据库模型的一一对应的映射关系,这样就避免过多复杂的功能,减轻程序员的负担。同时,它也是一个开源的代码,提供开放的API,用户可以自行扩充其功能。Hibernate在大多数主流J2EE应用服务器的受管理环境中都可以良好运作,也可以作为独立应用程序运行。
另外,Hibernate不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库,使用数据持久层就是要在对象一关系数据库之间提供一个成功的企业级别的映射解决方案,尽最大可能弥补这两种范例之间的差异。Hibernate不仅可以大大减少操作数据库的工作量,同时还可以使Java程序员能够随心所欲的使用对象编程思维来操纵数据库。
2.4 Struts框架概述
Struts框架是Apache的开源项目,是一种用JSP和Servlet来开发Web应用程序的方法。Struts框架采用了MVC (Model-View-Controller)的设计思想,这种设计把应用逻辑、处理过程和显示逻辑分成不同的组件实现,这些组件之间可以进行交互和重用。
Struts是MVC的一种实现,其体系结构实现了MVC设计模式的概念。Model层实现系统中的业务逻辑。对于大型应用,业务逻辑通常可用Java Bean或EJB来实现。
View 层用于与用户的交互。它既没有业务逻辑,也没有模型信息。通常用标JSP和Struts自定义标签来实现。此外,通常把Struts框架中的ActionFormBean也划分到视图模块中。ActionForm Bean对象是一种JavaBean,可以通过定义属性描述客户端表单数据。Struts框架利用ActionForm Bean来进行视图和控制器之间表单数据的传递。
Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图用于显示,同时它可以解释用户的输入并将它们映射为模型层可执行的操作。控制器由ActionServlet类和Action类来实现。ActionServlet类是Struts框架中的核心组件。ActionServlet继承了javax.servlet.http.HtpServlet类,它在MVC模型中扮演中央控制器的角色。ActionServlet主要负责接收HTTP请求信息,根据配置文件struts-config.xml的配置信息,把请求转发给适当的Action对象。
所有的Action处理器对象都是Action类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。
对于小型简单的应用,Action类本身完成一些实际的业务逻辑。对于大型应用,Action充当用户请求和业务逻辑处理之间的适配器(Adaptor),其功能就是将请求与业务逻辑分开,Action根据用户请求调用相关的业务逻辑组件。
2.5 WebService介绍
目前对 Web Service的概念并没有一个严格的定义。一般认为,它是一种新型的Web应用程序,具有自包含、自描述以及模块化的特点,可以通过Web发布、查找和调用。在Web Service里,所有功能都是服务,这些服务发布一个API供网络中的其他服务使用,并且封装了实现细节。
图 2.2为 Web Service面向服务的体系结构(SOA).Web Service的体系结构由三部分组成:服务提供者、服务中介者(Web服务注册中心)和服务请求者,它们之间的交互涉及发布、查找和绑定三种基本操作。这些角色和操作一起作用于Web服务构件:Web服务软件模块及其描述。Web Service中的服务主要是指利用Internet协议提供给击求省按一定规则使用的一个软件模块,它部署在由服务提供者提供的可以通过网络访问的平台上。服务描述包含服务的接口和实现的细节,主要包括服务的数据类型、操作、绑定信息和网络位置,还可能包括可以方便服务请求者发现和利用的分类及其他元数据。服务描述可以被发布给服务请求者或服务注册中心。服务提供者定义Web Service的服务描述并把它发布到服务注册中心。服务请求者使用查找操作来从本地或服务代理者检索服务描述,然后使用服务描述与服务提供者进行绑定并调用Web服务实现或同它交互。如图2.2也表示了这些操作、提供这些操作的组件及它们之间的交互。
图2.2 WebService体系架构
3 系统设计
3.1 系统需求
统一用户管理系统将提供一个通用的用户,组织,岗位模型,管理门户平台的目录树;统一用户管理系统将管理集成到门户中的这些应用系统,控制用户对这些系统的访问权限,并对门户的单点登陆提供支持;统一用户管理系统通过处理人事系统的员工,组织,岗位变动事件和统一流程处理,保证企业信息的一致性,安全性,并且减轻各个系统的维护工作。
以上功能可以归结为三点:管理门户目录树,对门户单点登陆支持,解决系统孤立问题。第四,五,六章将分别为这个三个功能提供设计。
3.2 模块设计
根据统一用户管理系统的需求分析,我们将有以下顶层功能模块图3.1:
图3.1 顶层模块图
下面我将分析各个模块的设计:
用户管理:
这个模块将管理整个门户系统的用户,包括开户,销户,启用,禁用等等。下图3.2是用户管理模块的用例图:
图3.2 用户管理模块用例图
组织机构管理:
组织机构管理模块又分为组织类型管理,组织信息管理, 组织名称库管理,岗位信息管理,岗位序列管理,岗位等级管理,岗位层级管理。而每一个管理代表新增,删除,查找,修改四个功能。(这里要提一下的是岗位是由岗位序列,岗位等级,岗位层级三个属性组成)。图3.3为这个模块的用例图:
图3.3 组织机构管理模块用例图
个人信息管理:
这个模块的功能主要是修改个人信息和设置个人密码, 见用例图3.4:
图3.4 个人信息管理模块用例图
系统管理:
这个模块的功能是管理系统权限和审计日志。系统权限是基于用户,角色,组的方式设计的,用例图3.5描述了这个模块的功能点:
图3.5 系统管理模块用例图
同步管理:
同步管理模块的功能是提供与其他应用系统进行用户信息同步。一个同步服务需要有系统连接,接口映射这些属性,这个模块也就是管理这些信息,第五章将具体介绍这个模块的设计。用例图3.6描述了这个模块的功能:
图3.6 同步管理模块的用例图
系统交互接口管理:
这个模块提供与其他系统的交互接口,包括与人事系统交互接口,统一流程处理,信息提供接口,这部分主要解决系统孤立问题,将在第六章详细阐述。
3.3 系统架构
本系统采用目前比较流行的轻量级J2EE三层架构(Spring+Hibernate+Struts),如图3.7:
图3.7 系统总体架构
表现层:
Web层采用了一种MVC框架Struts,通过Struts的ActionServlet来分发用户请求,交给具体的Action做处理。我们并没有让Action做具体的业务逻辑,它只起到一个控制器的作用,而将具体的业务逻辑委托给业务层处理。
业务层:
业务层封装了主要的业务逻辑,这层没有采用EJB技术,而是采用POJO。我们使用了Domain Model这种领域逻辑模式。
持久层:
持久层需要将相关数据存储到两部分数据源:关系型数据库和目录树。数据库持久化部分采用了Hibernate这种ORM框架;而目录树部分,我们自己利用JNDI封装了一套易用的接口,来供业务层调用。
4 目录树在门户中的设计
4.1 LDAP协议
LDAP(Lightweight Directory Access Protocol)轻型目录访问协议它是基于ISO的X.500 标准的简化版本并且可以根据需要自行定制与X.500 不同LDAP 能够支持TCP/IP 协议这对于Internet 上的应用是必须的目前LDAP的标准化工作已经基本完成且得到了包括Novell, IBM ,Microsoft 等在内的众多供应商的大力支持和推广其核心规范在RFC 中都得到了定义它通过四种基本模型完整地描述了目录存储访问控制以及目录数据的操作处理。
4.1.1 LDAP协议机制
类似于其它的TCP/IP 应用,目录服务结构也是非对称的它分为客户机和服务器两部分。目录服务的客户机是指发出目录服务请求的计算机在其上运行LDAP 客户程序,如邮件服务器查找目录树。目录服务器是指任何运行目录服务软件的计算机,它负责与目录客户机通讯以及管理维护目录数据库。客户机构造一个LDAP协议请求通过TCP/IP 传递给LDAP,服务器在LDAP 服务器执行完必要的操作后,把包含结果或者错误的响应通TCP/IP 回传给客户机。见图4.1LDAP协议请求的PDU 是一个LDAPMessage结构,LDAP协议响应的PDU 是一个LDAPResult结构。LDAPMessage 和LDAPResult 的PDU 直接映射到TCP 的字节流在网上传输,LDAP 服务器必须分配一个侦听端口(缺省为389),LDAP 客户机通过TCP 同服务器连接。
图4.1 LDAP客户机/服务器模型
4.1.2 LDAP模型
LDAP基于以下四类模型:
Ø 信息模型:描述存储在LDAP目录中的数据的结构。
Ø 命名模型:描述数据在LDAP目录中如何组织和区分。
Ø 功能模型:描述可以对LDAP目录中的数据进行何种操作。
Ø 安全描述:如何保证LDAP目录中的数据的安全。
信息模型:
LDAP目录中的数据存放的最基本单元称为目录项(Entry)。目录项代表了现实世界中的人、公司、单位等等实体。目录项中包括描述实体的一系列属性,每个属性由一个类型,一条或多条值组成。值与类型之间具有一定的约束关系,这类关系成为属性值语法。不同的类型要求有不同的取值范围.
命名模型:
LDAP命名模型定义目录项是如何被组织和区分的。目录项在目录中的组织形式好像一棵树,因此称之为目录信息树(Directory Information Tree DIT)。目录项在DIT中根据各个项的区分名(Distinguished Name DN)进行排列。DN能在目录中唯一区分一个目录项,它是由相对区分名(Relative Distinguished Names RDNs) 组合而成。区分名中的每一个相对区分名对应了目录信息树中从树根到该目录项的一棵树枝。实际上,每一个RDN是目录项的一个属性,形式为<属性名>=<值>:而目录项就是一系列的RDN的连接,中间以逗号分开。
功能模型:
在LDAP中共有四类10种操作:查询类操作,如搜索、比较;更新类操作,如添加条目、删除条目、修改条目、修改条目名;认证类操作,如绑定、解绑定;其它操作,如放弃和扩展操作。除了扩展操作,另外9种是LDAP的标准操作;扩展操作是LDAP中为了增加新的功能,提供的一种标准的扩展框架,当前已经成为LDAP的扩展操作,有修改密码和starttls扩展,在新的RFC标准和草案中正在增加一些新的扩展操作,不同的LDAP厂商也均定义了自己的扩展操作。
安全模型:
安全模型实际就是在绑定阶段验证用户,并且分配用户权限,绑定阶段可以有各种不同的验证方法,最简单的是用户提供DN和明文密码提交给服务器验证。如果没有DN和密码,服务器建立一次匿名会话。明文密码在网络上传输非常不安全,所以强烈推荐不采用。另一种验证方法是Kerberos绑定,这在LDAPv2中采用,LDAPv3中反对使用。相应的,LDAPv3推出了简单验证和安全层(Simple Authentication and Security Layer SASL)机制。SASL是一个通用的验证框架,它可以使用多种认证方法来验证客户。Kerberos仅仅是其中一种。现在LDAPv3还推出一些扩展安全机制,其中就有传输层安全(Transport Layer Security TLS). TLS 1.0是安全套接字层(Secure Socket Layer SSL) 3.0的扩展,它可以保证在网络上传输的数据不被监听。
4.1.3 LDAP数据库
LDAP是一个用来发布目录信息到许多不同资源的协议,提供客户从各个角落连接到目录服务器中。通常它都作为一个集中的地址本,使用不过根据组织者的需要,它可以做得更加强大。
LDAP 最基本的形式是一个连接数据库的标准方式,该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。要特别注意的是,LDAP 通常作为一个hierarchal 数据库使用,而不是一个关系数据库,因此它的结构用树来表示比用表格好,正因为这样就不能用SQL语句了。
简单说来LDAP 是一个得到关于人或者资源的集中静态数据的快速方式。LDAP 是一种特殊的数据库,但是LDAP 和一般的数据库不同,明白这一点是很重要的。LDAP对查询进行了优化,与写性能相比LDAP 的读性能要优秀很多。
4.2 门户和目录树的关系
门户需要有一个数据源为它提供用户信息,权限配置。为什么要选取LDAP数据库(目录服务器)作为门户数据源呢?
因为这部分数据相对稳定,很少做修改,而且公司,部门,员工这种数据模型也很适合用层次数据库来表示,那么LDAP数据库是一个非常好的选择,我们使用的是ITDS(IBM Tivoli Directory Server)。门户利用这些用户信息,权限信息来达到权限控制和个性化的功能。下面我们将分析门户如何利用目录树来做到权限控制和个性化。
门户自己提供了7种角色,并对它们定义了不同的权限,如图4.2, 门户管理员为员工配置不同的角色来达到权限控制。同时,门户的权限机制也是支持用户组的,每个用户组属于一个角色,通过这样来简化授权。
如果一个企业有很多员工,需要非常严格的权限控制,同时权限控制需要同业务挂钩,比如某个功能只对四岗以上的员工开放。直接把用户与门户基本角色关联,这样授权非常不方便,同时大量同类员工的权限修改也非常麻烦。我们该如何来简化授权呢?
用户组可以简化授权。统一用户管理系统就是为门户
展开阅读全文