專利名稱:基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)通信技術(shù),尤其涉及一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法、裝置及系統(tǒng)。
背景技術(shù):
開(kāi)放平臺(tái)通過(guò)軟件系統(tǒng)公開(kāi)應(yīng)用程序編程接口(API)或函數(shù)(function),將服務(wù)封裝成一系列計(jì)算機(jī)易識(shí)別的數(shù)據(jù)接口,即開(kāi)放的應(yīng)用程序接口(Open API),供第三方應(yīng)用調(diào)用,使外部的第三方應(yīng)用程序可以通過(guò)OpenAPI,增加該軟件系統(tǒng)功能或使用該軟件系統(tǒng)的資源。
隨著移動(dòng)互聯(lián)網(wǎng)以及開(kāi)放平臺(tái)的興起,同一客戶端上安裝有基于同一開(kāi)放平臺(tái)的多個(gè)應(yīng)用的現(xiàn)象日益普遍。例如,目前的企業(yè)應(yīng)用環(huán)境中,往往具有較多的應(yīng)用系統(tǒng),舉例來(lái)說(shuō),在同一客戶端上,安裝有辦公自動(dòng)化(OA)應(yīng)用系統(tǒng)、財(cái)務(wù)管理應(yīng)用系統(tǒng)、檔案管理應(yīng)用系統(tǒng)、信息查詢應(yīng)用系統(tǒng)等,這些應(yīng)用系統(tǒng)基于同一開(kāi)放平臺(tái),服務(wù)于企業(yè)的信息化建設(shè),為企業(yè)帶來(lái)了較好的效益。但是,每一應(yīng)用系統(tǒng)都需要用戶預(yù)先設(shè)置用戶名和密碼信息進(jìn)行注冊(cè),不同的應(yīng)用系統(tǒng),設(shè)置的用戶名和密碼信息不一定相同,用戶每次在使用其中的任一應(yīng)用系統(tǒng)時(shí),都必須輸入用戶名和用戶密碼,進(jìn)行身份驗(yàn)證,獲取授權(quán)后才能使用該應(yīng)用系統(tǒng)。這樣,導(dǎo)致在同一客戶端中,同一用戶通過(guò)同一開(kāi)放平臺(tái)獲取多個(gè)應(yīng)用的授權(quán)時(shí), 需要用戶相應(yīng)執(zhí)行多次輸入用戶名和用戶密碼以登錄開(kāi)放平臺(tái),開(kāi)放平臺(tái)根據(jù)用戶輸入的用戶名和密碼信息進(jìn)行認(rèn)證授權(quán)后,通知用戶獲取應(yīng)用的授權(quán),使得用戶實(shí)現(xiàn)應(yīng)用的授權(quán)操作繁瑣,多應(yīng)用登錄流程復(fù)雜。
為了降低用戶的多次登錄流程,現(xiàn)有技術(shù)提出了客戶端的單點(diǎn)登錄(SSO,Single Sign On)技術(shù)方案,即通過(guò)互聯(lián)網(wǎng)瀏覽器應(yīng)用的Cookie機(jī)制實(shí)現(xiàn)客戶端的單點(diǎn)登錄。其中,SSO是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一,通過(guò)SS0,在多個(gè)應(yīng)用系統(tǒng)中, 用戶在同一個(gè)客戶端上使用基于同一個(gè)開(kāi)放平臺(tái)的多個(gè)應(yīng)用時(shí),只需要向開(kāi)放平臺(tái)進(jìn)行首次登錄,開(kāi)放平臺(tái)為了便于辨別用戶身份、進(jìn)行session跟蹤,將經(jīng)過(guò)授權(quán)的用戶相關(guān)信息儲(chǔ)存在用戶客戶端中。Cookie信息由進(jìn)行授權(quán)認(rèn)證的開(kāi)放平臺(tái)生成,發(fā)送給用戶代理 (User-Agent),例如,客戶端的系統(tǒng)瀏覽器,系統(tǒng)瀏覽器將開(kāi)放平臺(tái)生成的Cookie的鍵值 (key/value)保存到指定目錄下的文本文件內(nèi),通過(guò)將瀏覽器設(shè)置為啟用cookie,在下一次請(qǐng)求同一應(yīng)用的服務(wù)時(shí),客戶端可以獲取文本文件內(nèi)存儲(chǔ)的Cookie信息,攜帶在授權(quán)請(qǐng)求中,發(fā)送至開(kāi)放平臺(tái),從而減少用戶進(jìn)行授權(quán)需要輸入的用戶名和密碼信息,簡(jiǎn)化用戶操作。也就是說(shuō),通過(guò)Cookie機(jī)制,可以避免用戶多次登錄時(shí)需要多次輸入認(rèn)證信息的技術(shù)問(wèn)題,通過(guò)用戶在第一次登錄授權(quán)時(shí),設(shè)置Cookie,存儲(chǔ)至客戶端的系統(tǒng)瀏覽器內(nèi),再次進(jìn)行授權(quán)時(shí),可以通過(guò)設(shè)置的Cookie識(shí)別用戶。
圖1為現(xiàn)有基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法流程示意圖。參見(jiàn)圖1,以用戶通過(guò)開(kāi)放平臺(tái)獲取第一應(yīng)用(第三方應(yīng)用)的授權(quán)為例,該流程包括
步驟101, 第一應(yīng)用在客戶端監(jiān)聽(tīng)端口;
本步驟中,第一應(yīng)用需要用戶登錄開(kāi)放平臺(tái)獲取授權(quán),首先在本地客戶端監(jiān)聽(tīng)一個(gè)端口,將自己作為web服務(wù)器。
步驟102,在首次認(rèn)證時(shí),調(diào)用開(kāi)放平臺(tái)瀏覽器,設(shè)置回調(diào)地址為應(yīng)用的本地地址信息以及端口信息;
本步驟中,第一應(yīng)用將自己作為web服務(wù)器,調(diào)用開(kāi)放平臺(tái)瀏覽器,打開(kāi)該開(kāi)放平臺(tái)的授權(quán)頁(yè)面,設(shè)置回調(diào)地址為應(yīng)用的本地地址(Iocalhost)以及端口。
步驟103,用戶通過(guò)開(kāi)放平臺(tái)的授權(quán)頁(yè)面執(zhí)行登錄及授權(quán);
步驟104,授權(quán)頁(yè)面將授權(quán)結(jié)果設(shè)置到統(tǒng)一資源定位符(URL, UniformResource Locator)參數(shù),設(shè)置該用戶的Cookie信息到系統(tǒng)瀏覽器內(nèi),并重定向?yàn)g覽器到回調(diào)地址;
本步驟中,用戶登錄并授權(quán)后,授權(quán)頁(yè)面將授權(quán)結(jié)果設(shè)置到URL參數(shù),設(shè)置該用戶的Cookie到系統(tǒng)瀏覽器內(nèi),然后重定向?yàn)g覽器到回調(diào)地址。這樣,第一應(yīng)用可以接收到用戶的授權(quán)結(jié)果。
步驟105,第一應(yīng)用進(jìn)行再次登錄,在客戶端監(jiān)聽(tīng)端口 ;
步驟106,調(diào)用開(kāi)放平臺(tái)的系統(tǒng)瀏覽器,設(shè)置回調(diào)地址為應(yīng)用的本地地址信息以及端口信息;
本步驟中,通過(guò)設(shè)置回調(diào)地址為應(yīng)用的本地地址信息,可以自動(dòng)獲取系統(tǒng)瀏覽器內(nèi)的Cookie信息,從而無(wú)需用戶再次輸入用戶名及密碼信息,減少了輸入操作。
步驟107,開(kāi)放平臺(tái)的授權(quán)頁(yè)面通過(guò)系統(tǒng)瀏覽器請(qǐng)求時(shí)攜帶的Cookie,識(shí)別用戶身份。
本步驟中,當(dāng)?shù)谝粦?yīng)用需要用戶再次登錄開(kāi)放平臺(tái)時(shí),按照與第一應(yīng)用相似的方式打開(kāi)開(kāi)放平臺(tái)的授權(quán)頁(yè)面,此時(shí),開(kāi)放平臺(tái)的授權(quán)頁(yè)面通過(guò)瀏覽器請(qǐng)求時(shí)帶來(lái)的Cookie 識(shí)別出該用戶的身份,使得用戶不需要進(jìn)行輸入用戶名及密碼信息的操作。
由上述可見(jiàn),現(xiàn)有基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法,在基于同一開(kāi)放平臺(tái)的客戶端中,對(duì)于客戶端安裝有多個(gè)應(yīng)用、且不斷有新的應(yīng)用時(shí),都需要用戶輸入相應(yīng)的用戶名及密碼信息,使得用戶實(shí)現(xiàn)應(yīng)用的授權(quán)操作還是較為繁瑣,獲取應(yīng)用授權(quán)所需的時(shí)間較長(zhǎng)、應(yīng)用授權(quán)效率較低;進(jìn)一步地,應(yīng)用必須通過(guò)系統(tǒng)瀏覽器進(jìn)行授權(quán)操作,如果應(yīng)用內(nèi)部嵌入了瀏覽器,將無(wú)法共享Cookie,使得再次登錄仍然需要用戶名及密碼信息;而且, Cookie信息具有生命周期,即具有過(guò)期時(shí)間限制,如果Cookie過(guò)期,將需要用戶重新輸入用戶名及密碼信息進(jìn)行登錄;此外,Cookie的生命周期不受應(yīng)用控制,應(yīng)用也無(wú)法自動(dòng)重新刷新Cookie。發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供 一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法,提高應(yīng)用授權(quán)效率。
本發(fā)明的實(shí)施例還提供一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的裝置,提高應(yīng)用授權(quán)效率。
本發(fā)明的實(shí)施例還提供一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的系統(tǒng),提高應(yīng)用授權(quán)效率。
為達(dá)到上述目的,本發(fā)明實(shí)施例提供的一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法,包括
接收第三方應(yīng)用發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;
確定客戶端中存儲(chǔ)有單點(diǎn)登錄SSO客戶端應(yīng)用映射的訪問(wèn)令牌,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;
接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求, 獲取第三方應(yīng)用標(biāo)識(shí);
將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái);
接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用。
其中,所述確定客戶端中存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌包括
確定客戶端中安裝有SSO客戶端應(yīng)用;
查詢客戶端中是否存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌信息,如果有,獲取存儲(chǔ)的訪問(wèn)令牌信息,執(zhí)行所述展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;否則,向開(kāi)放平臺(tái)發(fā)送 SSO客戶端應(yīng)用授權(quán)請(qǐng)求,攜帶用戶標(biāo)識(shí)、密碼信息以及SSO客戶端應(yīng)用標(biāo)識(shí),接收開(kāi)放平臺(tái)返回的SSO客戶端應(yīng)用授權(quán)請(qǐng)求響應(yīng),獲取攜帶的訪問(wèn)令牌信息,執(zhí)行所述展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息。
其中,所述方法進(jìn)一步包括
如果確定客戶端中未安裝有SSO客戶端應(yīng)用,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)。
其中,所述接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng)包括
開(kāi)放平臺(tái)接收代理授權(quán)請(qǐng)求,獲取代理授權(quán)請(qǐng)求中攜帶的訪問(wèn)令牌;
根據(jù)存儲(chǔ)的訪問(wèn)令牌與用戶及應(yīng)用的映射關(guān)系,獲取用戶及應(yīng)用信息,對(duì)該用戶及該應(yīng)用進(jìn)行認(rèn)證;
認(rèn)證通過(guò)后,獲取代理授權(quán)請(qǐng)求中攜帶的第三方應(yīng)用標(biāo)識(shí)信息,對(duì)第三方應(yīng)用進(jìn)行合法性驗(yàn)證;
在合法性驗(yàn)證通過(guò)后,為該第三方應(yīng)用及用戶分配第三方應(yīng)用訪問(wèn)令牌,攜帶在代理授權(quán)請(qǐng)求響應(yīng)中,輸出至客戶端中的SSO客戶端應(yīng)用。
其中,所述訪問(wèn)令牌信息映射唯一的用戶信息以及唯一的應(yīng)用信息。
其中,所述方法進(jìn)一步包括
如果確定接收的授權(quán)請(qǐng)求中攜帶有第三方應(yīng)用訪問(wèn)令牌信息,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)。
一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的裝置,該裝置包括第三方應(yīng)用模塊、 SSO客戶端應(yīng)用模塊以及訪問(wèn)令牌存儲(chǔ)模塊,其中,
第三方應(yīng)用模塊,用于向SSO客戶端應(yīng)用模塊發(fā)起授權(quán)請(qǐng)求,攜帶第三方應(yīng)用標(biāo)識(shí);接收SSO客戶端應(yīng)用模塊輸出的第三方應(yīng)用訪問(wèn)令牌信息,存儲(chǔ)至訪問(wèn)令牌存儲(chǔ)模塊;
SSO客戶端 應(yīng)用模塊,用于接收第三方應(yīng)用模塊發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;在確定訪問(wèn)令牌存儲(chǔ)模塊中存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌后,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)服務(wù)器返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用模塊。
較佳地,所述SSO客戶端應(yīng)用模塊包括授權(quán)請(qǐng)求處理單元、第一判斷單元、第二判斷單元、SSO客戶端應(yīng)用單元、展示單元以及代理單元,其中,
授權(quán)請(qǐng)求處理單元,用于接收第三方應(yīng)用模塊發(fā)起的授權(quán)請(qǐng)求,判斷接收的授權(quán)請(qǐng)求中是否攜帶有第三方應(yīng)用訪問(wèn)令牌信息,如果沒(méi)有,將授權(quán)請(qǐng)求輸出至第一判斷單元; 如果有,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)服務(wù)器;
第一判斷單元,用于接收授權(quán)請(qǐng)求,查詢客戶端中是否安裝有SSO客戶端應(yīng)用,如果沒(méi)有,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)服務(wù)器;如果有,將授權(quán)請(qǐng)求分別輸出至第二判斷單元以及代理單元;
第二判斷單元,用于接收授權(quán)請(qǐng)求,查詢?cè)L問(wèn)令牌存儲(chǔ)模塊中是否存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌,如果有,將訪問(wèn)令牌對(duì)應(yīng)的用戶信息輸出至展示單元;如果沒(méi)有,向SSO客戶端應(yīng)用單元輸出觸發(fā)信息;
SSO客戶端應(yīng)用單元,用于接收觸發(fā)信息,向開(kāi)放平臺(tái)服務(wù)器發(fā)送SSO客戶端應(yīng)用授權(quán)請(qǐng)求,攜帶用戶標(biāo)識(shí)、密碼信息以及SSO客戶端應(yīng)用標(biāo)識(shí);接收開(kāi)放平臺(tái)服務(wù)器返回的 SSO客戶端應(yīng)用授權(quán)請(qǐng)求響應(yīng),獲取攜帶的訪問(wèn)令牌信息,存儲(chǔ)至訪問(wèn)令牌存儲(chǔ)模塊,并將訪問(wèn)令牌對(duì)應(yīng)的用戶信息輸出至展示單元;
展示單元,用于展示接收的用戶信息;
代理單元,用于獲取用戶從展示單元展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)服務(wù)器返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用模塊。
一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的系統(tǒng),該系統(tǒng)包括客戶端以及開(kāi)放平臺(tái)服務(wù)器,其中,
客戶端,用于接收第三方應(yīng)用發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;在確定存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌后,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用;
開(kāi)放平臺(tái)服務(wù)器,用于解析接收的代理授權(quán)請(qǐng)求,獲取代理授權(quán)請(qǐng)求中攜帶的訪問(wèn)令牌,根據(jù)存儲(chǔ)的映射關(guān)系,獲取訪問(wèn)令牌映射的用戶信息,進(jìn)行授權(quán)認(rèn)證;根據(jù)代理授權(quán)請(qǐng)求中攜帶的第三方應(yīng)用標(biāo)識(shí),進(jìn)行驗(yàn)證,在驗(yàn)證通過(guò)后,根據(jù)用戶信息以及第三方應(yīng)用標(biāo)識(shí)信息,生成第三方應(yīng)用訪問(wèn)令牌,封裝在代理授權(quán)請(qǐng)求響應(yīng)中,輸出至客戶端。
較佳地,所述 客戶端包括第三方應(yīng)用模塊、SSO客戶端應(yīng)用模塊以及訪問(wèn)令牌存儲(chǔ)模塊,其中,
第三方應(yīng)用模塊,用于向SSO客戶端應(yīng)用模塊發(fā)起授權(quán)請(qǐng)求,攜帶第三方應(yīng)用標(biāo)識(shí);接收SSO客戶端應(yīng)用模塊輸出的第三方應(yīng)用訪問(wèn)令牌信息,存儲(chǔ)至訪問(wèn)令牌存儲(chǔ)模塊;
SSO客戶端應(yīng)用模塊,用于接收第三方應(yīng)用模塊發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;在確定訪問(wèn)令牌存儲(chǔ)模塊中存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌后,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)服務(wù)器返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用模塊。
由上述技術(shù)方案可見(jiàn),本發(fā)明實(shí)施例提供的一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法、裝置及系統(tǒng),接收第三方應(yīng)用發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;確定客戶端中存儲(chǔ)有單點(diǎn)登錄SSO客戶端應(yīng)用映射的訪問(wèn)令牌,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息, 映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái);接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用。這樣, 第三方應(yīng)用將授權(quán)請(qǐng)求發(fā)送至SSO客戶端應(yīng)用,SSO客戶端應(yīng)用讀取存儲(chǔ)的訪問(wèn)令牌信息, 映射為用戶信息并進(jìn)行展示,用戶可以通過(guò)SSO客戶端應(yīng)用展示的用戶信息列表中選取用戶信息,從而獲取第三方應(yīng)用授權(quán)時(shí),無(wú)需用戶手動(dòng)輸入用戶名和密碼信息,簡(jiǎn)化了用戶操作,降低了第三方應(yīng)用授權(quán)所需的時(shí)間,從而提高了應(yīng)用授權(quán)效率。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,以下將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹。顯而易見(jiàn)地,以下描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員而言,還可以根據(jù)這些附圖所示實(shí)施例得到其它的實(shí)施例及其附圖。
圖1為現(xiàn)有基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法流程示意圖。
圖2為本發(fā)明實(shí)施例基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法流程示意圖。
圖3為本發(fā)明實(shí)施例實(shí)現(xiàn)SSO客戶端應(yīng)用授權(quán)的方法流程示意圖。
圖4為本發(fā)明實(shí)施例基于SSO客戶端應(yīng)用實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法流程示意圖。
圖5為本發(fā)明實(shí)施例實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法另一流程示意圖。
圖6為本發(fā)明實(shí)施例基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下將結(jié)合附圖對(duì)本發(fā) 明各實(shí)施例的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例, 本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所得到的所有其它實(shí)施例,都屬于本發(fā)明所保護(hù)的范圍。
現(xiàn)有基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法,在基于同一開(kāi)放平臺(tái)的客戶端中,在獲取應(yīng)用授權(quán)時(shí),都需要用戶輸入相應(yīng)的用戶名及密碼信息,應(yīng)用授權(quán)效率較低。
本發(fā)明實(shí)施例中,考慮到基于開(kāi)放平臺(tái)的客戶端中,具有一些由開(kāi)放平臺(tái)授權(quán)的并有代理授權(quán)權(quán)限的客戶端應(yīng)用,例如,開(kāi)放平臺(tái)授權(quán)的并具有代理授權(quán)權(quán)限的官方客戶端應(yīng)用,即SSO客戶端應(yīng)用,而該SSO客戶端應(yīng)用可以代理其它未授權(quán)的第三方應(yīng)用發(fā)起代理授權(quán)請(qǐng)求,因而,在第三方應(yīng)用發(fā)起授權(quán)請(qǐng)求時(shí),設(shè)置通過(guò)SSO客戶端應(yīng)用進(jìn)行代理,由于SSO客戶端應(yīng)用經(jīng)過(guò)授權(quán)后,在客戶端存儲(chǔ)有用戶名和密碼信息映射的訪問(wèn)令牌 (access_token)信息,這樣,用戶可以通過(guò)SSO客戶端應(yīng)用展示的訪問(wèn)令牌列表中選取訪問(wèn)令牌,從而從開(kāi)放平臺(tái)獲取授權(quán)認(rèn)證,無(wú)需手動(dòng)輸入用戶名和密碼信息,降低第三方應(yīng)用授權(quán)所需的時(shí)間,從而提聞應(yīng)用授權(quán)效率。
圖2為本發(fā)明實(shí)施例基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法流程示意圖。在本發(fā)明實(shí)施例中,涉及三部分,第一部分為未授權(quán)的第三方應(yīng)用,簡(jiǎn)稱為第三方應(yīng)用;第二部分為已授權(quán)的并且有代理授權(quán)權(quán)限的客戶端應(yīng)用,簡(jiǎn)稱為SSO客戶端應(yīng)用;第三部分為服務(wù)授權(quán)的開(kāi)放平臺(tái),簡(jiǎn)稱為開(kāi)放平臺(tái)。參見(jiàn)圖2,該流程包括
步驟201,接收第三方應(yīng)用發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;
本步驟中,基于同一開(kāi)放平臺(tái)的客戶端中可能安裝有一個(gè)或多個(gè)應(yīng)用,在用戶獲取每一應(yīng)用服務(wù)前,需要從開(kāi)放平臺(tái)獲取該應(yīng)用的授權(quán)。
如果用戶已獲取該應(yīng)用的授權(quán),則在客戶端中,存儲(chǔ)有由開(kāi)放平臺(tái)對(duì)用戶進(jìn)行授權(quán)認(rèn)證后,下發(fā)的針對(duì)該用戶以及該應(yīng)用的訪問(wèn)令牌信息。也就是說(shuō),每一訪問(wèn)令牌信息映射唯一的用戶標(biāo)識(shí)以及唯一的應(yīng)用標(biāo)識(shí),作為應(yīng)用訪問(wèn)開(kāi)放平臺(tái)應(yīng)用接口時(shí)的身份標(biāo)識(shí), 包含有應(yīng)用和用戶的身份信息,代表了用戶和應(yīng)用的授權(quán)關(guān)系。其中,用戶標(biāo)識(shí)可以是用戶名信息或用戶賬號(hào)信息。
如果接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息,表明該用戶為首次申請(qǐng)登錄認(rèn)證。
較佳地,該方法還可以進(jìn)一步包括
如果確定接收的授權(quán)請(qǐng)求中攜帶有第三方應(yīng)用訪問(wèn)令牌信息,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)。
本步驟中,如果接收的授權(quán)請(qǐng)求中攜帶有第三方應(yīng)用訪問(wèn)令牌信息,表明該用戶為首次后的申請(qǐng)登錄認(rèn)證,與現(xiàn)有技術(shù)相同。
步驟202,確定客 戶端中存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;
本步驟中,如前所述,訪問(wèn)令牌信息映射唯一的用戶信息以及唯一的應(yīng)用信息,用戶信息以用戶標(biāo)識(shí)進(jìn)行表示,可以是用戶名信息或用戶賬號(hào)信息。
確定客戶端中存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌包括
All,確定客戶端中安裝有SSO客戶端應(yīng)用;
本步驟中,可以通過(guò)客戶端操作系統(tǒng)的本地服務(wù)機(jī)制檢測(cè)客戶端中是否安裝有 SSO客戶端應(yīng)用,關(guān)于檢測(cè)的詳細(xì)流程,具體可參見(jiàn)相關(guān)技術(shù)文獻(xiàn),在此不再贅述。
實(shí)際應(yīng)用中,該方法可以進(jìn)一步包括
如果確定客戶端中未安裝有SSO客戶端應(yīng)用,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)。
A12,查詢客戶端中是否存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌信息,如果有,執(zhí)行步驟A13,否則,執(zhí)行步驟A14 ;
本步驟中,在預(yù)先設(shè)置的客戶端用于存儲(chǔ)訪問(wèn)令牌的文件目錄中,查詢是否存儲(chǔ)有訪問(wèn)令牌信息。
A13,獲取存儲(chǔ)的訪問(wèn)令牌信息,執(zhí)行所述展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;
本步驟中,客戶端中可能具有多個(gè)SSO客戶端應(yīng)用,對(duì)于每一 SSO客戶端應(yīng)用中的不同用戶,映射不同的訪問(wèn)令牌信息。將存儲(chǔ)的所有訪問(wèn)令牌信息進(jìn)行展示,以便用戶進(jìn)行選擇。
A14,向開(kāi)放平臺(tái)發(fā)送SSO客戶端應(yīng)用授權(quán)請(qǐng)求,攜帶用戶標(biāo)識(shí)、密碼信息以及SSO 客戶端應(yīng)用標(biāo)識(shí);
本步驟中,對(duì)SSO客戶端應(yīng)用執(zhí)行登錄認(rèn)證流程。如果有多個(gè)SSO客戶端應(yīng)用,則可以隨機(jī)從中選取一個(gè)SSO客戶端應(yīng)用進(jìn)行登錄認(rèn)證。
A15,接收開(kāi)放平臺(tái)返回的SSO客戶端應(yīng)用授權(quán)請(qǐng)求響應(yīng),獲取攜帶的訪問(wèn)令牌信息,執(zhí)行所述展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息。
本步驟中,開(kāi)放平臺(tái)對(duì)SSO客戶端應(yīng)用進(jìn)行登錄認(rèn)證后,為該SSO客戶端應(yīng)用以及用戶分配用于接入認(rèn)證的訪問(wèn)令牌,并輸出至客戶端進(jìn)行存儲(chǔ),客戶端將接收的訪問(wèn)令牌對(duì)應(yīng)的用戶信息進(jìn)行展示。
步驟203,接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);
本步驟中,如果展示的用戶信息為多個(gè),則根據(jù)預(yù)先設(shè)置的選取策略,從中選取一個(gè)進(jìn)行登錄認(rèn)證。
步驟204,將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中, 輸出至開(kāi)放平臺(tái);
本步驟中,客戶端中的SSO客戶端應(yīng)用根據(jù)訪問(wèn)令牌以及第三方應(yīng)用標(biāo)識(shí),生成代理授權(quán)請(qǐng)求,執(zhí)行代理授權(quán)流程。
步驟205,接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用。
本步驟中,接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng)包括
A21,開(kāi)放平臺(tái)接收代理授權(quán)請(qǐng)求,獲取代理授權(quán)請(qǐng)求中攜帶的訪問(wèn)令牌;
A22,根據(jù)存儲(chǔ)的訪問(wèn)令牌與用戶及應(yīng)用的映射關(guān)系,獲取用戶及應(yīng)用信息,對(duì)該用戶及該應(yīng)用進(jìn)行認(rèn)證;
本步驟中,開(kāi)放平臺(tái)中預(yù)先存儲(chǔ)有各訪問(wèn)令牌映射的SSO客戶端應(yīng)用標(biāo)識(shí)以及用戶標(biāo)識(shí)(uid),開(kāi)放平臺(tái)接收到SSO客戶端應(yīng)用的代理授權(quán)請(qǐng)求后,先根據(jù)存儲(chǔ)的映射關(guān)系,通過(guò)接收的訪問(wèn)令牌獲取到SSO客戶端應(yīng)用標(biāo)識(shí)以及當(dāng)前用戶uid,通過(guò)SSO客戶端應(yīng)用標(biāo)識(shí)檢查該應(yīng)用是否有SSO權(quán)限,以及該用戶是否合法。因而,通過(guò)訪問(wèn)令牌獲取用戶 uid,無(wú)需用戶手動(dòng)輸入用戶uid,這樣,避免了用戶再次登錄的成本。
本發(fā)明實(shí)施例 中,由于訪問(wèn)令牌具有應(yīng)用和用戶的一對(duì)一授權(quán)關(guān)系,開(kāi)放平臺(tái)通過(guò)保存這種映射的授權(quán)關(guān)系,從而可以通過(guò)接收的訪問(wèn)令牌,獲知用戶的身份,使得用戶無(wú)需再次通過(guò)輸入用戶名和密碼的方式進(jìn)行身份驗(yàn)證。
根據(jù)用戶及應(yīng)用信息,對(duì)該用戶及該應(yīng)用進(jìn)行認(rèn)證的詳細(xì)流程,具體可參見(jiàn)相關(guān)技術(shù)文獻(xiàn)。
A23,認(rèn)證通過(guò)后,獲取代理授權(quán)請(qǐng)求中攜帶的第三方應(yīng)用標(biāo)識(shí)信息,對(duì)第三方應(yīng)用進(jìn)行合法性驗(yàn)證;
本步驟中,開(kāi)放平臺(tái)通過(guò)SSO客戶端應(yīng)用傳遞的第三方應(yīng)用標(biāo)識(shí)參數(shù),驗(yàn)證第三方應(yīng)用的權(quán)限,例如,通過(guò)第三方應(yīng)用標(biāo)識(shí)來(lái)檢查該第三方應(yīng)用是否處于被封禁等狀態(tài)。
A24,在合法性驗(yàn)證通過(guò)后,為該第三方應(yīng)用及用戶分配第三方應(yīng)用訪問(wèn)令牌,攜帶在代理授權(quán)請(qǐng)求響應(yīng)中,輸出至客戶端中的SSO客戶端應(yīng)用。
本步驟中,開(kāi)放平臺(tái)通過(guò)第三方應(yīng)用標(biāo)識(shí)以及當(dāng)前用戶uid生成第三方應(yīng)用訪問(wèn)令牌,在生成第三方應(yīng)用訪問(wèn)令牌后,建立第三方應(yīng)用訪問(wèn)令牌、第三方應(yīng)用以及用戶的映射關(guān)系,并進(jìn)行存儲(chǔ)??蛻舳嗽诮邮盏酱硎跈?quán)請(qǐng)求響應(yīng)后,建立第三方應(yīng)用訪問(wèn)令牌、第三方應(yīng)用以及用戶的映射關(guān)系并存儲(chǔ)。
下面舉幾個(gè)具體實(shí)施例,對(duì)本發(fā)明實(shí)施例的基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法中各分支流程進(jìn)行詳細(xì)描述。
圖3為本發(fā)明實(shí)施例實(shí)現(xiàn)SSO客戶端應(yīng)用授權(quán)的方法流程示意圖。開(kāi)放平臺(tái)尚未授權(quán)SSO客戶端應(yīng)用,參見(jiàn)圖3,該流程包括
步驟301,SSO客戶端應(yīng)用向開(kāi)放平臺(tái)發(fā)起SSO客戶端應(yīng)用授權(quán)請(qǐng)求;
本步驟中,SSO客戶端應(yīng)用授權(quán)請(qǐng)求中攜帶有當(dāng)前用戶標(biāo)識(shí)以及SSO客戶端應(yīng)用標(biāo)識(shí)。
步驟302,開(kāi)放平臺(tái)根據(jù)當(dāng)前用戶標(biāo)識(shí)查詢?cè)摦?dāng)前用戶沒(méi)有進(jìn)行登錄認(rèn)證,向SSO 客戶端應(yīng)用返回身份認(rèn)證請(qǐng)求;
本步驟中,開(kāi)放平臺(tái)發(fā)送身份認(rèn)證請(qǐng)求,要求驗(yàn)證用戶身份。
步驟303,用戶通過(guò)SSO客戶端應(yīng)用輸入用戶名及密碼信息,SSO客戶端應(yīng)用向開(kāi)放平臺(tái)提交用戶名及密碼信息;
本步驟中,用戶名及密碼信息用于對(duì)用戶進(jìn)行身份驗(yàn)證。
步驟304,開(kāi)放平臺(tái)根據(jù)接收的用戶名及密碼信息進(jìn)行分身驗(yàn)證,向SSO客戶端應(yīng)用返回訪問(wèn)令牌信息;
本步驟中,訪問(wèn)令牌映射SSO客戶端應(yīng)用以及用戶名。
步驟305,SSO客戶端應(yīng)用存儲(chǔ)訪問(wèn)令牌。
圖4為本發(fā)明實(shí)施例基于SSO客戶端應(yīng)用實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法流程示意圖。開(kāi)放平臺(tái)已授權(quán)SSO客戶端應(yīng)用,參見(jiàn)圖4,該流程包括
步驟401,接收第三方應(yīng)用發(fā)起的授權(quán)請(qǐng)求,獲取客戶端中存儲(chǔ)的SSO客戶端應(yīng)用的訪問(wèn)令牌信息;
本步驟中,如果客戶端存儲(chǔ)有多個(gè)訪問(wèn)令牌信息,則獲取所有SSO客戶端應(yīng)用映射的訪問(wèn)令牌信息。
步驟402,根據(jù)存儲(chǔ)的映射關(guān)系,獲取訪問(wèn)令牌信息映射的用戶名信息并進(jìn)行展示;
本步驟中,S SO客戶端應(yīng)用接收到第三方應(yīng)用發(fā)送的授權(quán)請(qǐng)求時(shí),檢查SSO客戶端應(yīng)用中是否已經(jīng)有登錄用戶,如果有,則顯示賬號(hào)列表讓用戶選擇。即將存儲(chǔ)的該SSO客戶端應(yīng)用下的訪問(wèn)令牌信息,分別映射為相應(yīng)的用戶名信息,向用戶進(jìn)行展示,以使用戶從中選取。
步驟403,接收用戶選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí)(client_id);
本步驟中,SSO客戶端應(yīng)用代理第三方應(yīng)用,向開(kāi)放平臺(tái)發(fā)起代理授權(quán)請(qǐng)求,將當(dāng)前用戶的access_token以及第三方應(yīng)用的client_id作為參數(shù),傳遞給開(kāi)放平臺(tái)。
步驟404,將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中, 輸出至開(kāi)放平臺(tái);
本步驟中,SSO客戶端應(yīng)用代理第三方應(yīng)用,向開(kāi)放平臺(tái)發(fā)起代理授權(quán)請(qǐng)求。
步驟405,接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng),解析獲取代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息;
本步驟中,如果開(kāi)放平臺(tái)登錄認(rèn)證通過(guò),則在向SSO客戶端應(yīng)用返回代理授權(quán)請(qǐng)求響應(yīng)時(shí),攜帶第三方應(yīng)用訪問(wèn)令牌信息。
步驟406,將解析獲取的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用;
步驟407,第三方應(yīng)用通過(guò)訪問(wèn)令牌信息調(diào)用開(kāi)放平臺(tái)的應(yīng)用接口,提供第三方應(yīng)用服務(wù)。
本步驟中,SSO客戶端應(yīng)用將access_token傳遞給第三方應(yīng)用后,第三方應(yīng)用可通過(guò)access_token,以授權(quán)用戶身份調(diào)用開(kāi)放平臺(tái)應(yīng)用接口。
圖5為本發(fā)明實(shí)施例實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法另一流程示意圖。參見(jiàn)圖5,該流程包括
步驟501,第三方應(yīng)用向開(kāi)放平臺(tái)發(fā)送授權(quán)請(qǐng)求;
步驟502,開(kāi)放平臺(tái)向第三方應(yīng)用返回身份認(rèn)證請(qǐng)求;
步驟503,用戶通過(guò)第三方應(yīng)用輸入用戶名及密碼信息,第三方應(yīng)用向開(kāi)放平臺(tái)提交用戶名及密碼信息;
步驟504,開(kāi)放平臺(tái)根據(jù)接收的用戶名及密碼信息進(jìn)行分身驗(yàn)證,向第三方應(yīng)用返回訪問(wèn)令牌信息。
由上述可見(jiàn),本發(fā)明實(shí)施例基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法,由于SSO 客戶端應(yīng)用經(jīng)過(guò)授權(quán)后,在客戶端存儲(chǔ)有用戶信息和SSO客戶端應(yīng)用信息映射的訪問(wèn)令牌信息,這樣,第三方應(yīng)用將授權(quán)請(qǐng)求發(fā)送至SSO客戶端應(yīng)用,SSO客戶端應(yīng)用讀取存儲(chǔ)的訪問(wèn)令牌信息,映射為用戶信息并進(jìn)行展示,用戶可以通過(guò)SSO客戶端應(yīng)用展示的用戶信息列表中選取用戶信息,從而使SSO客戶端應(yīng)用代理第三方應(yīng)用,通過(guò)傳遞該SSO客戶端應(yīng)用的訪問(wèn)令牌信息,由于該訪問(wèn)令牌參數(shù)是用戶對(duì)SSO客戶端應(yīng)用的授權(quán),開(kāi)放平臺(tái)通過(guò)該參數(shù),可以識(shí)別用戶身份,從而從開(kāi)放平臺(tái)獲取授權(quán)認(rèn)證,無(wú)需用戶手動(dòng)輸入用戶名和密碼信息,簡(jiǎn)化了用戶操作,降低了第三方應(yīng)用授權(quán)所需的時(shí)間,從而提高了應(yīng)用授權(quán)效率,不僅降低了第三方應(yīng)用接入開(kāi)放平臺(tái)的成本,也降低了用戶使用基于開(kāi)放平臺(tái)應(yīng)用的成本。
圖6為本發(fā)明實(shí)施例基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的系統(tǒng)結(jié)構(gòu)示意圖。參見(jiàn)圖6,該系統(tǒng)包括客戶端以及開(kāi)放平臺(tái)服務(wù)器,其中,
客戶端, 用于接收第三方應(yīng)用發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;在確定存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌后,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用;
開(kāi)放平臺(tái)服務(wù)器,用于解析接收的代理授權(quán)請(qǐng)求,獲取代理授權(quán)請(qǐng)求中攜帶的訪問(wèn)令牌,根據(jù)存儲(chǔ)的映射關(guān)系,獲取訪問(wèn)令牌映射的用戶信息,進(jìn)行授權(quán)認(rèn)證;根據(jù)代理授權(quán)請(qǐng)求中攜帶的第三方應(yīng)用標(biāo)識(shí),進(jìn)行驗(yàn)證,在驗(yàn)證通過(guò)后,根據(jù)用戶信息以及第三方應(yīng)用標(biāo)識(shí)信息,生成第三方應(yīng)用訪問(wèn)令牌,封裝在代理授權(quán)請(qǐng)求響應(yīng)中,輸出至客戶端。
其中,
客戶端包括第三方應(yīng)用模塊、SSO客戶端應(yīng)用模塊以及訪問(wèn)令牌存儲(chǔ)模塊(圖中未示出),其中,
第三方應(yīng)用模塊,用于向SSO客戶端應(yīng)用模塊發(fā)起授權(quán)請(qǐng)求,攜帶第三方應(yīng)用標(biāo)識(shí);接收SSO客戶端應(yīng)用模塊輸出的第三方應(yīng)用訪問(wèn)令牌信息,存儲(chǔ)至訪問(wèn)令牌存儲(chǔ)模塊;
SSO客戶端應(yīng)用模塊,用于接收第三方應(yīng)用模塊發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;在確定訪問(wèn)令牌存儲(chǔ)模塊中存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌后,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)服務(wù)器返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用模塊。
較佳地,SSO客戶端應(yīng)用模塊包括授權(quán)請(qǐng)求處理單元、第一判斷單元、第二判斷單元、SSO客戶端應(yīng)用單元、展示單元以及代理單元,其中,
授權(quán)請(qǐng)求處理單元,用于接收第三方應(yīng)用模塊發(fā)起的授權(quán)請(qǐng)求,判斷接收的授權(quán)請(qǐng)求中是否攜帶有第三方應(yīng)用訪問(wèn)令牌信息,如果沒(méi)有,將授權(quán)請(qǐng)求輸出至第一判斷單元; 如果有,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)服務(wù)器;
第一判斷單元,用于接收授權(quán)請(qǐng)求,查詢客戶端中是否安裝有SSO客戶端應(yīng)用,如果沒(méi)有,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)服務(wù)器;如果有,將授權(quán)請(qǐng)求分別輸出至第二判斷單元以及代理單元;
第二判斷單元 ,用于接收授權(quán)請(qǐng)求,查詢?cè)L問(wèn)令牌存儲(chǔ)模塊中是否存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌,如果有,將訪問(wèn)令牌對(duì)應(yīng)的用戶信息輸出至展示單元;如果沒(méi)有,向SSO客戶端應(yīng)用單元輸出觸發(fā)信息;
SSO客戶端應(yīng)用單元,用于接收觸發(fā)信息,向開(kāi)放平臺(tái)服務(wù)器發(fā)送SSO客戶端應(yīng)用授權(quán)請(qǐng)求,攜帶用戶標(biāo)識(shí)、密碼信息以及SSO客戶端應(yīng)用標(biāo)識(shí);接收開(kāi)放平臺(tái)服務(wù)器返回的 SSO客戶端應(yīng)用授權(quán)請(qǐng)求響應(yīng),獲取攜帶的訪問(wèn)令牌信息,存儲(chǔ)至訪問(wèn)令牌存儲(chǔ)模塊,并將訪問(wèn)令牌對(duì)應(yīng)的用戶信息輸出至展示單元;
展示單元,用于展示接收的用戶信息;
代理單元,用于獲取用戶從展示單元展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)服務(wù)器返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用模塊。
顯然,本領(lǐng)域技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若對(duì)本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利 要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法,包括接收第三方應(yīng)用發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;確定客戶端中存儲(chǔ)有單點(diǎn)登錄SSO客戶端應(yīng)用映射的訪問(wèn)令牌,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第二方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái);接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述確定客戶端中存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌包括確定客戶端中安裝有SSO客戶端應(yīng)用;查詢客戶端中是否存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌信息,如果有,獲取存儲(chǔ)的訪問(wèn)令牌信息,執(zhí)行所述展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;否則,向開(kāi)放平臺(tái)發(fā)送SSO 客戶端應(yīng)用授權(quán)請(qǐng)求,攜帶用戶標(biāo)識(shí)、密碼信息以及SSO客戶端應(yīng)用標(biāo)識(shí),接收開(kāi)放平臺(tái)返回的SSO客戶端應(yīng)用授權(quán)請(qǐng)求響應(yīng),獲取攜帶的訪問(wèn)令牌信息,執(zhí)行所述展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述方法進(jìn)一步包括如果確定客戶端中未安裝有SSO客戶端應(yīng)用,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng)包括開(kāi)放平臺(tái)接收代理授權(quán)請(qǐng)求,獲取代理授權(quán)請(qǐng)求中攜帶的訪問(wèn)令牌;根據(jù)存儲(chǔ)的訪問(wèn)令牌與用戶及應(yīng)用的映射關(guān)系,獲取用戶及應(yīng)用信息,對(duì)該用戶及該應(yīng)用進(jìn)行認(rèn)證;認(rèn)證通過(guò)后,獲取代理授權(quán)請(qǐng)求中攜帶的第三方應(yīng)用標(biāo)識(shí)信息,對(duì)第三方應(yīng)用進(jìn)行合法性驗(yàn)證;在合法性驗(yàn)證通過(guò)后,為該第三方應(yīng)用及用戶分配第三方應(yīng)用訪問(wèn)令牌,攜帶在代理授權(quán)請(qǐng)求響應(yīng)中,輸出至客戶端中的SSO客戶端應(yīng)用。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其中,所述訪問(wèn)令牌信息映射唯一的用戶信息以及唯一的應(yīng)用信息。
6.根據(jù)權(quán)利要求5所述的方法,其中,所述方法進(jìn)一步包括如果確定接收的授權(quán)請(qǐng)求中攜帶有第三方應(yīng)用訪問(wèn)令牌信息,將授權(quán)請(qǐng)求輸出至開(kāi)放T D O
7.一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的裝置,其特征在于,該裝置包括第三方應(yīng)用模塊、SSO客戶端應(yīng)用模塊以及訪問(wèn)令牌存儲(chǔ)模塊,其中,第三方應(yīng)用模塊,用于向SSO客戶端應(yīng)用模塊發(fā)起授權(quán)請(qǐng)求,攜帶第三方應(yīng)用標(biāo)識(shí);接收SSO客戶端應(yīng)用模塊輸出的第三方應(yīng)用訪問(wèn)令牌信息,存儲(chǔ)至訪問(wèn)令牌存儲(chǔ)模塊;SSO客戶端應(yīng)用模塊,用于接收第三方應(yīng)用模塊發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;在確定訪問(wèn)令牌存儲(chǔ)模塊中存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌后,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)服務(wù)器返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用模塊。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述SSO客戶端應(yīng)用模塊包括授權(quán)請(qǐng)求處理單元、第一判斷單元、第二判斷單元、SSO客戶端應(yīng)用單元、展示單元以及代理單元,其中,授權(quán)請(qǐng)求處理單元,用于接收第三方應(yīng)用模塊發(fā)起的授權(quán)請(qǐng)求,判斷接收的授權(quán)請(qǐng)求中是否攜帶有第三方應(yīng)用訪問(wèn)令牌信息,如果沒(méi)有,將授權(quán)請(qǐng)求輸出至第一判斷單元;如果有,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)服務(wù)器;第一判斷單元,用于接收授權(quán)請(qǐng)求,查詢客戶端中是否安裝有SSO客戶端應(yīng)用,如果沒(méi)有,將授權(quán)請(qǐng)求輸出至開(kāi)放平臺(tái)服務(wù)器;如果有,將授權(quán)請(qǐng)求分別輸出至第二判斷單元以及代理單元;第二判斷單元,用于接收授權(quán)請(qǐng)求,查詢?cè)L問(wèn)令牌存儲(chǔ)模塊中是否存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌,如果有,將訪問(wèn)令牌對(duì)應(yīng)的用戶信息輸出至展示單元;如果沒(méi)有,向 SSO客戶端應(yīng)用單元輸出觸發(fā)信息;SSO客戶端應(yīng)用單元,用于接收觸發(fā)信息,向開(kāi)放平臺(tái)服務(wù)器發(fā)送SSO客戶端應(yīng)用授權(quán)請(qǐng)求,攜帶用戶標(biāo)識(shí)、密碼信息以及SSO客戶端應(yīng)用標(biāo)識(shí);接收開(kāi)放平臺(tái)服務(wù)器返回的SSO 客戶端應(yīng)用授權(quán)請(qǐng)求響應(yīng),獲取攜帶的訪問(wèn)令牌信息,存儲(chǔ)至訪問(wèn)令牌存儲(chǔ)模塊,并將訪問(wèn)令牌對(duì)應(yīng)的用戶信息輸出至展示單元;展示單元,用于展示接收的用戶信息;代理單元,用于獲取用戶從展示單元展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)服務(wù)器返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用模塊。
9.一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的系統(tǒng),其特征在于,該系統(tǒng)包括客戶端以及開(kāi)放平臺(tái)服務(wù)器,其中,客戶端,用于接收第三方應(yīng)用發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;在確定存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌后,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用;開(kāi)放平臺(tái)服務(wù)器,用于解析接收的代理授權(quán)請(qǐng)求,獲取代理授權(quán)請(qǐng)求中攜帶的訪問(wèn)令牌,根據(jù)存儲(chǔ)的映射關(guān)系,獲取訪問(wèn)令牌映射的用戶信息,進(jìn)行授權(quán)認(rèn)證;根據(jù)代理授權(quán)請(qǐng)求中攜帶的第三方應(yīng)用標(biāo)識(shí),進(jìn)行驗(yàn)證,在驗(yàn)證通過(guò)后,根據(jù)用戶信息以及第三方應(yīng)用標(biāo)識(shí)信息,生成第三方應(yīng)用訪問(wèn)令牌,封裝在代理授權(quán)請(qǐng)求響應(yīng)中,輸出至客戶端。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述客戶端包括第三方應(yīng)用模塊、SSO 客戶端應(yīng)用模塊以及訪問(wèn)令牌存儲(chǔ)模塊,其中,第三方應(yīng)用模塊,用于向SSO客戶端應(yīng)用模塊發(fā)起授權(quán)請(qǐng)求,攜帶第三方應(yīng)用標(biāo)識(shí);接收SSO客戶端應(yīng)用模塊輸出的第三方應(yīng)用訪問(wèn)令牌信息,存儲(chǔ)至訪問(wèn)令牌存儲(chǔ)模塊;SSO客戶端應(yīng)用模塊,用于接收第三方應(yīng)用模塊發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;在確定訪問(wèn)令牌存儲(chǔ)模塊中存儲(chǔ)有SSO客戶端應(yīng)用映射的訪問(wèn)令牌后,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái)服務(wù)器;接收開(kāi)放平臺(tái)服務(wù)器返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用模塊。
全文摘要
本發(fā)明公開(kāi)了一種基于開(kāi)放平臺(tái)實(shí)現(xiàn)第三方應(yīng)用授權(quán)的方法、裝置及系統(tǒng)。該方法包括接收第三方應(yīng)用發(fā)起的授權(quán)請(qǐng)求,確定接收的授權(quán)請(qǐng)求中未攜帶有第三方應(yīng)用訪問(wèn)令牌信息;確定客戶端中存儲(chǔ)有單點(diǎn)登錄SSO客戶端應(yīng)用映射的訪問(wèn)令牌,展示存儲(chǔ)的訪問(wèn)令牌對(duì)應(yīng)的用戶信息;接收用戶從展示的用戶信息中選取的用戶信息,映射為訪問(wèn)令牌,解析授權(quán)請(qǐng)求,獲取第三方應(yīng)用標(biāo)識(shí);將映射的訪問(wèn)令牌以及獲取的第三方應(yīng)用標(biāo)識(shí)封裝在代理授權(quán)請(qǐng)求中,輸出至開(kāi)放平臺(tái);接收開(kāi)放平臺(tái)返回的代理授權(quán)請(qǐng)求響應(yīng),將代理授權(quán)請(qǐng)求響應(yīng)中攜帶的第三方應(yīng)用訪問(wèn)令牌信息輸出至第三方應(yīng)用。應(yīng)用本發(fā)明,可以提高應(yīng)用授權(quán)效率。
文檔編號(hào)H04L9/32GK103051630SQ20121056478
公開(kāi)日2013年4月17日 申請(qǐng)日期2012年12月21日 優(yōu)先權(quán)日2012年12月21日
發(fā)明者王淵命 申請(qǐng)人:微夢(mèng)創(chuàng)科網(wǎng)絡(luò)科技(中國(guó))有限公司