劉新 王劍 岳鵬飛
摘 要:本文將單點登錄應用于移動支付端中,既能保證移動支付端訪問的安全,又具有單點登錄對多應用系統(tǒng)的靈活整合能力,實現了數據的跨系統(tǒng)平臺傳輸。在手機本地數據與Web數據庫遠程同步的操作中,考慮到數據傳輸的安全性,利用J2ME平臺對同步數據進行了XML格式的封裝和解析,使傳輸效率加快了將近20%。通過J2ME、Hibernate和單點登錄等技術的整合開發(fā),較大地提高了擴展數據傳輸的安全性,并為下一步對XML格式數據進行再次加密和簽名等安全性加強提供了安全保障。
關鍵詞:J2EE;單點登錄;支付安全;Hibernate
中圖分類號:TN929.53;F713.36 文獻標識碼:A 文章編號:1003-5168(2018)10-0008-03
Based on J2ME and Single sign-on Technology of Mobile Payment
System Security Research and Applications
LIU Xin1,2 WANG Jian1,2 YUE Pengfei1,2
(1.Henan Academy of Sciences Institute of Applied Physics Co.,Ltd,Zhengzhou Henan 450008; 2. Henan Provincial Key Laboratory of Internet of Things Perception Technology and Systems, Zhengzhou Henan 450008)
Abstract: In this paper, the single point landing was applied to the mobile payment terminal, which could not only guarantee the security of the access of the mobile payment end, but also had the ability to integrate the single point landing on the multi application system, and realized the cross system platform transmission of the data.In the remote synchronization of mobile phone data and Web database, the author took into account the security of data transmission, and used the J2ME platform to encapsulate and parse the synchronized data in XML format, which made the transmission efficiency faster than 20%. Through the integrated development of J2ME, Hibernate and single sign on, the security of the extended data transmission was greatly improved, and security was provided for the security enhancement of the next step for the re encryption and signature of XML format data.
Keywords: J2EE;single signon;payment security;Hibernate
1 研究背景
隨著世界上移動設備爆炸性發(fā)展,加強移動端支付的安全性問題日益緊迫,移動終端上網的特性決定了其存在和普通電子商務不同的安全性[1,2]。在探討移動端支付安全的特性時,通常需要保障以下安全問題:無線設備應用軟件效能監(jiān)控與系統(tǒng)效能管理;審核和檢測針對移動電子商務的存取是否合法或授權;網頁做到安全性認證的整合,以確保資料安全以及人員存取合法與保密[1]。
單點登錄(Single Sign On,SSO)[2],是本文移動支付端業(yè)務整合的解決方案。SSO是在多個應用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)。單點登錄的機制從模型的角度看,如圖1所示,當用戶第一次訪問應用系統(tǒng)1的時候,因為還沒有登錄,會被引導到認證系統(tǒng)中進行登錄[1];根據用戶提供的登錄信息,認證系統(tǒng)進行身份效驗,如果通過效驗,應該返回給用戶一個認證的憑據——ticket[2];用戶再訪問別的應用的時候[3,5],就會將這個ticket帶上,作為自己認證的憑據,應用系統(tǒng)接受到請求之后,會把ticket送到認證系統(tǒng)進行效驗,檢查ticket的合法性[4,6]。如果通過效驗,用戶就可以在不用再次登錄的情況下,訪問應用系統(tǒng)2和應用系統(tǒng)3。
從圖1可以看出,要實現SSO,讓用戶只登錄一次,就必須讓應用系統(tǒng)能夠識別已經登錄過的用戶。應用系統(tǒng)應該能對ticket進行識別和提取,通過與認證系統(tǒng)的通訊,能自動判斷當前用戶是否登錄過,從而完成單點登錄的功能。本文將單點登錄應用于移動支付端中,既能保證移動支付端訪問的安全,又具有單點登錄對多應用系統(tǒng)的靈活整合能力。
移動支付端的安全采用J2ME實現,利用J2ME對互聯通信的多協(xié)議支持,使手機終端與Web服務器建立通信非常方便,同時J2ME有RMS(記錄管理系統(tǒng)),具有本地數據的離線處理能力,所以遠程數據同步和本地數據離線處理也可以輕松實現[3-5]。J2ME平臺通過以下方面完成對移動支付端安全性的保護:開發(fā)語言本身的安全性,底層KVM的安全性,J2ME的沙盒模型。
2 數據的XML格式封裝
擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而XML與Access、Oracle和SQL Server等數據庫不同,其提供了更加強有力的數據存儲和分析能力,使其易于在任何應用程序中讀寫數據,這使XML很快成為數據交換的唯一公共語言,意味著程序可以更容易與Windows、Mac OS、Linux,以及其他平臺產生信息結合,然后可以很容易加載XML數據到程序中分析,并以XML格式輸出結果。
J2ME提供了網絡編程使用的javax.microedition.io包,其中提供了Connection框架。Connection框架中類Connector用于進行網絡等各方面的流式輸入輸出。J2ME移動支付端應用中可以使用HttpConnection接口建立HTTP連接,與遠程服務器交換數據[6,7]。
為了保證流式輸入輸出的安全性,手機客戶端設計對HTTP流數據進行了XML格式的封裝,為以后進行XML格式數據的加密和簽名等安全性的增強保留了擴展空間。
3 數據同步的實現
數據同步過程中,經XML格式包裝過的訂單數據,從手機端發(fā)出的運行圖如圖2所示。
數據同步(見圖3)是在兩個環(huán)境之間復制全部或部分數據記錄的過程。為了維護數據的一致性,源數據發(fā)生的變化要及時在目標數據庫中反映出來。數據同步有單向同步和雙向同步兩種[8],本應用的訂單數據和用戶身份認證數據,分別采用由移動智能客戶端到目標數據庫,及由企業(yè)級數據庫到移動智能終端的單向同步方式。
J2EE企業(yè)級應用端采用JavaS servlet(SyncServlet)處理來自移動智能終端的身份認證和數據同步請求[9]。這里采用XML數據格式對同步數據進行了封裝,同步數據以order類實例的形式呈現,層次更為清晰[10]。SyncServlet類需在syncwebapp/WEB-INF目錄里的web.xml文件中注冊,該Servlet類用于響應來自移動智能客戶端的請求和處理同步操作邏輯。
智能客戶端][SS0登陸驗
證WEB服務][訂單子系統(tǒng)][fetchDataToSyncronize〔〕
return vect:〔Vector〕][formulateXML〔vect〕
return xmlData:〔String〕][output.flush〔tolen+"http://"+xmlData〕
][Authenticate〔token〕
][deleteRecords〔〕
][return true or false
][inser tSynData
][(Vector vect)
][注:虛線部分為身份
認證通過才執(zhí)行
][注:虛線部分為repomseData
為“true:true”才執(zhí)行
][return responseData://format is “true:true”or“false”
]
4 同步操作核心代碼
同步操作核心代碼如下。
/* Synronizes the data (移動智能客戶端訂單數據同步操作部分代碼)*/
public static boolean syncronize() throws Exception {
HttpConnection hc = null;
OutputStream output = null;
InputStream iStrm = null;
try {
//獲取客戶端Token(認證信息)
String userToken = getUserToken();
// 對訂單記錄進行XML封裝
Vector vect = fetchDataToSyncronize();//從RMS中獲取記錄條目
String xmlData = formulateXML(vect);//把記錄條目進行XML表達
// Http Call.
hc = (HttpConnection) Connector.open(url);
hc.setRequestMethod(HttpConnection.POST);
//同步數據前附加身份認證信息,以//分隔
xmlData=userToken+"http://"+xmlData;
output = hc.openOutputStream(); output.write(xmlData.getBytes());
output.flush(); //向服務器發(fā)送數據流
iStrm = hc.openInputStream();
//獲取服務器響應
int ch;
ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
String responseData=new String(bStrm.toByteArray());
//從響應數據流中分離出認證信息
int au=responseData.indexOf(":");
String auth = responseData.substring(0, au);
if (auth.equals("true")){ //如果驗證合法
String sync=responseData.substring(au+1, responseData.length()-1);
if(sync.equals("true"))//持久化成功
return true;
else
return false;
}
else{
return false;
}
} finally {
……
}
}
5 結語
本文通過對移動端支付系統(tǒng)安全性的開發(fā)應用,完成了對手機本地訂單數據進行XML格式的封裝和解析,實現了數據的跨系統(tǒng)平臺傳輸,并使傳輸效率加快了將近20%。通過J2ME、Hibernate和單點登錄等技術的整合開發(fā),較大程度地提高了擴展數據傳輸的安全性,并為下一步對XML格式數據進行再次加密和簽名等安全性加強提供了安全保障。
參考文獻:
[1]Yuan M J. Enterprise J2ME: Developing Mobile Java Applications[J].Prentice Hall PTR,2003(46):419-420.
[2]作者不詳.SSO單點登陸解決方案[EB/OL].(2011-05-04)[2018-03-06].http://www.360doc.com/content/11/0504/01/1542811_114192973.shtml.
[3]蘇長明.基于J2ME_J2EE的校園移動信息查詢系統(tǒng)設計與實現[J].2012(3):254-257.
[4]蔡月茹,柳西玲.Web Service基礎教程[M].北京:清華大學出版社,2005.
[5]韓婧.Web Services技術在移動電子商務中的應用[J].計算機技術與發(fā)展,2006(2):20-25.
[6]許源,謝康林.基于Web Services的電子商務移動擴展[J].微型電腦應用,2004(9):19-21.
[7]黃聰明.Java移動通信程序設計[M].北京:清華大學出版社,2002.
[8]江頡,賴梅,蔡家楣.基于J2ME技術的移動證券研究與實現[J].計算機工程與應用,2004(6):214-216.
[9]石樂義.基于J2ME/J2EE技術實現移動數據應用[J].微型機與應用,2004(9):10-12.
[10]徐翔斌,方水良.用J2ME構建企業(yè)移動電子商務系統(tǒng)[J].計算機系統(tǒng)應用,2004(9):6-9.