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