基于Web Services的数字化校园的构建研究
关键词:web服务;数字化校园;统一描述、发现和集成;单点登录;ca认证
1 引言
社会信息化的推进使得校园网得以迅速的发展,越来越多的校园依托校园网建立起了各种应用系统,如办公自动化系统、教务管理系统、科研管理系统、人事管理系统、后勤管理系统、学生管理系统等。在前期建设阶段,由于没有做好统一的规划,各职能机构都建立了各自的信息系统,由于编程语言差异、数据库异构、数据标准不统一等原因,各个系统之间无法进行正常通信,为用户造成了很多不便。因而,本课题就从数字化校园建设的发展阶段和实际要求出发,以数字化校园理念为基础,采用最新的web服务技术,构建一个高效、安全、松散藕合和高度集成的数字化校园框架体系,并对所采用的核心技术进行研究和探索。
2 web服务简介
web服务是一种部署在web上的对象,是一种可通过标准internet协议访问的自包含的、自描述的、模块化的、可编程的应用逻辑,是对象/组件技术在internet中的延伸,可以通过web发布、查找和调用。其协议包括:
(1)xml(extensible markup language,可扩展标记语言)
由标准通用标记语言(sgml)发展而来,现已成为一种人们广泛接受的用于描述数据和创建标记语言的标准。
(2)soap(simple object access protocol,简单对象访问协议)
作为web服务的标准通信协议。简单对象访问协议(soap)是一个用来在分散、分布式的环境中交换信息的简单协议,它是一个基于xml的协议。
(3)wsdl (web services description language)
描述web服务的xml格式语言。它用来定义web服务,并描述如何访问这些服务。
(4)uddi(universal description,discovery and integration)
一套面向web服务的信息注册中心的实际标准和规范。创建uddi注册中心的目的是实现web服务的发布和发现,可以利用uddi规范在web上建立和发现服务。
以上这些协议规范加上广泛使用的传输层和网络层的通用标准(tcp/ip、http、smtp等)就能实现一个完整的web服务体系架构。
3 web服务体系结构
web服务体系结构soa,清晰地描述了各角色之间的交互,如图1所示。soa体系结构中共有3种角色:(1)service provider:服务提供者。为其他服务和用户提供已有的功能,从体系结构上看,它是指提供服务访问的平台;(2) service requester:服务请求者。需要某种特定服务的企业或个人,是服务功能的使用者,从体系结构上看,它是指查找和调用服务的客户端程序;(3) service registry:服务代理。用来存储服务描述信息的信息库,是服务提供者发布服务和服务请求者查找服务并获取服务的绑定信息的场所,充当管理者的角色。
在web服务的角色之间进行了3种操作:(1)发布:使服务提供者可以向服务代理注册自己的功能及访问接口;(2)查找:使服务请求者可以通过服务代理查找特定种类的服务;(3)绑定:使服务请求者能够真正使用服务提供者所提供的服务。
4 基于web services设计数字化校园
4.1 系统概述
整个系统旨在整个校园的不同部门机构,不同平台,但与校园运作相关部门分布式协同处理业务,并实现系统跨平台跨部门的无缝连接。在设计模式上,对于校园的规模没有明确界限,可以通过web服务进行高性价比的平台集成,因而系统规模易于扩展。
数字化校园总体架构如图2所示。
4.2 uddi
4.2.1 uddi概述
uddi(universal description、discovery and integration) [1],是一套面向web服务的信息注册中心的实际标准和规范。创建uddi注册中心的目的是实现web服务的发布和发现,可以利用uddi规范在web上建立和发现服务。简单的说,web服务是一种开发的规范,使得通过网络可以对基于规范开发的各种应用进行调用、整合,从而在互联网上完成更复杂的任务,uddi就是web服务的服务中介。目前,关于web服务的几个底层标准协议,业界已经基本达成共识,包括xml、soap、wsdl、uddi等。
4.2.2 uddi在web服务中的位置
如图3所示,uddi包含于完整的web 服务协议栈之内,是协议栈基础的主要部件之一,服务提供者和服务请求者通过其来完成web服务的创建、说明、发现和调用[2]。
由于uddi的构建是基于网络传输层和基于soap的xml消息传输层之上的。web服务描述语言(web services description language,wsdl)为uddi提供了统一的xml词汇供描述web服务及其接口使用。比如使用wsfl(web services flow language,web服务流语言)的web服务工作流描述以及安全性,管理和服务质量,解决系统的可靠性和可用性问题。
4.2.3 uddi的商业注册与uddi商业注册中心
uddi的核心组件是uddi商业注册,它使用一个xml文档来描述企业及其提供的web服务。从概念上来说,uddi商业注册所提供的信息包含三个部分:“白页(white page)”,包括了地址,联系方法,和已知的企业标识;“黄页(yellow page)”包括了基于标准分类法的行业类别;“绿页(green page)”,则包括了关于该企业所提供的web服务的技术信息,其形式可能是一些指向文件或是url的指针,而这些文件或url是为服务发现机制服务的。所有的uddi商业注册信息存储在uddi商业注册中心中。以上3种信息,uddi定义了4种核心数据结构类型加以描述,简单介绍如下[3]。
(1)商业实体信息:businessentity元素
在商业领域内,合作伙伴和潜在的合作伙伴都期望能准确地定位到商业实体所能提供的服务或产品的相关信息,并把这些信息作为了解企业的开始。而在技术领域,技术人员、程序员或应用程序都期望能知道他们需要集成的商业实体的名称和一些关键性的标识,该商业实体是属于哪个具体工业分类之类的分类信息,以及联络方法(包括email、电话、url)等。支持对uddi商业注册的商业信息发布和发现的核心xml元素都包含在"businessentity"结构中。这个结构是商业实体专属信息集的最高层的数据容器,位于整个信息结构的最上层。
(2)商业服务信息:businessservice元素
businessservice结构将一系列有关商业流程或分类目录的web 服务的描述组合到一起。businessservice和下面要提到的bindingtemplate一起构成了“绿页”信息。其中,一个可能的商业流程的例子是一组相关的web服务信息,包括采购服务、运输服务和其它的高层商业流程。这些服务都将是提供这些商业流程服务的商业实体所需要注册的web服务。
这些businessservice的信息集合可以再次加以分类,使web应用服务的描述可以按不同的行业、产品、服务类型或是地域划分来进行。分类的方法的机制与businessentity是类似的。
(3)技术绑定信息:bindingtemplate元素
对于每一个businessservice,存在一个或多个web服务的技术描述bindingtemplate。这些技术描述包括应用程序连接远程web服务并与之通讯所必须的信息。这些信息包括web应用服务的地址、应用服务宿主和调用服务前必须调用的附加应用服务等。另外,通过附加的特性还可以实现一些复杂的路由选择,诸如负载平衡等。
(4)元技术信息:tmodel元素
调用一个服务所需要的信息是在bindingtemplate的结构中定义的。不过一般来说,仅知道web服务所在的地址是不够的。例如,如果知道合作伙伴提供一个web服务来让我下订单,同时也知道这个服务的url,不过如果不知道一些具体的信息,如订单的具体格式,应该使用的协议,需要采用的安全机制,调用返回的响应格式等,那样的话,通过web服务将两个系统集成起来仍然是非常困难的。
当一个程序需要调用某个特定的web服务时,必须根据应用要求得到了足够充分的调用规范等相关信息,以使调用被正确地执行。因此,每一个bindingtemplate元素都包含一个特殊的元素,该元素包含了一个列表,列表的每个子元素分别是一个调用规范的引用。这些引用作为一个标识符的杂凑集合 ,组成了类似指纹的技术标识,用来查找、识别实现了给定行为或编程接口的web服务。
4.3 单点登录
4.3.1单点登录概述
单点登录(single sign on),简称为sso,是目前比较流行的企业业务整合的解决方案之一。sso的定义是用户只需进行一次登录注册,就可以访问多个相互联系的应用系统,而不必反复进行身份认证[4]。
4.3.2单点登录设计
通过web服务实现用户身份验证,验证通过后将自动随机生成ticket,并传给用户,当用户访问其他应用系统时,仅需对ticket进行合法性验证。在这里,web服务只需实现用户登录基本信息验证、ticket生成、ticket合法性验证这三个功能,就可以进行统一身份认证。单点登录模型的体系结构如图4所示[5]。
4.3.3单点登录实现
服务器端在开发时所使用的操作系统为windows server2003,数据库为sql server2000,在eclipse开发环境下进行开发调试,使用tomcat 5作为服务器,axis2作为soap 搜索引擎。当环境部署完成之后,进行应用程序的开发,将单点登录系统以定制方式发布为 web服务,成为服务提供者,为校园不同部门机构门户提供服务。
4.4 ca认证中心
4.4.1 ca简介
ca(certificate authority)[6]是数字证书认证中心的简称,是指发放、管理、废除数字证书的机构。ca的作用是检查证书持有者身份的合法性,并签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和密钥进行管理[7]。
4.4.2公钥体系结构中的一些基本概念与结构组成
(1)密钥对
在基于公钥体系的安全系统中,密钥是成对生成的,每对密钥由一个公钥和一个私钥组成。在实际应用中,私钥由拥有者自己保存,而公钥则需要公布于众。为了使基于公钥体系的业务能够广泛应用,一个基础性关键的问题就是公钥的分发与管理。
公钥本身并没有什么标记,仅从公钥本身不能判别公钥的主人是谁。
在很小的范围内,比如a和b这样的两个小集体,他们之间相互信任,交换公钥,在互联网上通讯,没有什么问题。这个集体再稍大一点,也许彼此信任也不成问题,但从法律角度讲这种信任也是有问题的。如再大一点,信任问题就成了一个大问题。
(2)证书
互联网络的用户群绝不是几个人互相信任的小集体,在这个用户群中,从法律角度讲用户彼此之间都不能轻易信任。所以公钥加密体系采取了另一个办法,将公钥和公钥的主人名字联系在一起,再请一个大家都信得过有信誉的公正、权威机构确认,并加上这个权威机构的签名,这就形成了证书。
由于证书上有权威机构的签字,所以大家都认为证书上的内容是可信任的;又由于证书上有主人的名字等身份信息,别人就很容易地知道公钥的主人是谁。
(3)ca
ca也拥有一个证书(内含公钥),当然,它也有自己的私钥,所以它有签字的能力。网上的公众用户通过验证ca的签字从而信任ca,任何人都应该可以得到ca的证书(含公钥),用以验证它所签发的证书。
如果用户想得到一份属于自己的证书,他应先向ca提出申请。在ca判明申请者的身份后,便为他分配一个公钥,并且ca将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给那个用户(申请者)。
如果一个用户想鉴别另一个证书的真伪,他就用ca的公钥对那个证书上的签字进行验证(如前所述,ca签字实际上是经过ca私钥加密的信息,签字验证的过程还伴随使用ca公钥解密的过程),一经验证通过,该证书就被认为是有效的。
ca除了签发证书之外,它的另一个重要作用是证书和密钥的管理。
由此可见,证书就是用户在网上的电子个人身份证,同日常生活中使用的个人身份证作用一样。ca相当于网上公安局,专门发放、验证身份证。
4.4.3认证模块的实现
(1)访问控制的设计思想
用户登录系统时,客户端和服务器端利用数字证书进行双向认证,建立ssl连接,然后查询数据库,对用户进行授权,并将权限集合保存在会话中。之后的交互中,用户每次发出请求,系统都先进行权限判定的过滤,以实现对静态资源(静态html页面、图片资源等)与动态资源(jsp页面、servlet和bean等)的细粒度的访问控制,为系统的安全访问提供有效保障。
(2)数字证书签发工具
通过swing技术开发简易的证书制作工具生成根证书、签署证书和导出公钥证书等。
生成根证书的关键代码如下:
//根据所给算法实例化密钥对产生器
certandkeygen keypair=new
certandkeygen(keyalg,sigalg);
//产生长度为keysize的密钥对
te(keysize);
privatekey prikey=vatekey();
//根据所填信息,创建x500name实例
x500name x500name:ereatex500name();
//生成自签名证书
x509 certificate eert=fcertifieate
(x500name,validity木24木60术60);
//设置证书链
x509certifleate[]chain={cert};
entry(alias,prikey,keypass,chain);
4.4.4配置ssl
修改文件,在最下面增加:
loadmodule ibm_ssl_module
listen 80
listen 443
keyfile f:/
ssldisable
sslv2timeout 100
sslv3timeout 1000
servername netsoft-4d52657
servername netsoft-4d52657
sslenable
sslclientauth optional
5 结束语
web服务作为一种新兴的技术,将各应用系统平台进行了有效的无缝连接,并结合了单点登录模型,构建了一个统一的用户认证管理平台,使用户在各平台间的转换更为便捷。同时,也更方便了各个应用系统的管理。而ca认证的加入,更提高了系统的安全性和保密性。综上,web服务在校园网络中的应用,无疑对数字化校园的构建起到了巨大的推动作用。
参考文献
[1] 王晓虎,叶荣华.uddi技术及其在校园网中的应用[j].计算机工程与科学,2006,28(6):30-35.
[2] 沈伯青,杨宗凯.web服务的基石:uddi技术[j].计算机工程与应用,2003(3):147-183.
[3] 芮雄健,王忠民. uddi的原理与实现[j].计算机工程与设计,2005,26(6):1602-1605.
[4] 贾宗星,董丽丽.基于web services单点登录系统的设计与实现[j].计算机时代,2006(9):62-64.
[5] 李朝峰,江涛.基于web services技术的单点登录模型的研究与设计[j].民营科技,2009(8):23-23.
[6] 江为强,杨义先,黄正全.基于j2ee体系结构的ca认证系统的研究[j].武汉理工大学学报,2008,30(2):105-109.
[7] 胡喜玲.数字认证服务在校园网上的应用[j].微计算机应用,2004,25(3):308-311.
下一篇:基于WEB的在线考试系统