Android操作系統(tǒng)中的單點登錄的身份認證方法
【專利摘要】本發(fā)明公開了一種Android操作系統(tǒng)中的單點登錄的身份認證方法,主要解決現(xiàn)有安卓操作系統(tǒng)中單點登錄身份認證能力不足的問題。其實現(xiàn)步驟是:(1)獲取第三方應用程序傳來的身份信息;(2)通過Android操作系統(tǒng)獲取應用程序的包名信息和簽名信息;(3)比對第三方傳來的身份信息和通過Android獲取的真實的身份信息以驗證身份。本發(fā)明提高了Android操作系統(tǒng)中的單點登錄身份認證的可靠性和身份認證能力,應用范圍廣,易于操作,可用于消除單點登錄系統(tǒng)中存在的安全隱患。
【專利說明】Android操作系統(tǒng)中的單點登錄的身份認證方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機領(lǐng)域,更進一步涉及一種Android操作系統(tǒng)中的單點登錄功能身份認證方法,可用于對第三方的身份認證能力的增強。
【背景技術(shù)】
[0002]單點登錄是在多個應用系統(tǒng)中,用戶只需要登陸一次就可以訪問所有可信的第三方應用的功能,它是一種可以將這次主要的登錄映射到其他應用中用于同一個用戶登錄的機制。單點登錄機制具有以下特點:
[0003]1.改善應用易用性。單點登錄機制對于用戶使用非常方便,用戶只需記住一個用戶名和密碼,而且只需輸入一次,便可登陸其他所有可信應用。
[0004]2.提高應用開發(fā)效率。對于開發(fā)人員來說,通過使用單點登錄系統(tǒng),第三方應用開發(fā)人員可以專注于業(yè)務邏輯,無須自己再設(shè)計身份驗證程序。
[0005]3.增強應用間數(shù)據(jù)共享。由于用戶認證中心提供單點登錄功能,并且提供眾多的接口供第三方應用使用,因此第三方應用在用戶授權(quán)的情況下可以獲取到用戶存儲在用戶認證中心的相關(guān)數(shù)據(jù),增強了應用間數(shù)據(jù)共享能力。
[0006]目前,Android操作系統(tǒng)中已有一些實際的提供單點登陸認證的用戶認證中心。例如騰訊通過QQ互聯(lián)平臺提供單點登陸功能。QQ互聯(lián)平臺是騰訊在Android操作系統(tǒng)中為第三方網(wǎng)站、媒體、終端等產(chǎn)品提供的開放平臺,主要包括QQ登錄、分享等社交組件及開放API等;一方面為互聯(lián)網(wǎng)用戶提供便捷的社交服務和安全的帳號體系,另一方面為第三方合作伙伴打造全新的社會化營銷工具和搜索系統(tǒng),與中國互聯(lián)網(wǎng)產(chǎn)業(yè)共同分享和營造開放的、個性化的社交網(wǎng)絡(luò)。
[0007]當?shù)谌綉檬褂脝吸c登錄時,第三方應用需要向用戶認證中心傳入應用的包名信息和簽名信息。然而在安卓系統(tǒng)中應用程序的包名和簽名信息容易偽造,而用戶認證中心沒有對應用身份的有效性進行驗證,從而存在惡意應用欺騙用戶認證中心的情況。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的目的在于克服上述已有技術(shù)的不足,提出一種Android操作系統(tǒng)中的單點登錄功能身份認證方法,以防止惡意應用程序通過偽造包名手段欺騙用戶認證中心,增強了用戶認證中心對第三方應用的身份認證能力。
[0009]實現(xiàn)本發(fā)明目的的技術(shù)方案是:通過對用戶認證中心進行修改,當用戶認證中心接收到第三方應用請求時,用戶認證中心通過Android操作系統(tǒng)主動獲取第三方應用的簽名、包名等信息,并與第三方應用傳入的參數(shù)進行檢查,判斷第三方應用所提供參數(shù)是否真實,從而解決第三方應用通過偽造簽名、包名對用戶認證中心提出請求的安全性問題,增強Android操作系統(tǒng)中單點登錄的身份認證能力。具體步驟包括如下:
[0010](I)在Android系統(tǒng)中由第三方向用戶認證中心傳送身份認證信息:
[0011]Ia)第三方創(chuàng)建身份認證請求對象Request,并將簽名PkgSig、包名PkgName作為參數(shù)填入Request對象中;
[0012]lb)第三方將填有參數(shù)的請求對象Request傳給用戶認證中心;
[0013](2)用戶認證中心接收第三方傳輸?shù)恼埱髮ο驲equest,并從中讀取第三方傳遞的簽名PkgSig和包名PkgName ;
[0014](3)用戶認證中心查詢身份信息,即通過Android操作系統(tǒng)函數(shù)獲得第三方的真實包名RealPkgName和真實簽名RealPkgSig ;
[0015](4)用戶認證中心驗證身份信息:
[0016]4a)用戶認證中心將讀取的簽名PkgSig與真實簽名RealPkgSig對比,若兩者一致則繼續(xù)步驟4b),否則,身份驗證失??;
[0017]4b)用戶認證中心將讀取的包名PkgName與真實包名RealPkgName對比,若兩者一致,則身份驗證成功,否則,身份驗證失敗。
[0018]本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點:
[0019]1.認證信息準確度高。Android操作系統(tǒng)在系統(tǒng)層面提供了可信的身份信息獲取接口,本發(fā)明通過該接口獲取身份認證信息,惡意軟件無法篡改和偽造,保證了身份認證信息的準確度;
[0020]2.應用廣泛。目前Android操作系統(tǒng)中的單點登錄系統(tǒng)普遍缺少一種身份認證機制,通過本發(fā)明提出的身份認證方法,可以有效的消除大多數(shù)單點登錄系統(tǒng)中存在的安全隱患;
[0021]3.易于操作。本發(fā)明提出的身份認證方法利用了 Android操作系統(tǒng)現(xiàn)有的身份信息獲取接口,從而避免了復雜的身份信息獲取流程,使得本發(fā)明提出的身份認證方法可以很容易的應用到實際的單點登錄系統(tǒng)中。
【專利附圖】
【附圖說明】
[0022]圖1為本發(fā)明的實現(xiàn)總流程圖;
[0023]圖2為本發(fā)明中第三方發(fā)起身份認證請求的子流程圖;
[0024]圖3為本發(fā)明中用戶認證中心接收第三方身份認證請求的子流程圖;
[0025]圖4為本發(fā)明中用戶認證中心查詢身份信息的子流程圖;
[0026]圖5為本發(fā)明中用戶認證中心對比身份信息的子流程圖。
【具體實施方式】
[0027]參照圖1,本發(fā)明的實現(xiàn)步驟如下:
[0028]步驟1,第三方發(fā)起身份認證請求。
[0029]如圖2所示,本步驟的具體實現(xiàn)如下:
[0030]Ia)第三方創(chuàng)建請求對象Request,用于發(fā)起身份認證請求;
[0031]lb)第三方通過Android操作系統(tǒng)提供的putExtra函數(shù),將簽名PkgSig、包名PkgName作為參數(shù)填入請求對象Request中;
[0032]Ic)第三方通過Android操作系統(tǒng)提供的startActivityForResult函數(shù)發(fā)起身份認證請求。
[0033]步驟2,用戶認證中心接收第三方身份認證請求。
[0034]參照圖3,本步驟的具體實現(xiàn)如下:
[0035]2a)用戶認證中心通過注冊接口 protected void onCreate獲取身份認證請求對象 Request ;
[0036]2b)用戶認證中心通過Android操作系統(tǒng)提供的getStringExtra函數(shù)從R請求對象equest中讀取第三方傳遞的簽名PkgSig ;
[0037]2c)用戶認證中心通過Android操作系統(tǒng)提供的getStringExtra函數(shù)從請求對象Request中讀取第三方傳遞的包名PkgName。
[0038]步驟3,用戶認證中心查詢身份信息。
[0039]參照圖4,本步驟的具體實現(xiàn)如下:
[0040]3a)用戶認證中心通過Android操作系統(tǒng)提供的getCallingActivity函數(shù)及getPackageName函數(shù)從Request中獲得第三方真實包名RealPkgName。
[0041]3b)用戶認證中心調(diào)用Android操作系統(tǒng)提供的ActivityThread類庫中的getPackageManager函數(shù),獲取當前進程所屬的包管理器PkgMgr,將真實包名RealPkgName作為參數(shù)調(diào)用包管理器PkgMgr中的getPackagelnfo函數(shù),以獲得真實簽名RealPkgSig。
[0042]步驟4,用戶認證中心驗證身份信息。
[0043]參照圖5,本步驟的具體實現(xiàn)如下:
[0044]4a)比較簽名PkgSig與真實簽名RealPkgSig是否一致:若一致,則繼續(xù)執(zhí)行步驟4b),否則身份驗證失?。?br>
[0045]4b)比較包名PkgName與真實包名RealPkgName是否一致:,若一致,則身份驗證成功,否則,身份驗證失敗。
[0046]以上描述僅是本發(fā)明的一個具體實例,并不夠成對本發(fā)明的任何限制。顯然對于本領(lǐng)域的專業(yè)人員來說,在了解了本
【發(fā)明內(nèi)容】
和原理后,都可能在不背離本發(fā)明原理、結(jié)構(gòu)的情況下,進行形式和細節(jié)上的各種修正和改變,但是這些基于本發(fā)明思想的修正和改變?nèi)栽诒景l(fā)明的權(quán)利要求保護范圍之內(nèi)。
【權(quán)利要求】
1.一種Android操作系統(tǒng)中的單點登錄的身份認證方法,包括如下步驟: (1)在Android系統(tǒng)中由第三方向用戶認證中心傳送身份認證信息: Ia)第三方創(chuàng)建身份認證請求對象Request,并將簽名PkgSig、包名PkgName作為參數(shù)填入Request對象中; Ib)第三方將填有參數(shù)的請求對象Request傳給用戶認證中心; (2)用戶認證中心接收第三方傳輸?shù)恼埱髮ο驲equest,并從中讀取第三方傳遞的簽名 PkgSig 和包名 PkgName ; (3)用戶認證中心查詢身份信息,即通過Android操作系統(tǒng)函數(shù)獲得第三方的真實包名 RealPkgName 和真實簽名 RealPkgSig ; (4)用戶認證中心驗證身份信息: 4a)用戶認證中心將讀取的簽名PkgSig與真實簽名RealPkgSig對比,若兩者一致則繼續(xù)步驟4b),否則,身份驗證失?。? 4b)用戶認證中心將讀取的包名PkgName與真實包名RealPkgName對比,若兩者一致,則身份驗證成功,否則,身份驗證失敗。
2.根據(jù)權(quán)利要求1所述的Android操作系統(tǒng)中的單點登錄的身份認證方法,其特征在于,所述步驟Ia)中將簽名PkgSig、包名PkgName作為參數(shù)填入請求對象Request中,是通過Android操作系統(tǒng)提供的putExtra函數(shù)實現(xiàn)。
3.根據(jù)權(quán)利要求1所述的Android操作系統(tǒng)中的單點登錄的身份認證方法,其特征在于,所述步驟(2)中讀取第三方傳遞的簽名PkgSig和包名PkgName,是通過Android操作系統(tǒng)提供的getStringExtra函數(shù)實現(xiàn)。
4.根據(jù)權(quán)利要求1所述的Android操作系統(tǒng)中的單點登錄功能的認證方法,其特征在于,所述步驟(3)中獲得第三方的真實包名RealPkgName,是通過Android操作系統(tǒng)提供的getCalIingActivity 函數(shù)和 getPackageName 函數(shù)實現(xiàn)。
5.根據(jù)權(quán)利要求1所述的Android操作系統(tǒng)中的單點登錄功能的認證方法,其特征在于,所述步驟(3)中獲得第三方的真實簽名RealPkgSig,是將真實包名RealPkgName作為參數(shù),通過調(diào)用Android操作系統(tǒng)的getPackagelnfo函數(shù)獲得。
【文檔編號】H04L29/06GK104486318SQ201410748385
【公開日】2015年4月1日 申請日期:2014年12月8日 優(yōu)先權(quán)日:2014年12月8日
【發(fā)明者】陳東, 楊超, 馬建峰, 董超, 周洪丞, 張明月, 張坤, 姚亮 申請人:西安電子科技大學