论文部分内容阅读
[摘 要] 随着高校校园网应用的不断扩展,同时伴随着对原有实名制应用的绑定需要,新部署的网络应用面临着如何集成到原有实名制系统的问题,本文通过使用双向Web服务的方式,以Discuz!网络社区程序和DotNetNuke内容管理系统为例,阐释了两个不同技术平台之间的用户认证整合过程,分析了其中的关键环节,给出了主要的实现代码。
[关键词] Web服务 Discuz DotNetNuke 实名制认证 整合
Integration of Two-way Web Services Means for Real-name System User Authentication
BAI Rongmiao
(Educational Technology Institute, Zhejiang University of Media and Communications, Zhejiang, Hangzhou 310018)
Abstract:With the campus network and the increased expansion, accompanied by the original application of the bound real-name system, the new faces to deploy web applications to integrate into existing real-name system for system problems, this Web service by using the two-way approach to the Discuz! online community programs and DotNetNuke content management system for example, illustrates two different technology platform integration between the user authentication process, analyzed the key link, given the realization of the main code.
Keywords:Web Services; Discuz; DotNetNuke; Real-name System Certification; Integration
随着互联网的普及,以及这几年的蓬勃发展,网络应用日趋丰富,对学校在校园网资源建设上的要求也日益提高,搭建一个官方的网络社区可满足学生网络交流以及自我展示的需求,丰富了学生的课余生活。目前,Discuz!网络社区程序在Web2.0领域中使用较为广泛,但由于网络社区是一个开放的平台,一般高校对于用户的管理都采用实名制的形式,以我校为例,原有的DotNetNuke实名制网络应用已自成体系,即一个实名制帐号已能登录多个网络应用,如能将Discuz!网络社区整合入已有体系中,不仅可以规范用户在网络社区中行为,更可方便学生的使用,避免重复注册认证。
一、Web服务概述
一个Web 服务(Web Service)可看作是被URI识别的应用软件,其接口和绑定由XML描述和发现,并可与其它基于XML消息的应用程序交互[1]。Web服务也可看作是一种新型的Web 应用程序,具有自包含、自描述以及模块化的特点,可以通过Web发布、查找和调用[2]。当前,Web服务技术比较热门,它的主要目标是跨平台的可互操作性,在本文案例中,新部署的网络社区应用程序与原有实名制网站分别属于PHP技术平台和ASP.NET技术平台,为了整合它们之间的用户认证,Web服务技术是必然选择。
Discuz!是采用PHP技术开发的网络社区程序,它由Ucenter、UCenter Home(简称UCHome)和Discuz三部分组成,其中Ucenter为Discuz程序的基础组件,用于用户管理,Discuz组件是论坛程序,而UCHome是一套社会化网络软件(Social Network Software,简称SNS)[3]。DotNetNuke(简称DNN)是一个免费、开源、可扩展的内容管理系统。可广泛应用于商务网站、企业内网(Intranet)和外网网站、在线内容发布网站,是建立在微软ASP.NET平台之上的一套Web应用框架[4]。我校以DNN平台为基础已开发了多个应用,如学生视频分享平台、就业服务网等,而用户注册集中于中心DNN站点,注册时必须提供真实的学号和姓名才能注册成功(限校园网用户注册),并且在该站点注册的用户会即时同步到其它站点中(也是采用DNN平台),因此学生拥有一个账号就可以在多个站点登陆使用,本文案例整合的目的也在于此。
本案例的基本思路是用户在登录UCHome或Discuz论坛时,用户名和密码的验证通过中心DNN站点提供的Web服务来实现,这之前需要从中心站点导入用户名和Email到UCHome中(通过新建DNN模块调用Discuz!提供的Web服务的方式)。另外,我们需要关闭Discuz!程序的用户注册功能,当DNN网站有新用户注册时,同步调用Discuz!的Web服务来实现用户的同步,UCHome和Discuz论坛会自动同步各自的用户数据,所以我们只要在UCHome(或Discuz论坛)中实现用户注册的Web服务,这是一种双向的过程。
二、双向WEB服务整合的基本结构
(一)基本结构图
本案例基本结构如图一所示。
从上图可知,Discuz!程序需要提供UCHome用户注册的Web服务,DNN网站需要提供用户登陆验证的Web服务。而要实现整个过程,首先我们必须通过查看源程序來了解UCHome是如何完成用户注册功能的,以及DNN网站用户登录是如何进行验证的,只有明确完成用户注册和登陆验证的相关代码,才能为下一步的Web服务开发提供基础,这是难点之一。Web服务的实现也是另一个难点,两种不同技术Web服务之间的通信也需要不断的测试与调整,每种技术实现Web服务的方法各不相同,各种数据类型也存在差异,本案例需要分别实现PHP和ASP.NET所提供的Web服务,并保证这两者之间的通信顺畅。
(二)实现步骤
为了完成整个过程,需要实现以下三个步骤:
1、导入已有DNN的帐号到Discuz!数据库中。通过新建DNN模块,在DNN网站中提供用户操作的界面和功能,而Discuz!程序提供用户注册Web服务。
2、同步新用户注册。DNN网站中新注册的用户,需要同步到Discuz!数据库中,此时同样调用用户注册Web服务。
3、UCHome或Discuz论坛用户登录验证。此时需要DNN网站提供登陆验证Web服务。
三、关键技术实现
(一)程序结构分析
UCHome是在Discuz论坛后发布的系统,使用面向对象的编程语言PHP5,代码比Discuz论坛更清晰,也加入了MVC框架。MVC(Model-View-Control)的基本目标是方便代码的重用和不同专业人员的分工合作,当数据库操作、业务流程和界面显示(美工或页面设计)分开处理时,逻辑更清晰,项目中的不同人员只要相互提供接口规则而无需提供具体的实现。uc_client目录下的文件是UCHome源代码中比较关键的部分,它的主要功能是对UCHome用户的处理,包括:登录、注册、删除等。它下面的control子目录存放控制文件,model子目录存放直接对数据库进行操作的文件,client.php 文件处理关于用户信息的不同操作,因为uc_client只是一个接口,让UCHome来调用,所以他没有MVC中的视图部分。
DotNetNuke平台相对来说是一个庞大而复杂的系统,它以模块化方式实现平台的各项功能,它的表示层一般都以用户控件(以ASCX为后缀名)的形式呈现,而ASP.NET中提供了代码分离的技术,即前台页面展示与后台代码编写分开,用户控件同样也是如此,所以ASCX文件一般也附有一个名称相同但后缀名为ASCX.VB的后台文件,关于用户的登陆、注册等功能,DNN平台均以用户控件的形式实现,放在admin目录的Users子目录中。
PHP5中新增了内置的SOAP扩展,它是作为PHP的一部分提供的,因此不需要下载、安装和管理单独的包,只需启用这个扩展包。微软提供的IDE开发工具Visual Studio可以方便地实现Web服务的开发和部署,仅需点击鼠标的操作,VS就可以帮助生成Web服务所需的框架代码,而用户就可以专注地开发需要的Web服务方法了。
(二)核心代码编写
搭建的PHP平台环境的版本为5.2.12,打包下载的Discuz!程序各自的版本分别是UCenter1.5、UCHome2.0、Discuz7.0,开发工具为Dreamweaver 8。
首先需要启用PHP的SOAP扩展,编辑php.ini配置文件,找到“;extension=php_soap.dll”,去除前面的分号即可。我们需要创建的文件有以下几个,UCHome根目录下sync_userinfo.php和sync_userinfo.wsdl,source子目录下ws_do_register.php,需要修改的文件有uc_client下的client.php,以及uc_client目录control子目录下的user.php,各个文件的作用请参考表一。
代码一 sync_userinfo.php文件主要代码
ASP.NET平台的Framework版本是3.5,DotNetNuke版本是04.08.00,开发工具为Visual Studio 2008。我们需要创建的文件有UserLogin.asmx(用于提供登陆验证的Web服务,请参考代码二),需要修改的文件有admin目录Users子目录中的User.ascx.vb(新用户注册时调用PHP平台的用户注册Web服务,完成用户数据的同步)。
代码二 验证登陆Web服务ValidateStr方法
四、结语
以上功能均已上线运行,经过一段时间的测试,运行良好、稳定。但从软件开发的角度考虑,有两个问题还待补充完善,一是Web服务方法是以明码的形式在网络中传输,对于敏感的账号信息存在被盗用的危险性,虽然在目前的实现中已提供密码的简单加密处理,但应该考虑使用更复杂的、不易被破解的密码加密方式。另一个问题是如何能够保证事务的完整性,比如DNN平台已完成新用户的注册,但由于网络的原因用户数据未能同步到Discuz!数据库中,除了做好日志记录外,还应该考虑事务的回滚功能。
参 考 文 献
[1]Castro-Leon E.A perspective on Web Services[EB/OL].http://www.webservices.org/, 2010-3-26
[2]Tsalgatidou A,Pilioura T.An Overview of Standards and Related Technology in Web Services[J].Distributed and Parallel Databases,2002,12(2/3):135
[3]UCenter Home社会化网络(SNS)软件[EB/OL].http://www.comsenz.com/products/uchome,2010-3-26
[4]朱娜,劉丽丽.DotNetNuke在电子商务领域的应用[J].电子商务, 2009(2):63-64■
[关键词] Web服务 Discuz DotNetNuke 实名制认证 整合
Integration of Two-way Web Services Means for Real-name System User Authentication
BAI Rongmiao
(Educational Technology Institute, Zhejiang University of Media and Communications, Zhejiang, Hangzhou 310018)
Abstract:With the campus network and the increased expansion, accompanied by the original application of the bound real-name system, the new faces to deploy web applications to integrate into existing real-name system for system problems, this Web service by using the two-way approach to the Discuz! online community programs and DotNetNuke content management system for example, illustrates two different technology platform integration between the user authentication process, analyzed the key link, given the realization of the main code.
Keywords:Web Services; Discuz; DotNetNuke; Real-name System Certification; Integration
随着互联网的普及,以及这几年的蓬勃发展,网络应用日趋丰富,对学校在校园网资源建设上的要求也日益提高,搭建一个官方的网络社区可满足学生网络交流以及自我展示的需求,丰富了学生的课余生活。目前,Discuz!网络社区程序在Web2.0领域中使用较为广泛,但由于网络社区是一个开放的平台,一般高校对于用户的管理都采用实名制的形式,以我校为例,原有的DotNetNuke实名制网络应用已自成体系,即一个实名制帐号已能登录多个网络应用,如能将Discuz!网络社区整合入已有体系中,不仅可以规范用户在网络社区中行为,更可方便学生的使用,避免重复注册认证。
一、Web服务概述
一个Web 服务(Web Service)可看作是被URI识别的应用软件,其接口和绑定由XML描述和发现,并可与其它基于XML消息的应用程序交互[1]。Web服务也可看作是一种新型的Web 应用程序,具有自包含、自描述以及模块化的特点,可以通过Web发布、查找和调用[2]。当前,Web服务技术比较热门,它的主要目标是跨平台的可互操作性,在本文案例中,新部署的网络社区应用程序与原有实名制网站分别属于PHP技术平台和ASP.NET技术平台,为了整合它们之间的用户认证,Web服务技术是必然选择。
Discuz!是采用PHP技术开发的网络社区程序,它由Ucenter、UCenter Home(简称UCHome)和Discuz三部分组成,其中Ucenter为Discuz程序的基础组件,用于用户管理,Discuz组件是论坛程序,而UCHome是一套社会化网络软件(Social Network Software,简称SNS)[3]。DotNetNuke(简称DNN)是一个免费、开源、可扩展的内容管理系统。可广泛应用于商务网站、企业内网(Intranet)和外网网站、在线内容发布网站,是建立在微软ASP.NET平台之上的一套Web应用框架[4]。我校以DNN平台为基础已开发了多个应用,如学生视频分享平台、就业服务网等,而用户注册集中于中心DNN站点,注册时必须提供真实的学号和姓名才能注册成功(限校园网用户注册),并且在该站点注册的用户会即时同步到其它站点中(也是采用DNN平台),因此学生拥有一个账号就可以在多个站点登陆使用,本文案例整合的目的也在于此。
本案例的基本思路是用户在登录UCHome或Discuz论坛时,用户名和密码的验证通过中心DNN站点提供的Web服务来实现,这之前需要从中心站点导入用户名和Email到UCHome中(通过新建DNN模块调用Discuz!提供的Web服务的方式)。另外,我们需要关闭Discuz!程序的用户注册功能,当DNN网站有新用户注册时,同步调用Discuz!的Web服务来实现用户的同步,UCHome和Discuz论坛会自动同步各自的用户数据,所以我们只要在UCHome(或Discuz论坛)中实现用户注册的Web服务,这是一种双向的过程。
二、双向WEB服务整合的基本结构
(一)基本结构图
本案例基本结构如图一所示。
从上图可知,Discuz!程序需要提供UCHome用户注册的Web服务,DNN网站需要提供用户登陆验证的Web服务。而要实现整个过程,首先我们必须通过查看源程序來了解UCHome是如何完成用户注册功能的,以及DNN网站用户登录是如何进行验证的,只有明确完成用户注册和登陆验证的相关代码,才能为下一步的Web服务开发提供基础,这是难点之一。Web服务的实现也是另一个难点,两种不同技术Web服务之间的通信也需要不断的测试与调整,每种技术实现Web服务的方法各不相同,各种数据类型也存在差异,本案例需要分别实现PHP和ASP.NET所提供的Web服务,并保证这两者之间的通信顺畅。
(二)实现步骤
为了完成整个过程,需要实现以下三个步骤:
1、导入已有DNN的帐号到Discuz!数据库中。通过新建DNN模块,在DNN网站中提供用户操作的界面和功能,而Discuz!程序提供用户注册Web服务。
2、同步新用户注册。DNN网站中新注册的用户,需要同步到Discuz!数据库中,此时同样调用用户注册Web服务。
3、UCHome或Discuz论坛用户登录验证。此时需要DNN网站提供登陆验证Web服务。
三、关键技术实现
(一)程序结构分析
UCHome是在Discuz论坛后发布的系统,使用面向对象的编程语言PHP5,代码比Discuz论坛更清晰,也加入了MVC框架。MVC(Model-View-Control)的基本目标是方便代码的重用和不同专业人员的分工合作,当数据库操作、业务流程和界面显示(美工或页面设计)分开处理时,逻辑更清晰,项目中的不同人员只要相互提供接口规则而无需提供具体的实现。uc_client目录下的文件是UCHome源代码中比较关键的部分,它的主要功能是对UCHome用户的处理,包括:登录、注册、删除等。它下面的control子目录存放控制文件,model子目录存放直接对数据库进行操作的文件,client.php 文件处理关于用户信息的不同操作,因为uc_client只是一个接口,让UCHome来调用,所以他没有MVC中的视图部分。
DotNetNuke平台相对来说是一个庞大而复杂的系统,它以模块化方式实现平台的各项功能,它的表示层一般都以用户控件(以ASCX为后缀名)的形式呈现,而ASP.NET中提供了代码分离的技术,即前台页面展示与后台代码编写分开,用户控件同样也是如此,所以ASCX文件一般也附有一个名称相同但后缀名为ASCX.VB的后台文件,关于用户的登陆、注册等功能,DNN平台均以用户控件的形式实现,放在admin目录的Users子目录中。
PHP5中新增了内置的SOAP扩展,它是作为PHP的一部分提供的,因此不需要下载、安装和管理单独的包,只需启用这个扩展包。微软提供的IDE开发工具Visual Studio可以方便地实现Web服务的开发和部署,仅需点击鼠标的操作,VS就可以帮助生成Web服务所需的框架代码,而用户就可以专注地开发需要的Web服务方法了。
(二)核心代码编写
搭建的PHP平台环境的版本为5.2.12,打包下载的Discuz!程序各自的版本分别是UCenter1.5、UCHome2.0、Discuz7.0,开发工具为Dreamweaver 8。
首先需要启用PHP的SOAP扩展,编辑php.ini配置文件,找到“;extension=php_soap.dll”,去除前面的分号即可。我们需要创建的文件有以下几个,UCHome根目录下sync_userinfo.php和sync_userinfo.wsdl,source子目录下ws_do_register.php,需要修改的文件有uc_client下的client.php,以及uc_client目录control子目录下的user.php,各个文件的作用请参考表一。
代码一 sync_userinfo.php文件主要代码
ASP.NET平台的Framework版本是3.5,DotNetNuke版本是04.08.00,开发工具为Visual Studio 2008。我们需要创建的文件有UserLogin.asmx(用于提供登陆验证的Web服务,请参考代码二),需要修改的文件有admin目录Users子目录中的User.ascx.vb(新用户注册时调用PHP平台的用户注册Web服务,完成用户数据的同步)。
代码二 验证登陆Web服务ValidateStr方法
四、结语
以上功能均已上线运行,经过一段时间的测试,运行良好、稳定。但从软件开发的角度考虑,有两个问题还待补充完善,一是Web服务方法是以明码的形式在网络中传输,对于敏感的账号信息存在被盗用的危险性,虽然在目前的实现中已提供密码的简单加密处理,但应该考虑使用更复杂的、不易被破解的密码加密方式。另一个问题是如何能够保证事务的完整性,比如DNN平台已完成新用户的注册,但由于网络的原因用户数据未能同步到Discuz!数据库中,除了做好日志记录外,还应该考虑事务的回滚功能。
参 考 文 献
[1]Castro-Leon E.A perspective on Web Services[EB/OL].http://www.webservices.org/, 2010-3-26
[2]Tsalgatidou A,Pilioura T.An Overview of Standards and Related Technology in Web Services[J].Distributed and Parallel Databases,2002,12(2/3):135
[3]UCenter Home社会化网络(SNS)软件[EB/OL].http://www.comsenz.com/products/uchome,2010-3-26
[4]朱娜,劉丽丽.DotNetNuke在电子商务领域的应用[J].电子商务, 2009(2):63-64■