田 野,李忠獻,崔 軍
(1.中國民航大學 電子信息與自動化學院,天津 300300;2.北京郵電大學 計算機學院,北京 100876;3.天津靈創(chuàng)智恒軟件技術有限公司,天津 300350)
一種在Android移動終端實現(xiàn)單點登錄的新方法
田 野1,李忠獻2,崔 軍3
(1.中國民航大學 電子信息與自動化學院,天津 300300;2.北京郵電大學 計算機學院,北京 100876;3.天津靈創(chuàng)智恒軟件技術有限公司,天津 300350)
針對目前移動辦公越來越普及,各大企業(yè)紛紛開發(fā)了企業(yè)內(nèi)部各種各樣的移動端應用系統(tǒng)。企業(yè)員工需要頻繁登錄這些應用系統(tǒng),每次登錄就浪費了大量時間,降低了工作效率。同時,企業(yè)員工需要記憶繁多的用戶名和密碼,不僅費時費力而且還存在安全隱患。因此,開發(fā)出一種能在移動端進行安全單點登錄的新方法是很有必要的。通過分析移動終端上單點登錄的發(fā)展前景與現(xiàn)狀,提出了一種在Android設備上進行安全單點登錄的新方法。該方法基于智能密碼鑰匙的數(shù)字證書認證技術來實現(xiàn)身份認證,通過Android應用程序顯示授權資源,基于SOAP協(xié)議完成單點登錄,實現(xiàn)了基于Android客戶端的數(shù)字證書身份認證與單點登錄來訪問相互信任的資源。實驗結果表明,該系統(tǒng)能支持異構系統(tǒng)的單點登錄,用戶只需一次身份認證就能訪問所有授權應用,提高了用戶數(shù)據(jù)安全性和工作效率,同時也為管理員的管理帶來了便捷。
單點登錄;數(shù)字證書;智能密碼鑰匙;Android移動終端;SOAP協(xié)議;票據(jù)
隨著移動終端和網(wǎng)絡技術的不斷發(fā)展,在商業(yè)領域,移動辦公越來越受到企業(yè)的重視[1]。移動辦公能給企業(yè)帶來相當可觀的效益,通過移動辦公系統(tǒng),能實現(xiàn)員工在任何時間、任何地點通過互聯(lián)網(wǎng)進行工作[2],大大提高了員工的工作效率,因此各企業(yè)都在進行企業(yè)內(nèi)移動辦公系統(tǒng)的開發(fā)。對于企業(yè)內(nèi)部不同辦公應用的整合,比較流行的是單點登錄方式。單點登錄是指用戶在網(wǎng)絡中只需進行一次身份認證,即可訪問所授權的所有應用,無需再次進行身份認證[3]。即“一處登錄,處處登錄”[4]。這樣既能解決用戶的安全問題和效率問題,還能給系統(tǒng)管理員的日常維護和管理帶來方便。有很多比較成熟的商業(yè)解決方案,如IBM的Tivoli Access Manager、Oracle的Sun Opens SO Enterprise、Netegrity Site Minder(已被CA收購)、Novell的EDirectory等[5]。但是這些方案都是基于瀏覽器形式而非客戶端形式,基于瀏覽器形式的單點登錄一般無法集中管理用戶的權限,而且移動終端的瀏覽器一般無法使用插件來完成一些必要的操作。傳統(tǒng)的單點登錄采用的身份認證方式一般都是密碼口令認證,這種認證方式存在一定的安全隱患。
因此,針對上述問題,結合簡單對象訪問協(xié)議(Simple Object Access Protocol,SOAP)[6]與Web服務,提出了一種在Android移動終端上基于Android客戶端應用程序(以下簡稱APP)形式的安全單點登錄新方法,用以解決現(xiàn)有Android移動終端信息系統(tǒng)中異構系統(tǒng)的集成、用戶認證繁瑣冗余、可管理性差及密碼容易泄露等安全問題[7]。
用戶身份認證是指通過一定的手段,完成對用戶身份的確認,即確認當前所聲稱為某種身份的用戶,確實是所聲稱的用戶[8]。身份認證是安全的第一道大門,是各種安全措施可以發(fā)揮作用的前提。最常見的身份認證方式有賬號和密碼[9]。隨著企業(yè)和機構引入各式各樣的信息化系統(tǒng),用戶和管理員需要維護多個信息系統(tǒng)的賬號和密碼,影響了日常的工作效率。用戶希望一次登錄可以訪問企業(yè)的各個信息系統(tǒng),因此資源單點登錄技術應運而生。
數(shù)字證書就是在互聯(lián)網(wǎng)通信中標識通信各方身份信息的一種文件[10]。它提供了一種在網(wǎng)絡上驗證身份的方式,一般由權威的CA頒發(fā)[11]。數(shù)字證書存儲在智能密碼鑰匙中,例如USB-Key、智能IC卡、藍牙Key、指紋Key等設備。文中系統(tǒng)涉及的方法采用的是易于Android設備適配的藍牙Key。
SOAP是交換數(shù)據(jù)的一種協(xié)議規(guī)范,是一種輕量級的、簡單的、基于XML的協(xié)議,它被設計成在Web上交換結構化和固化的信息[12]。此次采用SOAP協(xié)議來完成單點登錄過程中的票據(jù)兌換。
目前常見的單點登錄模型包括以服務器為中心的單點登錄、以客戶端為中心的單點登錄和客戶/服務器模式的單點登錄。下面分別介紹它們的優(yōu)缺點。
以服務器為中心的單點登錄解決方案:所有的認證信息都存儲在中心服務器的數(shù)據(jù)庫上,當需要對用戶進行身份認證時,這個中心服務器與系統(tǒng)內(nèi)其他所有設備進行通信。這種通信需要中心服務器與應用服務器集成,即在單點登錄服務器上開發(fā)應用系統(tǒng)的客戶代理。該方案的優(yōu)點是有單一的控制點,方便對資源的訪問進行控制和權限管理[13]。缺點是與外部應用支持比較困難,容易出現(xiàn)冗余,需要考慮負載均衡和備份。這種模型的代表就是微軟的Passport單點登錄技術。
以客戶端為中心的單點登錄解決方案:所有的認證信息存儲在用戶的客戶端,需要在客戶端部署專門的單點登錄代理。優(yōu)點是不需要在后端集成,單點登錄服務器能支持大部分應用,由于認證信息存放在客戶端,可以在任何時間訪問業(yè)務。缺點是由于使用密碼代填的方式,若數(shù)據(jù)傳輸過程中沒有加密,則賬號密碼容易泄露,而且沒有控制點,無法實現(xiàn)細致的權限控制。
客戶端/服務器模式的單點登錄解決方案:該方案是以上兩種方案的結合,具有單一的訪問控制點并且由客戶端的代理提供認證。在服務器一側(cè)有兩種實現(xiàn)方法,一種是獨立網(wǎng)關式,即在服務器前部署單點登錄代理;另一種是嵌入式方式,即將服務器端的單點登錄代理的功能以單點登錄API的形式集中在應用服務器中。這種方案具有兩者的優(yōu)點,具有單一的訪問控制點,便于實現(xiàn)集中、細致的權限控制。這種模型的代表就是Kerberos[14]。
所介紹的單點登錄解決方案,就是基于客戶端/服務器模式的。該方案在移動終端上實現(xiàn)的難點在于如何設計針對Android移動客戶端的Web服務以及如何在SOAP中傳輸票據(jù)信息(tickets)。該方案基于單獨的認證服務器和單點登錄服務器進行身份認證和票據(jù)的獲取與兌換,利用SOAP協(xié)議進行異構系統(tǒng)間票據(jù)信息的傳遞,很好地實現(xiàn)了在Android移動端上認證一次后即可訪問所有授權應用的功能。
2.1 系統(tǒng)框架
該系統(tǒng)實現(xiàn)的是基于APP形式的單點登錄新方法,同時結合了數(shù)字證書身份認證技術。該方法的實現(xiàn)需要如下組成部分:智能終端(Android設備)、智能卡密碼鑰匙(藍牙Key)、APP、身份認證服務器、單點登錄服務器、資源服務器。系統(tǒng)基于以上模塊,結合SOAP協(xié)議和Web服務,在保證系統(tǒng)安全的情況下,更好地實現(xiàn)了移動端的單點登錄操作。其系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)框架
智能終端:主要指Android設備,包括Android智能手機和平板電腦。用戶通過智能終端上的APP,進行身份認證以及相關的業(yè)務操作,操作結果通過智能終端顯示給用戶。
智能卡密碼鑰匙:指存放數(shù)字證書的設備,在該系統(tǒng)指藍牙Key。用戶每次在打開APP之后,進行身份認證時會連接Key,讀取Key中的數(shù)字證書信息,并對數(shù)據(jù)進行簽名驗簽等操作。
APP:是指在智能設備上實現(xiàn)身份認證、展示授權資源和單點登錄等功能的一個客戶端應用程序。用戶通過該程序?qū)I(yè)務進行操作,也是通過該程序?qū)崿F(xiàn)了身份認證、單點登錄等操作。
身份認證服務器:即部署身份認證服務的服務器。在用戶打開APP進行身份認證時,智能終端通過連接藍牙Key,使用獲取到的公鑰證書表明身份和對應的私鑰簽名證實身份,進而實現(xiàn)在智能終端上對用戶的身份進行認證。
單點登錄服務器:即部署單點登錄服務的服務器。對通過身份認證的用戶進行相應資源的單點登錄,使其獲取到訪問授權資源的票據(jù),最終能實現(xiàn)對授權資源的單點登錄。
資源服務器:即部署資源的服務器。包括用戶辦公使用的業(yè)務系統(tǒng)和資源,例如郵件系統(tǒng),人事管理、財務管理等應用。
該系統(tǒng)的典型應用場景:企業(yè)中的用戶通過平板電腦或者手機,登錄APP,使用自己獨有的智能密碼鑰匙進行認證,登錄之后可以查看他所擁有訪問權限的資源,比如工資系統(tǒng)、企業(yè)OA系統(tǒng)、郵件系統(tǒng)等,其他用戶也只能看到自己擁有訪問權限的資源。
2.2 移動終端單點登錄業(yè)務的流程
移動終端基于數(shù)字證書的單點登錄流程如圖2所示。
圖2 流程圖
客戶端獲取授權資源列表的詳細流程如下:用戶打開APP,輸入用戶名,連接藍牙Key,訪問認證服務器請求認證;認證服務器檢查用戶名并響應認證請求,返回一個隨機數(shù),藍牙Key對該隨機數(shù)進行簽名,用戶需輸入藍牙Key的PIN碼,若連續(xù)五次輸入PIN碼錯誤,Key會自動鎖定。藍牙Key執(zhí)行簽名操作后,APP會把該簽名值發(fā)送到認證服務器進行認證;認證服務器收到認證信息后,進行公鑰驗簽操作,若驗證正確,則返回一個認證成功的標識(token),APP憑借此標識向單點登錄服務器獲取用戶對資源的授權信息票據(jù)(tickets),若驗證失敗,則返回認證界面重新請求認證。APP攜帶用戶對資源的tickets去訪問資源服務器,資源服務器與單點登錄服務器進行票據(jù)的兌換,兌換成功后單點登錄服務器返回該用戶的用戶名(username),資源服務器則在數(shù)據(jù)庫表中查出該用戶的授權資源列表,并返回APP呈現(xiàn)給用戶;若票據(jù)兌換失敗,則重新請求用戶對資源的tickets。
經(jīng)過以上步驟,用戶獲得其授權資源,之后單點登錄訪問不同應用的流程如下:用戶點擊相應的應用,APP向單點登錄服務器申請該應用的tickets,單點登錄服務器根據(jù)username返回票據(jù)。客戶端攜帶該票據(jù)去訪問業(yè)務,該業(yè)務訪問單點登錄服務器兌換票據(jù)并驗證,驗證成功則顯示業(yè)務。當用戶對某一應用操作完成后,退出該應用;當需要訪問其他應用時,在資源列表界面重復上面的步驟即可訪問其他應用。
用戶操作完應用后,退出APP,此時客戶端會清除所有的tickets信息和用戶信息。再次打開客戶端時,需重新進行以上的所有操作來進行單點登錄訪問應用。
系統(tǒng)采用基于ESB模型的服務,WebLogic應用服務器,LDAP服務器以及Eclipse(ADT)開發(fā)平臺實現(xiàn)了基于移動端的數(shù)字證書單點登錄;采用XML協(xié)議實現(xiàn)對Webservice的發(fā)布、查找、綁定與描述;采用SOAP協(xié)議來進行移動端與服務器之間的票據(jù)信息的傳遞。
3.1 Web服務的設計
Webservice是連接服務器與移動端的橋梁。移動端通過訪問Webservice來傳遞認證服務器所需的數(shù)據(jù);認證服務器通過Webservice返回給移動端相應的結果。單點登錄服務器也通過Webservice以及SOAP消息向移動端傳遞和兌換票據(jù)信息。有關Webservice的描述語言如下:
認證請求的Webservice:
在Webservice的描述中,該Service的名稱為authenticationByCertificate,進行認證需要移動端傳入的參數(shù)為credentials和serviceUrl,其中credentials是由base64編碼的簽名信息,serviceUrl是字符串類型的服務器地址。
3.2 SOAP消息
SOAP協(xié)議為不同的系統(tǒng)間交換數(shù)據(jù)提供了一個很好的途徑。在整個流程中,基于SOAP的票據(jù)申請與兌換共進行了兩次,一次是對授權資源的票據(jù)的申請與兌換,另一次是訪問授權業(yè)務的票據(jù)的申請與兌換。每次票據(jù)的申請與兌換經(jīng)過如下的幾個過程:APP構造SOAP請求、服務器接收并解析SOAP請求、服務器生成返回的SOAP消息、APP接收并解析收到的SOAP消息。以訪問授權業(yè)務票據(jù)為例,其申請與兌換的SOAP消息的具體代碼設計如下:
在獲取到授權資源列表后,用戶通過點擊相關應用,訪問單點登錄服務器票據(jù)申請接口去申請票據(jù),其數(shù)據(jù)格式設計為:
返回的信息為經(jīng)過base64編碼的票據(jù)信息。其格式設計為:
此時APP攜帶收到的票據(jù)去訪問相應資源,資源收到票據(jù)后,會訪問單點登錄服務器兌換票據(jù)接口來兌換用戶信息,其格式設計為:
單點登錄服務器返回票據(jù)兌換的結果為經(jīng)過base64編碼的用戶名。其格式設計為:
該系統(tǒng)使用了身份認證服務器和單點登錄服務器,相關的應用部署在不同服務器上。測試時所使用的移動終端包括不同Android系統(tǒng)版本的Android手機/平板電腦平臺以及電腦端的單點登錄平臺;測試中所使用的Key包括海泰方圓公司和飛天誠信公司的兩款常用的藍牙Key。不同Android系統(tǒng)版本和不同品牌Key對該應用的適用和支持情況如表1所示。
測試結果表明,在不同的Android系統(tǒng)版本和不同品牌的藍牙Key的環(huán)境下,通過一次藍牙Key的身份認證后,客戶端均能成功獲取到授權資源列表,再次點擊相應的應用后,均能成功訪問應用。說明在不同的Android移動終端上,系統(tǒng)的適用性很強,能夠很好地實現(xiàn)單點登錄訪問資源的功能。
表1 不同Android系統(tǒng)及不同 Key對應用的適用情況表
為了測試該系統(tǒng)相比于傳統(tǒng)的電腦端基于瀏覽器重定向形式的單點登錄所具有的優(yōu)勢,對二者單點登錄訪問資源所花費的時間進行對比。測試中,藍牙Key選用海泰方圓公司藍牙Key作為移動終端單點登錄的典型,讓同一用戶在兩種平臺下去訪問同一資源,計算登錄時間和訪問資源的響應時間。測試結果如表2所示。
表2 不同平臺單點登錄的響應時間
測試結果表明:通過在移動終端上采用基于Android客戶端形式的單點登錄,結合SOAP協(xié)議與Web服務,同時使用數(shù)字證書密碼鑰匙,更好地保證了身份認證的安全性與快捷性。相比原有的分散的應用認證方式以及傳統(tǒng)的基于瀏覽器重定向的單點登錄方式,減少了系統(tǒng)響應時間,系統(tǒng)效率和可用性也大大增加。同時,基于Android客戶端形式的單點登錄適用于不同版本的Android平臺,也能很好地兼容不同廠商的藍牙Key,更好地保證了該方法的實用性。
在企業(yè)移動辦公越來越流行的今天,移動端的單點登錄的作用顯得尤為突出。在移動終端上實現(xiàn)的基于Android應用的單點登錄新方法,采用SOAP協(xié)議與Web服務相結合,將操作系統(tǒng)不同、編程語言不同、數(shù)據(jù)庫不同的應用系統(tǒng)與認證服務器和單點登錄服務器進行整合,解決了異構系統(tǒng)間互操作的問題,提高了認證的效率與靈活性,也為用戶信息的管理帶來了方便。同時,使用藍牙Key和數(shù)字證書技術,完美地保證了系統(tǒng)的安全性;而且使用Android應用程序形式,在移動終端較小的屏幕上將應用更好地展現(xiàn)給用戶,大大提高了系統(tǒng)的便捷性和用戶的可操作性。相比傳統(tǒng)的單點登錄形式,效率有了很大提高,該方法為移動端的單點登錄方法提供了一個新思路。
[1] 孟青春,吳穎川,劉志勤,等.基于移動終端的多終端單點登錄研究與設計[J].計算機工程與設計,2014,35(5):1536-1541.
[2] 王小紅.基于Cookie的單點登錄認證機制實現(xiàn)[J].重慶工商大學學報:自然科學版,2014,31(8):73-78.
[3] Chen Yebin,Xia Bing,Wu Baozhu,et al.Design of web service single sign-on based on ticket and assertion[C]//2nd international conference on artificial intelligence,management science and electronic commerce.[s.l.]:[s.n.],2011.
[4] Ye Q,Bai G,Wang K,et al.Formal analysis of a single sign-on protocol implementation for Android[C]//20th international conference on engineering of complex computer systems.[s.l.]:[s.n.],2015.
[5] Yulin T,Feng Z.The analysis and design for single sign-on in the mobile application data center[C]//3rd international conference on system science,engineering design and manufacturing informatization.[s.l.]:[s.n.],2012.
[6] Armando A,Carbone R,Compagna L,et al.An authentication flaw in browser-based single sign-on protocols:impact and remediations[J].Computers & Security,2013,33(4):41-58.
[7] 陳萱華,林淑玲,楊 玲.云環(huán)境下跨域單點登錄解決方案[J].現(xiàn)代電子技術,2015,38(2):49-51.
[8] 王冠眾,張 斌,費曉飛,等.基于可轉(zhuǎn)換代理簽密的SAML跨域單點登錄認證協(xié)議[J].計算機科學,2015,42(4):106-110.
[9] 李曉永,王福喜.基于票據(jù)的單點登錄系統(tǒng)設計與實現(xiàn)[J].現(xiàn)代電子技術,2015,38(13):85-89.
[10] 鄒曉輝.一種基于數(shù)字證書的跨域單點登錄解決方案[J].長春工業(yè)大學學報:自然科學版,2010,31(6):683-686.
[11] 朱 青.基于CAS的單點登錄系統(tǒng)的設計與實現(xiàn)[D].北京:北京工業(yè)大學,2014.
[12] 霍成義.結合Cookie與票據(jù)共享的單點登錄方案[J].自動化與儀器儀表,2013(3):161-163.
[13] 吳晶晶.PKI關鍵理論與應用技術研究[D].合肥:中國科學技術大學,2008.
[14] 宋小龍.基于數(shù)字證書認證的單點登錄系統(tǒng)設計與實現(xiàn)[D].大連:大連理工大學,2014
A New Method for Single Sign-on at Android Terminal
TIAN Ye1,LI Zhong-xian2,CUI Jun3
(1.College of Electronic Information and Automation,Civil Aviation University of China,Tianjin 300300,China;2.College of Computing,Beijing University of Posts and Telecommunications,Beijing 100876,China;3.Tianjin Ling Chuang Zhi Heng Software Technology Co.,Ltd.,Tianjin 300350,China)
In view of current mobile office which is becoming more and more popular,the major companies have developed a variety of internal mobile terminal applications.Enterprise employees need to log in these applications frequently,and each time they log on to waste a lot of time,reducing the efficiency of the work.At the same time,they need to remember a wide variety of user name and password,not only time-consuming and hard work,but also the existence of security risks.Therefore,it is necessary to develop a new method which can carry on the secure single sign on the mobile terminal.Through the analysis of the prospect and present of terminal application and the existing single sign-on system,a new method for single sign-on based on Android mobile terminal is put forward.This method is based on the digital certificate technology and combines the SOAP protocol and Web Service to make the identity authentication come true.And it uses Android application instead of browser’s redirection technology which can get the authorized resources.Thus the access to different application systems has been constructed by digital certificate identity authentication technology and single sign-on based on Android mobile terminal comes true.The experimental results show that this system supports single sign-on between different systems,and the user just needs to log in once to access to all the authorized resources,and that it can not only improve the efficiency of users,but also bring convenience to the administrator’s management.
single sign-on;digital certificate;intelligent cipher key;Android mobile terminal;SOAP;ticket
2016-06-06
2016-09-14
時間:2017-03-07
天津市高等學??萍及l(fā)展基金計劃項目(20140805)
田 野(1991-),男,碩士研究生,研究方向為信息安全;李忠獻,副教授,從事網(wǎng)絡與信息安全產(chǎn)品研發(fā)、工程項目管理與實施。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170307.0922.068.html
TP31
A
1673-629X(2017)04-0145-05
10.3969/j.issn.1673-629X.2017.04.032