董恒競(jìng)
摘要:為了解決企業(yè)內(nèi)應(yīng)用系統(tǒng)較多,大多數(shù)應(yīng)用系統(tǒng)都有移動(dòng)化辦公需求的問題,本文提出一種適合在企業(yè)內(nèi)推廣的較安全的移動(dòng)應(yīng)用平臺(tái)架構(gòu)。本架構(gòu)移動(dòng)客戶端、移動(dòng)應(yīng)用服務(wù)器和各應(yīng)用系統(tǒng)之間,通過Http/Https協(xié)議進(jìn)行較安全的XML格式數(shù)據(jù)的命令調(diào)用。在單點(diǎn)登錄系統(tǒng)的支持下,移動(dòng)客戶端可以透明、安全的訪問各應(yīng)用系統(tǒng),調(diào)用應(yīng)用系統(tǒng)中的命令(函數(shù))。同時(shí),本架構(gòu)支持基于每個(gè)命令進(jìn)行訪問權(quán)限設(shè)置,支持iOS、Android等多種移動(dòng)客戶端,移動(dòng)瀏覽器的訪問?;诒炯軜?gòu)不但可以較快速的將企業(yè)內(nèi)應(yīng)用系統(tǒng)向移動(dòng)終端上拓展,而且不會(huì)對(duì)應(yīng)用系統(tǒng)有較大的結(jié)構(gòu)、代碼的改變。
關(guān)鍵詞:移動(dòng)應(yīng)用平臺(tái);架構(gòu);安全性;單點(diǎn)登錄;XML技術(shù)
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A
DOI: 10.3969/j.issn.1003-6970.2016.01.031
0 引言
目前我國(guó)手機(jī)用戶位居世界之首,隨著社會(huì)的不斷進(jìn)步以及信息技術(shù)和通訊網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,通過移動(dòng)終端進(jìn)行移動(dòng)辦公已經(jīng)成為大部分企業(yè)進(jìn)行遠(yuǎn)程辦公的必要手段之一。除企業(yè)郵箱基本上都通過手機(jī)郵件客戶端軟件訪問外,其它的應(yīng)用系統(tǒng)一般有以下幾種方式:通過VPN+瀏覽器,或嵌入基于前端技術(shù)構(gòu)建的客戶端訪問公司W(wǎng)eb應(yīng)用系統(tǒng),通過虛擬桌面軟件訪問企業(yè)應(yīng)用系統(tǒng),通過開發(fā)手機(jī)客戶端的方式訪問企業(yè)應(yīng)用系統(tǒng),通過HTML手機(jī)門戶訪問企業(yè)應(yīng)用系統(tǒng)。通過開發(fā)手機(jī)客戶端訪問企業(yè)應(yīng)用系統(tǒng),又可以分為基于企業(yè)應(yīng)用系統(tǒng)頁(yè)面解析的表現(xiàn)層對(duì)接方式,和基于應(yīng)用系統(tǒng)代碼、數(shù)據(jù)庫(kù)的業(yè)務(wù)邏輯層方式。
VPN方式只能訪問適合在手機(jī)中運(yùn)行的Web應(yīng)用系統(tǒng),虛擬桌面方式受到應(yīng)用系統(tǒng)是否符合手機(jī)屏幕的制約,使得這兩種方式很難成為一種企業(yè)級(jí)的移動(dòng)應(yīng)用方案。基于前端技術(shù)構(gòu)建的客戶端的方式,客戶端需要能夠直接訪問企業(yè)內(nèi)的各應(yīng)用系統(tǒng)?;趹?yīng)用系統(tǒng)頁(yè)面解析方式的開發(fā),常常得到?jīng)]有源代碼又急于快速實(shí)施移動(dòng)辦公企業(yè)的青睞,但這種方式對(duì)于頁(yè)面、流程變動(dòng)較大的應(yīng)用,就顯得捉襟見肘了。并且這些方式都很難同時(shí)對(duì)所有的應(yīng)用系統(tǒng)提供集中的移動(dòng)辦公支持。
基于對(duì)以上問題的認(rèn)識(shí),本文主要探討在具有應(yīng)用系統(tǒng)源代碼的企業(yè)里,如何設(shè)計(jì)統(tǒng)一的、安全的移動(dòng)應(yīng)用平臺(tái)架構(gòu)。我們這里說的應(yīng)用系統(tǒng),主要是指Web應(yīng)用系統(tǒng),或者支持通過Http協(xié)議訪問的系統(tǒng)。對(duì)于非Web應(yīng)用系統(tǒng)(主要是C/S架構(gòu)的應(yīng)用),可以通過數(shù)據(jù)庫(kù)訪問方式進(jìn)行移動(dòng)化辦公開發(fā)。
1 問題分析
如何搭建企業(yè)的移動(dòng)應(yīng)用平臺(tái),本文從以下3個(gè)方面進(jìn)行了思考:
(1)移動(dòng)應(yīng)用平臺(tái)需要支持跨平臺(tái)。目前企業(yè)Web應(yīng)用系統(tǒng)的開發(fā)語(yǔ)言有Java_ .Net、Php,iOS客戶端的開發(fā)語(yǔ)言是Objective-C等,Android客戶端的開發(fā)語(yǔ)言是Java等。企業(yè)級(jí)移動(dòng)應(yīng)用平臺(tái),需要兼容幾乎所有的Web應(yīng)用系統(tǒng)和移動(dòng)操作系統(tǒng)。
(2)移動(dòng)應(yīng)用平臺(tái)需要支持一次登錄后對(duì)企業(yè)內(nèi)所有應(yīng)用系統(tǒng)的訪問。隨著企業(yè)信息化的發(fā)展,企業(yè)內(nèi)部一般都有十來個(gè)或更多的生產(chǎn)經(jīng)營(yíng)、財(cái)務(wù)、協(xié)同辦公等系統(tǒng),用戶登錄手機(jī)平臺(tái)后,需要訪問所有這些應(yīng)用系統(tǒng)(一般是特定的功能部分)。而這些應(yīng)用系統(tǒng)的訪問方式不盡相同,用戶在不同系統(tǒng)中的用戶名、權(quán)限一般也不相同等。
(3)移動(dòng)應(yīng)用平臺(tái)需要支持很高的安全性要求。企業(yè)內(nèi)的應(yīng)用系統(tǒng),一般通過網(wǎng)絡(luò)技術(shù)手段保護(hù)起來,外部使用VPN等系統(tǒng)進(jìn)行訪問。在使用移動(dòng)應(yīng)用平臺(tái)后,移動(dòng)應(yīng)用服務(wù)器需要暴露給外網(wǎng),這就需要大大提高平臺(tái)的安全性。同時(shí),要加強(qiáng)手機(jī)客戶端的安全性,避免在手機(jī)丟失后,造成企業(yè)業(yè)務(wù)數(shù)據(jù)的泄露。
2 架構(gòu)設(shè)計(jì)
基于對(duì)以上問題的分析,本文設(shè)計(jì)了如圖1(按照數(shù)據(jù)調(diào)用方向繪制)所示的企業(yè)移動(dòng)應(yīng)用平臺(tái)架構(gòu)。
為了做到跨平臺(tái)的支持,移動(dòng)終端與移動(dòng)應(yīng)用服務(wù)器,移動(dòng)應(yīng)用服務(wù)器與各個(gè)企業(yè)應(yīng)用系統(tǒng)之間,采用http/https協(xié)議,傳輸XML格式的數(shù)據(jù)。iPhone或Android系統(tǒng)的客戶端,通過命令執(zhí)行器,將遠(yuǎn)程命令(函數(shù))調(diào)用封裝為XML數(shù)據(jù),提交給XMLReceiver。移動(dòng)終端瀏覽器訪問移動(dòng)應(yīng)用服務(wù)器的Jsp/Servlets頁(yè)面,經(jīng)由命令轉(zhuǎn)換模塊,將Http請(qǐng)求轉(zhuǎn)換為XML格式的遠(yuǎn)程命令請(qǐng)求。移動(dòng)應(yīng)用服務(wù)器在安全、權(quán)限檢查通過后,再通過http請(qǐng)求將命令分發(fā)到相應(yīng)的企業(yè)應(yīng)用服務(wù)器處理。XML格式數(shù)據(jù)和Http傳輸,使得跨平臺(tái)成為可能。我們只需要根據(jù)不同的客戶端環(huán)境、服務(wù)器環(huán)境,將命令調(diào)用或者返回結(jié)果的XML數(shù)據(jù),翻譯成相應(yīng)計(jì)算機(jī)語(yǔ)言的調(diào)用或數(shù)據(jù)。
為了支持客戶端的一次登錄,即可訪問所有的應(yīng)用系統(tǒng),本架構(gòu)中引入了單點(diǎn)登錄系統(tǒng)的支持??蛻舳说卿浺苿?dòng)應(yīng)用服務(wù)器,由移動(dòng)應(yīng)用服務(wù)器代替客戶端進(jìn)行系統(tǒng)登錄。登錄成功后,移動(dòng)應(yīng)用服務(wù)器通過單點(diǎn)登錄系統(tǒng)獲得登錄者在各應(yīng)用系統(tǒng)中的賬號(hào),返回給客戶端一個(gè)新建的登錄者ID。這樣,在以后的訪問中,客戶端以登錄者ID進(jìn)行命令請(qǐng)求,移動(dòng)應(yīng)用服務(wù)器則在將登錄者ID轉(zhuǎn)換為對(duì)應(yīng)應(yīng)用系統(tǒng)的賬號(hào)后,將命令裝發(fā)給應(yīng)用系統(tǒng)。這樣就實(shí)現(xiàn)了移動(dòng)客戶端一次登錄,即可按各自的身份訪問不同的應(yīng)用系統(tǒng)。如下圖2,是命令的XML格式樣例。該樣例表示,調(diào)用者(登錄者ID,caller),從client(系統(tǒng)-ip地址)處查詢應(yīng)用系統(tǒng)(SMS)的船舶基本信息(函數(shù)是getShinlnfo,參數(shù)是船舶ID:H00012)。
或者,可以由移動(dòng)應(yīng)用服務(wù)器記錄單點(diǎn)登錄系統(tǒng)產(chǎn)生的身份憑據(jù),移動(dòng)客戶端每次憑據(jù)進(jìn)行命令調(diào)用。這樣移動(dòng)應(yīng)用服務(wù)器可以直接將該命令向應(yīng)用服務(wù)器轉(zhuǎn)發(fā),應(yīng)用服務(wù)器根據(jù)單點(diǎn)登錄系統(tǒng)進(jìn)行身份識(shí)別。但這樣,客戶端的登錄會(huì)隨著單點(diǎn)登錄系統(tǒng)的超時(shí),而自動(dòng)退出。由于移動(dòng)客戶端一般在手機(jī)上安裝、使用,用戶喜歡保持登錄X天,故本文建議記錄用戶賬號(hào)的方法。
對(duì)于C/S結(jié)構(gòu)的應(yīng)用系統(tǒng)(不支持http/https調(diào)用),或者移動(dòng)終端有直接訪問數(shù)據(jù)庫(kù)的需求,可以采用統(tǒng)一的Data Service進(jìn)行數(shù)據(jù)庫(kù)的調(diào)用。Data Service也是一個(gè)Web應(yīng)用系統(tǒng)(WS02提供一款開源的DataService服務(wù)器,簡(jiǎn)稱DSS),它可以連接多個(gè)數(shù)據(jù)庫(kù),只是在Data Service中的命令處理器是將XML命令轉(zhuǎn)化為數(shù)據(jù)庫(kù)的訪問命令(SQL語(yǔ)句)。
3 安全性
為了保證移動(dòng)應(yīng)用平臺(tái)的安全性,在移動(dòng)終端與移動(dòng)應(yīng)用服務(wù)器之間需要采用雙向證書認(rèn)證的https通信,并在移動(dòng)應(yīng)用服務(wù)器上限制一個(gè)客戶端證書只能登錄一個(gè)對(duì)應(yīng)的特定賬號(hào)。由于公司內(nèi)的應(yīng)用系統(tǒng)基本上都是運(yùn)行http的環(huán)境上,故移動(dòng)應(yīng)用服務(wù)器與公司內(nèi)的各Web應(yīng)用系統(tǒng)之間可以采用非對(duì)稱加密的http通信。同時(shí)移動(dòng)應(yīng)用服務(wù)器上可以詳細(xì)定義每一條具體的命令,哪些賬號(hào)、組可以訪問,訪問的具體權(quán)限是什么。這樣移動(dòng)應(yīng)用服務(wù)器可以通過權(quán)限檢查模塊進(jìn)行權(quán)限檢查后,再?zèng)Q定本次調(diào)用應(yīng)不應(yīng)該進(jìn)行分發(fā)。
同時(shí),為了保障移動(dòng)客戶端使用上的安全性,需要在移動(dòng)應(yīng)用服務(wù)器上增加主動(dòng)踢出特定用戶的登錄,在客戶端上增加不聯(lián)網(wǎng)時(shí)進(jìn)行本地密碼保護(hù)的功能。這樣使得在手機(jī)丟失后,連接服務(wù)器或進(jìn)行本地?cái)?shù)據(jù)訪問都能進(jìn)行保護(hù)的目的。
4 分析與展望
本文介紹的結(jié)構(gòu)設(shè)計(jì),主要作用于Web應(yīng)用系統(tǒng)的移動(dòng)辦公開發(fā),這樣移動(dòng)辦公可以重用應(yīng)用系統(tǒng)現(xiàn)有的業(yè)務(wù)邏輯(及代碼),減少移動(dòng)終端與桌面終端辦公的不一致性和出錯(cuò)的可能性。而對(duì)于Data Service方式直接訪問數(shù)據(jù)庫(kù)的方式,在數(shù)據(jù)庫(kù)結(jié)構(gòu)發(fā)生變化時(shí),將無法自動(dòng)保證移動(dòng)終端訪問數(shù)據(jù)庫(kù)命令的正確執(zhí)行,也會(huì)增加移動(dòng)辦公的與C/S應(yīng)用系統(tǒng)業(yè)務(wù)邏輯不一致的可能性。
在設(shè)計(jì)中,移動(dòng)客戶端與移動(dòng)應(yīng)用服務(wù)器,移動(dòng)應(yīng)用服務(wù)器與企業(yè)內(nèi)各應(yīng)用系統(tǒng)之間,采用的是自定義的XML格式的命令調(diào)用。隨著企業(yè)服務(wù)總線和企業(yè)應(yīng)用集成技術(shù)的發(fā)展,企業(yè)內(nèi)的應(yīng)用系統(tǒng)將以Web Service的方式向企業(yè)服務(wù)總線提供服務(wù),由企業(yè)服務(wù)總線統(tǒng)一向其它應(yīng)用系統(tǒng)提供服務(wù)。如果應(yīng)用系統(tǒng)同時(shí)以Web Service的方式和本文中定義的XML格式提供服務(wù),將會(huì)出現(xiàn)冗余,提高出錯(cuò)的可能性和維護(hù)的復(fù)雜度。所以,在有應(yīng)用系統(tǒng)集成規(guī)劃或者已經(jīng)存在企業(yè)服務(wù)總線的企業(yè),本文中的自定義XML命令傳輸可以替換為Web Service的方式。