董恒竞
摘要:为了解决企业内应用系统较多,大多数应用系统都有移动化办公需求的问题,本文提出一种适合在企业内推广的较安全的移动应用平台架构。本架构移动客户端、移动应用服务器和各应用系统之间,通过Http/Https协议进行较安全的XML格式数据的命令调用。在单点登录系统的支持下,移动客户端可以透明、安全的访问各应用系统,调用应用系统中的命令(函数)。同时,本架构支持基于每个命令进行访问权限设置,支持iOS、Android等多种移动客户端,移动浏览器的访问。基于本架构不但可以较快速的将企业内应用系统向移动终端上拓展,而且不会对应用系统有较大的结构、代码的改变。
关键词:移动应用平台;架构;安全性;单点登录;XML技术
中图分类号:TP319
文献标识码:A
DOI: 10.3969/j.issn.1003-6970.2016.01.031
0 引言
目前我国手机用户位居世界之首,随着社会的不断进步以及信息技术和通讯网络技术的飞速发展,通过移动终端进行移动办公已经成为大部分企业进行远程办公的必要手段之一。除企业邮箱基本上都通过手机邮件客户端软件访问外,其它的应用系统一般有以下几种方式:通过VPN+浏览器,或嵌入基于前端技术构建的客户端访问公司Web应用系统,通过虚拟桌面软件访问企业应用系统,通过开发手机客户端的方式访问企业应用系统,通过HTML手机门户访问企业应用系统。通过开发手机客户端访问企业应用系统,又可以分为基于企业应用系统页面解析的表现层对接方式,和基于应用系统代码、数据库的业务逻辑层方式。
VPN方式只能访问适合在手机中运行的Web应用系统,虚拟桌面方式受到应用系统是否符合手机屏幕的制约,使得这两种方式很难成为一种企业级的移动应用方案。基于前端技术构建的客户端的方式,客户端需要能够直接访问企业内的各应用系统。基于应用系统页面解析方式的开发,常常得到没有源代码又急于快速实施移动办公企业的青睐,但这种方式对于页面、流程变动较大的应用,就显得捉襟见肘了。并且这些方式都很难同时对所有的应用系统提供集中的移动办公支持。
基于对以上问题的认识,本文主要探讨在具有应用系统源代码的企业里,如何设计统一的、安全的移动应用平台架构。我们这里说的应用系统,主要是指Web应用系统,或者支持通过Http协议访问的系统。对于非Web应用系统(主要是C/S架构的应用),可以通过数据库访问方式进行移动化办公开发。
1 问题分析
如何搭建企业的移动应用平台,本文从以下3个方面进行了思考:
(1)移动应用平台需要支持跨平台。目前企业Web应用系统的开发语言有Java_ .Net、Php,iOS客户端的开发语言是Objective-C等,Android客户端的开发语言是Java等。企业级移动应用平台,需要兼容几乎所有的Web应用系统和移动操作系统。
(2)移动应用平台需要支持一次登录后对企业内所有应用系统的访问。随着企业信息化的发展,企业内部一般都有十来个或更多的生产经营、财务、协同办公等系统,用户登录手机平台后,需要访问所有这些应用系统(一般是特定的功能部分)。而这些应用系统的访问方式不尽相同,用户在不同系统中的用户名、权限一般也不相同等。
(3)移动应用平台需要支持很高的安全性要求。企业内的应用系统,一般通过网络技术手段保护起来,外部使用VPN等系统进行访问。在使用移动应用平台后,移动应用服务器需要暴露给外网,这就需要大大提高平台的安全性。同时,要加强手机客户端的安全性,避免在手机丢失后,造成企业业务数据的泄露。
2 架构设计
基于对以上问题的分析,本文设计了如图1(按照数据调用方向绘制)所示的企业移动应用平台架构。
为了做到跨平台的支持,移动终端与移动应用服务器,移动应用服务器与各个企业应用系统之间,采用http/https协议,传输XML格式的数据。iPhone或Android系统的客户端,通过命令执行器,将远程命令(函数)调用封装为XML数据,提交给XMLReceiver。移动终端浏览器访问移动应用服务器的Jsp/Servlets页面,经由命令转换模块,将Http请求转换为XML格式的远程命令请求。移动应用服务器在安全、权限检查通过后,再通过http请求将命令分发到相应的企业应用服务器处理。XML格式数据和Http传输,使得跨平台成为可能。我们只需要根据不同的客户端环境、服务器环境,将命令调用或者返回结果的XML数据,翻译成相应计算机语言的调用或数据。
为了支持客户端的一次登录,即可访问所有的应用系统,本架构中引入了单点登录系统的支持。客户端登录移动应用服务器,由移动应用服务器代替客户端进行系统登录。登录成功后,移动应用服务器通过单点登录系统获得登录者在各应用系统中的账号,返回给客户端一个新建的登录者ID。这样,在以后的访问中,客户端以登录者ID进行命令请求,移动应用服务器则在将登录者ID转换为对应应用系统的账号后,将命令装发给应用系统。这样就实现了移动客户端一次登录,即可按各自的身份访问不同的应用系统。如下图2,是命令的XML格式样例。该样例表示,调用者(登录者ID,caller),从client(系统-ip地址)处查询应用系统(SMS)的船舶基本信息(函数是getShinlnfo,参数是船舶ID:H00012)。
或者,可以由移动应用服务器记录单点登录系统产生的身份凭据,移动客户端每次凭据进行命令调用。这样移动应用服务器可以直接将该命令向应用服务器转发,应用服务器根据单点登录系统进行身份识别。但这样,客户端的登录会随着单点登录系统的超时,而自动退出。由于移动客户端一般在手机上安装、使用,用户喜欢保持登录X天,故本文建议记录用户账号的方法。
对于C/S结构的应用系统(不支持http/https调用),或者移动终端有直接访问数据库的需求,可以采用统一的Data Service进行数据库的调用。Data Service也是一个Web应用系统(WS02提供一款开源的DataService服务器,简称DSS),它可以连接多个数据库,只是在Data Service中的命令处理器是将XML命令转化为数据库的访问命令(SQL语句)。
3 安全性
为了保证移动应用平台的安全性,在移动终端与移动应用服务器之间需要采用双向证书认证的https通信,并在移动应用服务器上限制一个客户端证书只能登录一个对应的特定账号。由于公司内的应用系统基本上都是运行http的环境上,故移动应用服务器与公司内的各Web应用系统之间可以采用非对称加密的http通信。同时移动应用服务器上可以详细定义每一条具体的命令,哪些账号、组可以访问,访问的具体权限是什么。这样移动应用服务器可以通过权限检查模块进行权限检查后,再决定本次调用应不应该进行分发。
同时,为了保障移动客户端使用上的安全性,需要在移动应用服务器上增加主动踢出特定用户的登录,在客户端上增加不联网时进行本地密码保护的功能。这样使得在手机丢失后,连接服务器或进行本地数据访问都能进行保护的目的。
4 分析与展望
本文介绍的结构设计,主要作用于Web应用系统的移动办公开发,这样移动办公可以重用应用系统现有的业务逻辑(及代码),减少移动终端与桌面终端办公的不一致性和出错的可能性。而对于Data Service方式直接访问数据库的方式,在数据库结构发生变化时,将无法自动保证移动终端访问数据库命令的正确执行,也会增加移动办公的与C/S应用系统业务逻辑不一致的可能性。
在设计中,移动客户端与移动应用服务器,移动应用服务器与企业内各应用系统之间,采用的是自定义的XML格式的命令调用。随着企业服务总线和企业应用集成技术的发展,企业内的应用系统将以Web Service的方式向企业服务总线提供服务,由企业服务总线统一向其它应用系统提供服务。如果应用系统同时以Web Service的方式和本文中定义的XML格式提供服务,将会出现冗余,提高出错的可能性和维护的复杂度。所以,在有应用系统集成规划或者已经存在企业服务总线的企业,本文中的自定义XML命令传输可以替换为Web Service的方式。