專利名稱:一種客戶端訪問插件應(yīng)用系統(tǒng)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于互聯(lián)網(wǎng)應(yīng)用系統(tǒng)技術(shù)領(lǐng)域,尤其針對集成多種應(yīng)用插件的開放式客戶端體系,實現(xiàn)單點登錄到加入登錄域的任何一個c/s或B/S結(jié)構(gòu)的方法和系統(tǒng)。
背景技術(shù):
隨著寬帶技術(shù)的發(fā)展,各種互聯(lián)網(wǎng)應(yīng)用越來越豐富,運營商們越來 越傾向于將這些應(yīng)用整合,由統(tǒng)一的定制客戶端向用戶推送,于是,在 客戶端的架構(gòu)設(shè)計中引入了插件的概念,而插件應(yīng)用系統(tǒng)本身有可能是 C/S或B/S結(jié)構(gòu),因此,用戶啟動客戶端時將面臨著C/S和B/S的多重 應(yīng)用系統(tǒng)身份認(rèn)證。
如果仍然使用各自的帳號登錄,用戶操作仍然十分煩瑣,與運營商 們簡化用戶操作的初衷相背而馳。因此,運營商需要研究一種適合C/S 和B/S多重應(yīng)用系統(tǒng)的單點登錄機制,實現(xiàn)客戶端上所有業(yè)務(wù)的一次登 錄,同時能方便用戶操作,亦能夠保障用戶身份信息的安全性。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種客戶端訪問插件應(yīng)用系統(tǒng)的方 法和裝置,使用戶只需一次登錄,就可以訪問所有授權(quán)服務(wù),實現(xiàn)了集 中的身份認(rèn)證,并且能有效保障系統(tǒng)數(shù)據(jù)傳輸安全性。
為了解決上述技術(shù)問題,本發(fā)明提出了 一種客戶端訪問插件應(yīng)用系 統(tǒng)的方法,用于使具有插件集成的客戶端訪問加入單點登錄系統(tǒng)域的插 件應(yīng)用系統(tǒng),包括
(1)用戶向單點登錄系統(tǒng)發(fā)送登錄請求,該請求中包括單點登錄 帳號和密碼;
(2) 當(dāng)單點登錄系統(tǒng)根據(jù)所述單點登錄帳號和密碼確認(rèn)該請求合 法時,向其返回包括用戶身份ID和時間戳的令牌;
(3) 用戶訪問具有插件集成的客戶端,由客戶端將所述令牌發(fā)送 到應(yīng)用系統(tǒng);以及
(4) 由應(yīng)用系統(tǒng)向單點登錄系統(tǒng)發(fā)送解析所述令牌的請求,根據(jù) 其返回的信息解析出用戶身份ID,并將查找到的與用戶身份ID對應(yīng)的 業(yè)務(wù)內(nèi)容返回給客戶端。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的方法還可具有以下特點, 步驟(l)還包括用戶在單點登錄系統(tǒng)注冊,由其為用戶提供單點登 錄帳號和密碼,生成與該帳號對應(yīng)的用戶身份ID,并保存所述映射關(guān) 系。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的方法還可具有以下特點, 步驟(l)中,當(dāng)用戶要定購應(yīng)用系統(tǒng)的業(yè)務(wù)時,將單點登錄帳號和應(yīng) 用帳號捆綁后保存在應(yīng)用系統(tǒng),由應(yīng)用系統(tǒng)維護該業(yè)務(wù)定購關(guān)系以及業(yè) 務(wù)權(quán)限;當(dāng)用戶登錄應(yīng)用系統(tǒng)時,填寫捆綁的單點登錄帳號和密碼并發(fā) 送單點登錄系統(tǒng)驗證,驗證通過后單點登錄系統(tǒng)會向應(yīng)用系統(tǒng)返回該單 點登錄帳號對應(yīng)的用戶身份ID,由應(yīng)用系統(tǒng)生成應(yīng)用帳號和用戶身份 ID之間的映射關(guān)系;以及步驟(4)中,根據(jù)用戶身份ID查詢到該用 戶在本系統(tǒng)中的帳號及其業(yè)務(wù)權(quán)限,根據(jù)業(yè)務(wù)權(quán)限判斷該用戶是否已定 購所申請的服務(wù),如果是,返回相應(yīng)的應(yīng)用內(nèi)容,否則,拒絕返回并提 示未登錄或未定購。
進(jìn)一步,上ii^戶端訪問插件應(yīng)用系統(tǒng)的方法還可具有以下特點, 步驟(3)中,用戶訪問具有插件集成的客戶端,由客戶端將所述令牌 寫入瀏覽器中并請求訪問B/S架構(gòu)的應(yīng)用系統(tǒng);步驟U)中,由應(yīng)用 系統(tǒng)向單點登錄系統(tǒng)發(fā)送的請求中攜帶所述令牌和應(yīng)用系統(tǒng)公鑰,當(dāng)單 點登錄系統(tǒng)解析所述令牌獲取用戶身份ID和時間戳后,根據(jù)時間戳判 斷該會話是否在有效期內(nèi),如果是,則向應(yīng)用系統(tǒng)返回經(jīng)應(yīng)用系統(tǒng)公鑰 加密的用戶身份ID,否則,通知應(yīng)用系統(tǒng)該認(rèn)證失敗。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的方法還可具有以下特點,
步驟(2)中,當(dāng)單點登錄系統(tǒng)根據(jù)所述單點登錄帳號和密碼確認(rèn)該請 求合法時,向其返回經(jīng)單點登錄系統(tǒng)私鑰簽名的令牌,所述令牌包括用 戶身份ID和時間戳;步驟(3)中,用戶訪問具有插件集成的客戶端, 將所述令牌發(fā)送到具有C/S架構(gòu)的應(yīng)用系統(tǒng)中;步驟U)中,由應(yīng)用 系統(tǒng)向單點登錄系統(tǒng)發(fā)送的請求中包括SPID、時間戳和經(jīng)過應(yīng)用系統(tǒng) 私鑰簽名的驗證碼信息,則單點登錄系統(tǒng)才艮據(jù)請求中的時間戳信息向應(yīng) 用系統(tǒng)返回用于解析所述用戶身份ID的單點登錄系統(tǒng)公鑰。
進(jìn)一 步,上述客戶端訪問插件應(yīng)用系統(tǒng)的方法還可具有以下特點, 步驟(4)還包括由應(yīng)用系統(tǒng)根據(jù)所述單點登錄系統(tǒng)公鑰解析令牌, 獲取用戶身份ID和時間戳信息,并根據(jù)時間戳判斷在系統(tǒng)內(nèi)部的有效 期,如果有效,返回相應(yīng)的應(yīng)用內(nèi)容,否則,結(jié)束流程。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的方法還可具有以下特點, 步驟(4)還包括如果SPID在單點登錄系統(tǒng)中有記錄,且驗證所述 私鑰簽名的驗證碼信息合法,即被認(rèn)為是加入單點登錄系統(tǒng)域的合法應(yīng) 用系統(tǒng),則向應(yīng)用系統(tǒng)返回7>鑰,否則結(jié)束。
一種客戶端訪問應(yīng)用系統(tǒng)的裝置,包括
客戶端,用于向單點登錄系統(tǒng)發(fā)送用戶的登錄請求,該請求中包括 單點登錄帳號和密碼,在用戶訪問時,將所述包括用戶身份ID和時間 戳的令牌發(fā)送到插件應(yīng)用系統(tǒng),以及將應(yīng)用系統(tǒng)返回的應(yīng)用內(nèi)容發(fā)送給 用戶;
單點登錄系統(tǒng),用于接收用戶的登錄請求,4艮據(jù)所述單點登錄帳號 和密碼確認(rèn)該請求合法時,向其發(fā)送包括用戶身份ID和時間戳信息的 令牌;用于接收并響應(yīng)應(yīng)用系統(tǒng)發(fā)送的解析所述令牌的請求;以及
應(yīng)用系統(tǒng),用于向單點登錄系統(tǒng)發(fā)送解析所述令牌的請求,并根據(jù) 其返回的信息解析出用戶身份ID,將查找到的與用戶身份ID對應(yīng)的業(yè) 務(wù)內(nèi)容返回給客戶端。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的裝置還可具有以下特點, 所述單點登錄系統(tǒng)在用戶注冊后,提供單點登錄帳號和密碼,生成與該 帳號對應(yīng)的用戶身份ID,并保存所述映射關(guān)系。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的裝置還可具有以下特點, 所述客戶端在用戶定購應(yīng)用系統(tǒng)的業(yè)務(wù)時,將單點登錄帳號和應(yīng)用帳號 捆綁后保存在應(yīng)用系統(tǒng),以及將捆綁的單點登錄帳號和密碼發(fā)送到單點
登錄系統(tǒng)驗證;所述單點登錄系統(tǒng)用于在驗證單點登錄帳號和密碼合法 時,向所述應(yīng)用系統(tǒng)返回該單點登錄帳號對應(yīng)的用戶身份ID;所述應(yīng) 用系統(tǒng)用于維護單點登錄帳號、應(yīng)用帳號和業(yè)務(wù)權(quán)限的捆綁關(guān)系,以及 根據(jù)所述單點登錄系統(tǒng)返回的用戶身份ID,生成應(yīng)用帳號和所述用戶 身份ID之間的映射關(guān)系;用于在解析出所述用戶身份ID時,查詢到該 用戶在本系統(tǒng)中的帳號及其業(yè)務(wù)權(quán)限,并在該用戶已定購所申請的服務(wù) 時,向客戶端返回相應(yīng)的應(yīng)用內(nèi)容,否則,拒絕返回并提示未登錄或未 定購。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的裝置還可具有以下特點, 所述單點登錄系統(tǒng)接收的解析請求中包括所述令牌和應(yīng)用系統(tǒng)公鑰,當(dāng) 解析出所述令牌中的用戶身份ID和時間戳后,根據(jù)時間戳判斷該會話 是否在有效期內(nèi),如果是,則向具有B/S架構(gòu)的應(yīng)用系統(tǒng)返回經(jīng)應(yīng)用系 統(tǒng)公鑰加密的用戶身份ID,否則,通知應(yīng)用系統(tǒng)該認(rèn)證失敗。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的裝置還可具有以下特點, 所述單點登錄系統(tǒng)根據(jù)登錄請求,向所述客戶端返回經(jīng)單點登錄系統(tǒng)私 鑰簽名的令牌,所述令牌包括用戶身份ID和時間戳,以及根據(jù)所述解 析請求中的時間戳信息,向應(yīng)用系統(tǒng)返回用于解析所述用戶身份ID的 單點登錄系統(tǒng)公鑰;所述客戶端將所述經(jīng)單點登錄系統(tǒng)私鑰簽名的令牌 發(fā)送到具有C/S架構(gòu)的應(yīng)用系統(tǒng)中;所述應(yīng)用系統(tǒng)向單點登錄系統(tǒng)發(fā)送 解析所述令牌的請求,所述請求中包括SPID、時間戳和經(jīng)過應(yīng)用系統(tǒng) 私鑰簽名的驗證碼信息。
進(jìn)一 步,上述客戶端訪問插件應(yīng)用系統(tǒng)的裝置還可具有以下特點, 所述應(yīng)用系統(tǒng)根據(jù)所述單點登錄系統(tǒng)公鑰解析令牌,獲取用戶身份ID 和時間戳信息,并根據(jù)時間戳判斷在系統(tǒng)內(nèi)部的有效期,如果有效,返 回相應(yīng)的應(yīng)用內(nèi)容,否則,結(jié)束流程。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的裝置還可具有以下特點,
所述應(yīng)用系統(tǒng)在加入單點登錄系統(tǒng)的認(rèn)證域時,向單點登錄系統(tǒng)申請
SPID,并在審核通過后向,接收到頒發(fā)的SPID,并由應(yīng)用系統(tǒng)將自己 的公鑰發(fā)往單點登錄系統(tǒng)保存;所述單點登錄系統(tǒng)判斷SPID已有記 錄,且驗證所述私鑰簽名的驗證碼信息合法時,根據(jù)請求中的時間戳信 息向應(yīng)用系統(tǒng)返回單點登錄系統(tǒng)公鑰,否則結(jié)束。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的裝置還可具有以下特點, 所述單點登錄系統(tǒng)后臺提供接口 ,使所述應(yīng)用系統(tǒng)通過該接口發(fā)送獲取 單點登錄系統(tǒng)公鑰的請求以及接收相應(yīng)的公鑰。
進(jìn)一步,上述客戶端訪問插件應(yīng)用系統(tǒng)的裝置還可具有以下特點, 客戶端還包括第一客戶端主模塊,用于向單點登錄系統(tǒng)發(fā)送用戶的登 錄請求,該請求中包括單點登錄帳號和密碼,在該請求合法時,接收到 包括用戶身份ID和時間戳信息的用戶令牌;用于根據(jù)用戶的訪問請 求,將所述令牌寫入瀏覽器中;用于將應(yīng)用系統(tǒng)返回的應(yīng)用內(nèi)容發(fā)送給 用戶,或者通知用戶拒絕登錄或提示未登錄或未定購;以及第一應(yīng)用插 件,用于將用戶的訪問請求發(fā)送到對應(yīng)的應(yīng)用系統(tǒng)。
進(jìn)一 步,上述客戶端訪問插件應(yīng)用系統(tǒng)的裝置還可具有以下特點, 客戶端還包括第二客戶端主模塊,用于向單點登錄系統(tǒng)發(fā)送用戶的登 錄請求,該請求中包括單點登錄帳號和密碼,在該請求合法時,接收經(jīng) 單點登錄系統(tǒng)私鑰簽名的包括用戶身份ID和時間戳信息的令牌;用于 根據(jù)第二應(yīng)用插件的要求返回所述私鑰簽名的令牌;以及第二應(yīng)用插 件,用于在接收到用戶的訪問請求時,向第二客戶端主模塊請求私鑰簽 名的令牌,并將獲取的所述令牌發(fā)送到應(yīng)用系統(tǒng);用于將應(yīng)用系統(tǒng)返回 的應(yīng)用內(nèi)容發(fā)送給用戶,或通知用戶拒絕登錄或提示未登錄或未定購。
與現(xiàn)有技術(shù)相比,本發(fā)明采用獨立的單點登錄系統(tǒng)承擔(dān)認(rèn)證功能, 使用戶只需一次登錄,就可以訪問所有授權(quán)服務(wù),實現(xiàn)了集中的身份認(rèn) 證,并且安全加密算法和PKI機制有效保障系統(tǒng)數(shù)據(jù)傳輸安全性。另 外,各應(yīng)用系統(tǒng)也可以省略獨立的認(rèn)證模塊,完全依賴于單點登錄系統(tǒng) 實現(xiàn)應(yīng)用系統(tǒng)的i人證功能。應(yīng)用系統(tǒng)既可以是B/S結(jié)構(gòu),也可以是C/S 結(jié)構(gòu),既可以屬于統(tǒng)一的系統(tǒng),也可以是跨域系統(tǒng);各應(yīng)用系統(tǒng)可以根據(jù)自身業(yè)務(wù)的特點,對Token中包含的內(nèi)容進(jìn)行擴展定制。
圖1是第 一 實施例中客戶端訪問插件應(yīng)用系統(tǒng)的方法流程圖。
圖2是第二實施例中客戶端訪問插件應(yīng)用系統(tǒng)的裝置結(jié)構(gòu)圖。
圖3是第三實施例中客戶端訪問插件應(yīng)用系統(tǒng)的方法流程圖。
圖4是第四實施例中客戶端訪問插件應(yīng)用系統(tǒng)的裝置結(jié)構(gòu)圖。
具體實施例方式
第一實施例為客戶端訪問加入單點登錄系統(tǒng)域的具有B/S結(jié)構(gòu)的應(yīng) 用系統(tǒng)的流程,如圖1所示,包括以下步驟
步驟101,用戶發(fā)送登錄請求,由客戶端主模塊將該登錄請求發(fā)送 到單點登錄系統(tǒng),該登錄請求中包括用戶的單點登錄帳號和密碼;
用戶在單點登錄系統(tǒng)注冊后,由單點登錄系統(tǒng)為用戶提供單點登錄 帳號和密碼,在系統(tǒng)內(nèi)部自動生成一個用戶身份ID與帳號對應(yīng),并將 該映射關(guān)系保存在單點登錄系統(tǒng)。其中,用戶身份ID與單點登錄帳號 不同,是在單點登錄系統(tǒng)內(nèi)部維護的標(biāo)識該用戶的數(shù)字編碼。
步驟102,由單點登錄系統(tǒng)驗證單點登錄帳號和密碼的合法性,如 果驗證通過,則執(zhí)行步驟103;否則,結(jié)束流程;
步驟103,向客戶端主模塊返回用戶令牌,即UserToken (釆用 3DES算法對原始數(shù)據(jù)以及摘要信息進(jìn)行加密),該UserToken包括用 戶身份ID和時間戳信息;
步驟104,由客戶端主模塊向用戶返回已登錄通知;
步驟105,當(dāng)用戶調(diào)用客戶端的應(yīng)用插件時,由客戶端主模塊將 UserToken寫入瀏覽器中,UserToken采用內(nèi)存cookie的形式保存在用 戶的瀏覽器中;
步驟106,用戶訪問的頁面需要進(jìn)行用戶認(rèn)證或判斷是否授權(quán)時, 應(yīng)用系統(tǒng)自動將其重定向到單點登錄系統(tǒng),該重定向請求中包含應(yīng)用系 統(tǒng)的公鑰,瀏覽器會將UserToken令牌和請求一同發(fā)往單點登錄系統(tǒng);
應(yīng)用系統(tǒng)產(chǎn)生并保存一對公私密鑰,且其私鑰只保存在應(yīng)用系統(tǒng)。SP提供的某些業(yè)務(wù)是需要身份認(rèn)證的,有些是開放的,不需要認(rèn)證的,比如執(zhí)行查看詳細(xì)內(nèi)容、定購、退定、查看定購內(nèi)容等關(guān)鍵流程時 需要用戶認(rèn)證,而查看某個節(jié)目摘要時不需要用戶認(rèn)證。
步驟107,當(dāng)單點登錄系統(tǒng)收到該請求時,從用戶瀏覽器Cookie中 讀取UserToken,解析UserToken獲取用戶身份ID和時間戳信息,并 根據(jù)時間戳判斷該用戶的會話是否在有效期內(nèi),如果是,執(zhí)行步驟 108,否則,執(zhí)行步驟109;
步驟108,將用戶身份ID經(jīng)過應(yīng)用系統(tǒng)的公鑰加密,并在重定向 結(jié)果中返回給應(yīng)用系統(tǒng),執(zhí)行步驟110;
步驟109,應(yīng)用系統(tǒng)接收到重定向結(jié)果,即^人證失敗,則由應(yīng)用系 統(tǒng)向用戶提示重新登錄,即執(zhí)行步驟101;
步驟IIO,由應(yīng)用系統(tǒng)通過本系統(tǒng)的私鑰解析獲取用戶身份ID,根 據(jù)該用戶身份ID和應(yīng)用帳號之間的映射關(guān)系,查詢到該用戶在本系統(tǒng) 中的帳號及其業(yè)務(wù)權(quán)限,根據(jù)業(yè)務(wù)權(quán)限判斷該用戶是否已定購所申請的 服務(wù),如果是,執(zhí)行步驟lll;否則,執(zhí)行步驟112;
每個應(yīng)用系統(tǒng)都有相應(yīng)的應(yīng)用帳號,當(dāng)用戶要定購應(yīng)用系統(tǒng)的業(yè)務(wù) 時,將單點登錄帳號和應(yīng)用帳號捆綁后保存在應(yīng)用系統(tǒng),由應(yīng)用系統(tǒng)維 護該業(yè)務(wù)定購關(guān)系以及業(yè)務(wù)權(quán)限,業(yè)務(wù)權(quán)限包括業(yè)務(wù)定購的有效期,每 個業(yè)務(wù)設(shè)置的有效期可以不同。
當(dāng)用戶設(shè)置捆綁信息時,需要首先登錄應(yīng)用系統(tǒng),填寫捆綁的單點 登錄帳號和密碼并發(fā)送單點登錄系統(tǒng)驗證,驗證通過后單點登錄系統(tǒng)會 向應(yīng)用系統(tǒng)返回該單點登錄帳號對應(yīng)的用戶身份ID (用戶不可見),由 應(yīng)用系統(tǒng)生成應(yīng)用帳號和用戶身份ID之間的映射關(guān)系。
步驟lll,應(yīng)用系統(tǒng)向用戶返回相應(yīng)的應(yīng)用內(nèi)容;
步驟112,拒絕返回并給出未登錄或未定購的提示。
圖2示出了第二實施例中, 一種客戶端訪問插件應(yīng)用系統(tǒng)的裝置, 包括客戶端,單點登錄系統(tǒng)以及具有B/S架構(gòu)的應(yīng)用系統(tǒng),其中,客 戶端包括客戶端主模塊和應(yīng)用插件,則
-客戶端主模塊,用于維護客戶端登錄狀態(tài)和各插件的狀態(tài)信息, 由其負(fù)責(zé)向單點登錄系統(tǒng)發(fā)送用戶的登錄請求,包括單點登錄帳號和密碼,在該請求合法時,接收到其返回的包括用戶身份ID和時間戳信息 的用戶令牌,即UserToken,并向用戶返回已登錄通知;用于在用戶調(diào) 用應(yīng)用插件時,將UserToken寫入瀏覽器中并發(fā)送到應(yīng)用系統(tǒng),該請求 中攜帶所述包括用戶身份ID和時間戳信息的令牌;用于將應(yīng)用系統(tǒng)返 回的應(yīng)用內(nèi)容發(fā)送給用戶;
-應(yīng)用插件,用于在接收到用戶的調(diào)用請求時,將該請求發(fā)送到對應(yīng)的應(yīng)用系統(tǒng);
-單點登錄系統(tǒng),用于接收用戶的登錄請求,如果該請求不合法,結(jié)束流程,否則,向其發(fā)送包括用戶身份ID和時間戳信息的令牌;
用戶在單點登錄系統(tǒng)注冊后,由單點登錄系統(tǒng)為用戶提供單點登錄帳號和密碼,在系統(tǒng)內(nèi)部自動生成一個用戶身份ID與帳號對應(yīng),并將 該映射關(guān)系保存在單點登錄系統(tǒng)。其中,用戶身份ID與單點登錄帳號 不同,是在單點登錄系統(tǒng)內(nèi)部維護的標(biāo)識該用戶的數(shù)字編碼。
-應(yīng)用系統(tǒng),用于根據(jù)應(yīng)用系統(tǒng)私鑰解密獲得用戶身份ID、時間戳信息,并根據(jù)與所述用戶身份ID對應(yīng)的業(yè)務(wù)權(quán)限,向客戶端返回相 應(yīng)的應(yīng)用內(nèi)容。
每個應(yīng)用系統(tǒng)都有相應(yīng)的應(yīng)用帳號,當(dāng)用戶要定購應(yīng)用系統(tǒng)的業(yè)務(wù)時,將單點登錄帳號和應(yīng)用帳號的捆綁后保存在應(yīng)用系統(tǒng),由應(yīng)用系統(tǒng) 維護該業(yè)務(wù)定購關(guān)系以及業(yè)務(wù)權(quán)限,業(yè)務(wù)權(quán)限包括業(yè)務(wù)定購的有效期, 每個業(yè)務(wù)設(shè)置的有效期可以不同。當(dāng)用戶設(shè)置捆綁信息時,需要首先登 錄應(yīng)用系統(tǒng),填寫捆綁的單點登錄帳號和密碼并發(fā)送單點登錄系統(tǒng)驗 證,驗證通過后單點登錄系統(tǒng)會向應(yīng)用系統(tǒng)返回該單點登錄帳號對應(yīng)的 用戶身份ID (用戶不可見),由應(yīng)用系統(tǒng)生成應(yīng)用帳號和用戶身份ID之間的映射關(guān)系。
根據(jù)用戶身份ID和應(yīng)用帳號之間的映射關(guān)系,查詢到該用戶在本系統(tǒng)中的帳號及其業(yè)務(wù)權(quán)限;用于根據(jù)業(yè)務(wù)權(quán)限判斷該用戶已定購所申 請的服務(wù)時,向客戶端返回相應(yīng)的應(yīng)用內(nèi)容,否則,拒絕返回并提示未登錄或未定購。
如果用戶訪問的頁面需要進(jìn)行用戶認(rèn)證或判斷是否授權(quán)時,則所述 應(yīng)用系統(tǒng)向單點登錄系統(tǒng)發(fā)送重定向請求,該重定向請求中包含應(yīng)用系
統(tǒng)的公鑰,瀏覽器會將UserToken令牌和請求一同發(fā)往單點登錄系統(tǒng), 以及
所述單點登錄系統(tǒng)解析所述令牌獲取用戶身份ID和時間戳,并根 據(jù)時間戳判斷該會話是否在有效期內(nèi),如果是,則向應(yīng)用系統(tǒng)返回經(jīng)應(yīng) 用系統(tǒng)公鑰加密的用戶身份ID,否則,通知應(yīng)用系統(tǒng)該認(rèn)證失敗。
第三實施例為客戶端訪問加入單點登錄系統(tǒng)域的具有C/S結(jié)構(gòu)應(yīng)用 系統(tǒng)的流程,如圖3所示,包括以下步驟
步驟201,用戶發(fā)送登錄請求,由客戶端主模塊將該登錄請求發(fā)送 到單點登錄系統(tǒng),該登錄請求中包括用戶的單點登錄帳號和密碼;
步驟202,單點登錄系統(tǒng)驗證單點登錄帳號和密碼的合法性,如果 驗證通過,執(zhí)行步驟203;否則,結(jié)束流程;
步驟203,向客戶端主模塊返回經(jīng)單點登錄系統(tǒng)的私鑰簽名的客戶 端令牌,即ClientToken, ClientToken中包含用戶身份ID、時間戳等 信息;
單點登錄系統(tǒng)產(chǎn)生并保存一對公私密鑰,且其私鑰只保存在單點登 錄系統(tǒng)。
步驟204,由客戶端主模塊向用戶返回已登錄通知;
步驟205,當(dāng)用戶訪問客戶端應(yīng)用插件時,由該應(yīng)用插件向客戶端 主模塊請求私鑰簽名的ClientToken;
步驟206,客戶端主模塊向應(yīng)用插件返回私鑰簽名的ClientToken;
步驟207,所述應(yīng)用插件向C/S結(jié)構(gòu)的應(yīng)用系統(tǒng)發(fā)送私鑰簽名的 ClientToken;
步驟208,應(yīng)用系統(tǒng)向單點登錄系統(tǒng)發(fā)送獲取單點登錄系統(tǒng)的公鑰 的請求,該請求中包括SPID (應(yīng)用系統(tǒng)在單點登錄系統(tǒng)中的編號,事 先生成)、時間戳和經(jīng)過SP私鑰簽名的驗證碼信息;
單點登錄系統(tǒng)后臺提供接口 ,用于使C/S架構(gòu)的應(yīng)用系統(tǒng)通過該接口發(fā)送獲取公鑰的請求以及接收相應(yīng)的公鑰。第三方插件系統(tǒng)和第三方 網(wǎng)站系統(tǒng)加入客戶端系統(tǒng)的單點認(rèn)證域時,需要向單點登錄系統(tǒng)申請
SPID,在審核批準(zhǔn)后獲取該SPID,并由應(yīng)用系統(tǒng)將自己的公鑰發(fā)往單 點登錄系統(tǒng)保存。時間戳用于記錄產(chǎn)生這一請求的時間,因為公私密鑰 對定期更換,單點登錄系統(tǒng)可以根據(jù)此時間戳返回相應(yīng)的公鑰。
在單點登錄系統(tǒng)中保存公私密鑰對,并且私鑰只保存在單點登錄系 統(tǒng),應(yīng)用系統(tǒng)需要向單點登錄系統(tǒng)獲取公鑰來解開通過私鑰簽名的 ClientToken,如果解密成功,則可以成功獲取用戶身份,并在應(yīng)用系統(tǒng) 內(nèi)完成授權(quán)。
步驟209,如果SPID在單點登錄系統(tǒng)中有記錄,且驗證所述私鑰 簽名的驗證碼信息合法,即被認(rèn)為是加入單點登錄系統(tǒng)的合法應(yīng)用系 統(tǒng),則單點登錄系統(tǒng)根據(jù)請求中的時間戳信息向應(yīng)用系統(tǒng)返回公鑰;否 則,結(jié)束流程;
步驟210,應(yīng)用系統(tǒng)才艮據(jù)所述公鑰解析ClientToken,獲得用戶身份 ID、時間戳信息,并根據(jù)時間戳判斷在系統(tǒng)內(nèi)部的有效期,如果有效, 執(zhí)行步驟211,否則,結(jié)束流程;
步驟211,由應(yīng)用系統(tǒng)根據(jù)用戶身份ID和應(yīng)用帳號之間的映射關(guān) 系,查詢到該用戶在本系統(tǒng)中的帳號及其業(yè)務(wù)^U艮,根據(jù)業(yè)務(wù)權(quán)限判斷 該用戶是否已定購所申請的服務(wù),如果是,執(zhí)行步驟212;否則,執(zhí)行 步驟213;
步驟212,應(yīng)用系統(tǒng)向應(yīng)用插件返回相應(yīng)的應(yīng)用內(nèi)容,并由應(yīng)用插
件將內(nèi)容發(fā)送給用戶;
步驟213,拒絕返回并給出未登錄或未定購的提示。
圖4示出了在第四實施例中, 一種客戶端訪問插件應(yīng)用系統(tǒng)的裝
置,包括客戶端,單點登錄系統(tǒng)以及具有C/S架構(gòu)的應(yīng)用系統(tǒng),其
中,
-客戶端主模塊,用于維護客戶端登錄狀態(tài)和各插件的狀態(tài)信息, 由其向單點登錄系統(tǒng)發(fā)送用戶的登錄請求,在該請求合法時,接收到其
返回的經(jīng)單點登錄系統(tǒng)私鑰簽名的包括用戶身份ID和時間戳信息的客戶端令牌,即ClientToken,并向用戶返回已登錄通知;用于才艮據(jù)應(yīng)用 插件的要求返回私鑰簽名的ClientToken,其中攜帶所述用戶身份ID和 時間戳信息;
-應(yīng)用插件,用于在接收到用戶的訪問請求時,向客戶端主模塊請 求私鑰簽名的ClientToken,并將獲取的ClientToken發(fā)送到應(yīng)用系統(tǒng); 用于將應(yīng)用系統(tǒng)返回的應(yīng)用內(nèi)容發(fā)送給用戶,或者通知用戶拒絕登錄或 提示未登錄或未定購;
-單點登錄系統(tǒng),用于接收用戶的登錄請求,如果該請求不合法, 結(jié)束流程,否則,向其發(fā)送包括用戶身份ID和時間戳信息的令牌;用 于將解析所述令牌的系統(tǒng)公鑰發(fā)送到應(yīng)用系統(tǒng);
所述登錄請求中包括單點登錄帳號和密碼,如果該帳號和密碼合 法,則認(rèn)為該請求合法。單點登錄系統(tǒng)后臺提供接口,用于接收C/S架 構(gòu)的應(yīng)用系統(tǒng)發(fā)送的獲取公鑰的請求,以及通過該接口下發(fā)所述公鑰。
當(dāng)接收到應(yīng)用系統(tǒng)獲取公鑰的請求時,該請求中包括SP1D、時間 戳和經(jīng)過應(yīng)用系統(tǒng)私鑰簽名的驗證碼信息,如果已記錄所述SPID且驗 證所述私鑰簽名的驗證碼信息合法時,根據(jù)請求中的時間戳信息向應(yīng)用 系統(tǒng)返回公鑰;否則,結(jié)束流程。
-應(yīng)用系統(tǒng),用于向單點登錄系統(tǒng)發(fā)送獲取單點登錄系統(tǒng)公鑰的請 求,并根據(jù)所述公鑰解析令牌,獲得用戶身份ID、時間戳信息,根據(jù) 與所述用戶身份ID對應(yīng)的業(yè)務(wù)權(quán)限,向客戶端返回相應(yīng)的應(yīng)用內(nèi)容。
應(yīng)用系統(tǒng)用于根據(jù)時間戳判斷在系統(tǒng)內(nèi)部的有效期,如果有效,根 據(jù)用戶身份ID和應(yīng)用帳號之間的映射關(guān)系,查詢到該用戶在本系統(tǒng)中 的帳號及其業(yè)務(wù)權(quán)限;用于根據(jù)業(yè)務(wù)權(quán)限判斷該用戶已定購所申請的服 務(wù)時,向客戶端返回相應(yīng)的應(yīng)用內(nèi)容,否則,拒絕返回并提示未登錄或
未定購。
本發(fā)明采用獨立的單點登錄系統(tǒng)承擔(dān)認(rèn)證功能,單點登錄系統(tǒng)為客 戶端系統(tǒng)保留 一對公私密鑰對,保證令牌信息及來源的正確性和安全 性。私鑰僅保存在單點登錄平臺,公鑰可供各插件應(yīng)用系統(tǒng)查詢并用于 數(shù)據(jù)加密和簽名驗證。各應(yīng)用系統(tǒng)通過接口調(diào)用獲取公鑰,為保證密鑰的安全傳輸,接口中可以通過增加請求源參數(shù)驗證調(diào)用者的身份。為保 證系統(tǒng)安全性,公私密鑰對應(yīng)該定期更換。應(yīng)用系統(tǒng)應(yīng)也應(yīng)當(dāng)定時獲取 最新的/>鑰,并進(jìn)行本地緩存。
本發(fā)明中,各應(yīng)用系統(tǒng)可以分別保存該應(yīng)用帳號與單點登錄帳號或用戶身份ID的映射關(guān)系,也可以將所有應(yīng)用帳號與單點登錄系統(tǒng)帳號 或用戶身份的映射關(guān)系集中保存,則當(dāng)用戶使用單點登錄帳號和密碼登 錄時,即可進(jìn)入加入單點登錄域的任何一個C/S或B/S結(jié)構(gòu)。
權(quán)利要求
1.一種客戶端訪問插件應(yīng)用系統(tǒng)的方法,用于使具有插件集成的客戶端訪問加入單點登錄系統(tǒng)域的插件應(yīng)用系統(tǒng),包括(1)用戶向單點登錄系統(tǒng)發(fā)送登錄請求,該請求中包括單點登錄帳號和密碼;(2)當(dāng)單點登錄系統(tǒng)根據(jù)所述單點登錄帳號和密碼確認(rèn)該請求合法時,向其返回包括用戶身份ID和時間戳的令牌;(3)用戶訪問具有插件集成的客戶端,由客戶端將所述令牌發(fā)送到應(yīng)用系統(tǒng);以及(4)由應(yīng)用系統(tǒng)向單點登錄系統(tǒng)發(fā)送解析所述令牌的請求,根據(jù)其返回的信息解析出用戶身份ID,并將查找到的與用戶身份ID對應(yīng)的業(yè)務(wù)內(nèi)容返回給客戶端。
2. 如權(quán)利要求1所述客戶端訪問插件應(yīng)用系統(tǒng)的方法,步驟(1) 還包括用戶在單點登錄系統(tǒng)注冊,由其為用戶提供單點登錄帳號和密 碼,生成與該帳號對應(yīng)的用戶身份ID,并保存所述映射關(guān)系。
3. 如權(quán)利要求2所述客戶端訪問插件應(yīng)用系統(tǒng)的方法,還包括 步驟(l)中,當(dāng)用戶要定購應(yīng)用系統(tǒng)的業(yè)務(wù)時,將單點登錄帳號和應(yīng)用帳號捆綁后保存在應(yīng)用系統(tǒng),由應(yīng)用系統(tǒng)維護該業(yè)務(wù)定購關(guān)系以 及業(yè)務(wù)權(quán)限;當(dāng)用戶登錄應(yīng)用系統(tǒng)時,填寫捆綁的單點登錄帳號和密碼 并發(fā)送單點登錄系統(tǒng)驗證,驗證通過后單點登錄系統(tǒng)會向應(yīng)用系統(tǒng)返回 該單點登錄帳號對應(yīng)的用戶身份ID,由應(yīng)用系統(tǒng)生成應(yīng)用帳號和用戶 身份ID之間的映射關(guān)系;以及步驟U)中,根據(jù)用戶身份ID查詢到該用戶在本系統(tǒng)中的帳號及 其業(yè)務(wù)權(quán)限,根據(jù)業(yè)務(wù)權(quán)限判斷該用戶是否已定購所申請的服務(wù),如果 是,返回相應(yīng)的應(yīng)用內(nèi)容,否則,拒絕返回并提示未登錄或未定購。
4. 如權(quán)利要求1所述客戶端訪問插件應(yīng)用系統(tǒng)的方法,還包括 步驟(3)中,用戶訪問具有插件集成的客戶端,由客戶端將所述令牌寫入瀏覽器中并請求訪問B/S架構(gòu)的應(yīng)用系統(tǒng); 步驟(4)中,由應(yīng)用系統(tǒng)向單點登錄系統(tǒng)發(fā)送的請求中攜帶所述 令牌和應(yīng)用系統(tǒng)公鑰,當(dāng)單點登錄系統(tǒng)解析所述令牌獲取用戶身份ID 和時間戳后,根據(jù)時間戳判斷該會話是否在有效期內(nèi),如果是,則向應(yīng) 用系統(tǒng)返回經(jīng)應(yīng)用系統(tǒng)公鑰加密的用戶身份ID,否則,通知應(yīng)用系統(tǒng) 該認(rèn)證失敗。
5. 如權(quán)利要求2所a戶端訪問插件應(yīng)用系統(tǒng)的方法,還包括 步驟(2)中,當(dāng)單點登錄系統(tǒng)根據(jù)所述單點登錄帳號和密碼確認(rèn)該請求合法時,向其返回經(jīng)單點登錄系統(tǒng)私鑰簽名的令牌,所述令牌包 括用戶身份ID和時間戳;步驟(3)中,用戶訪問具有插件集成的客戶端,將所述令牌發(fā)送 到具有C/S架構(gòu)的應(yīng)用系統(tǒng)中;步驟(4)中,由應(yīng)用系統(tǒng)向單點登錄系統(tǒng)發(fā)送的請求中包括 SPID、時間戳和經(jīng)過應(yīng)用系統(tǒng)私鑰簽名的驗證碼信息,則單點登錄系 統(tǒng)根據(jù)請求中的時間戳信息向應(yīng)用系統(tǒng)返回用于解析所述用戶身份ID 的單點登錄系統(tǒng)公鑰。
6. 如權(quán)利要求5所述客戶端訪問插件應(yīng)用系統(tǒng)的方法,步驟(4) 還包括由應(yīng)用系統(tǒng)根據(jù)所述單點登錄系統(tǒng)公鑰解析令牌,獲取用戶身份 ID和時間戳信息,并根據(jù)時間戳判斷在系統(tǒng)內(nèi)部的有效期,如果有 效,返回相應(yīng)的應(yīng)用內(nèi)容,否則,結(jié)束流程。
7. 如權(quán)利要求5所述客戶端訪問插件應(yīng)用系統(tǒng)的方法,步驟(4) 還包括如果SPID在單點登錄系統(tǒng)中有記錄,且驗證所述私鑰簽名的驗證 碼信息合法,即被認(rèn)為是加入單點登錄系統(tǒng)域的合法應(yīng)用系統(tǒng),則向應(yīng) 用系統(tǒng)返回公鑰,否則結(jié)束。
8. —種客戶端訪問應(yīng)用系統(tǒng)的裝置,包括客戶端,用于向單點登錄系統(tǒng)發(fā)送用戶的登錄請求,該請求中包括 單點登錄帳號和密碼,在用戶訪問時,將所述包括用戶身份ID和時間 戳的令牌發(fā)送到插件應(yīng)用系統(tǒng),以及將應(yīng)用系統(tǒng)返回的應(yīng)用內(nèi)容發(fā)送給用戶;單點登錄系統(tǒng),用于接收用戶的登錄請求,根據(jù)所述單點登錄帳號 和密碼確認(rèn)該請求合法時,向其發(fā)送包括用戶身份id和時間戳信息的令牌;用于接收并響應(yīng)應(yīng)用系統(tǒng)發(fā)送的解析所述令牌的請求;以及應(yīng)用系統(tǒng),用于向單點登錄系統(tǒng)發(fā)送解析所述令牌的請求,并根據(jù) 其返回的信息解析出用戶身份id,將查找到的與用戶身份id對應(yīng)的業(yè) 務(wù)內(nèi)容返回給客戶端。
9. 如權(quán)利要求8所^戶端訪問插件應(yīng)用系統(tǒng)的裝置,其中 所述單點登錄系統(tǒng)在用戶注冊后,提供單點登錄帳號和密碼,生成與該帳號對應(yīng)的用戶身份id,并保存所述映射關(guān)系。
10. 如權(quán)利要求9所述戶端訪問插件應(yīng)用系統(tǒng)的裝置,其中 所述客戶端在用戶定購應(yīng)用系統(tǒng)的業(yè)務(wù)時,將單點登錄帳號和應(yīng)用帳號捆綁后保存在應(yīng)用系統(tǒng),以及將捆綁的單點登錄帳號和密碼發(fā)送到 單點登錄系統(tǒng)驗證;所述單點登錄系統(tǒng)用于在驗證單點登錄帳號和密碼合法時,向所述 應(yīng)用系統(tǒng)返回該單點登錄帳號對應(yīng)的用戶身份id;所述應(yīng)用系統(tǒng)用于維護單點登錄帳號、應(yīng)用帳號和業(yè)務(wù)權(quán)限的捆綁 關(guān)系,以及根據(jù)所述單點登錄系統(tǒng)返回的用戶身份id,生成應(yīng)用帳號 和所述用戶身份id之間的映射關(guān)系;用于在解析出所述用戶身份id 時,查詢到該用戶在本系統(tǒng)中的帳號及其業(yè)務(wù)權(quán)限,并在該用戶已定購 所申請的服務(wù)時,向客戶端返回相應(yīng)的應(yīng)用內(nèi)容,否則,拒絕返回并提 示未登錄或未定購。
11. 如權(quán)利要求8所述客戶端訪問插件應(yīng)用系統(tǒng)的裝置,其中 所述單點登錄系統(tǒng)接收的解析請求中包括所述令牌和應(yīng)用系統(tǒng)公鑰,當(dāng)解析出所述令牌中的用戶身份id和時間戳后,根據(jù)時間戳判斷 該會話是否在有效期內(nèi),如果是,則向具有b/S架構(gòu)的應(yīng)用系統(tǒng)返回經(jīng) 應(yīng)用系統(tǒng)公鑰加密的用戶身份id,否則,通知應(yīng)用系統(tǒng)該認(rèn)證失敗。
12. 如權(quán)利要求8所述戶端訪問插件應(yīng)用系統(tǒng)的裝置,其中 所述單點登錄系統(tǒng)根據(jù)登錄請求,向所述客戶端返回經(jīng)單點登錄系統(tǒng)私鑰簽名的令牌,所述令牌包括用戶身份ID和時間戳,以及根據(jù)所 述解析請求中的時間戳信息,向應(yīng)用系統(tǒng)返回用于解析所述用戶身份 ID的單點登錄系統(tǒng)公鑰;所述客戶端將所述經(jīng)單點登錄系統(tǒng)私鑰簽名的令牌發(fā)送到具有C/S 架構(gòu)的應(yīng)用系統(tǒng)中;所述應(yīng)用系統(tǒng)向單點登錄系統(tǒng)發(fā)送解析所述令牌的請求,所述請求 中包括SPID、時間戳和經(jīng)過應(yīng)用系統(tǒng)私鑰簽名的驗證碼信息。
13. 如權(quán)利要求12所述客戶端訪問插件應(yīng)用系統(tǒng)的裝置,其中 所述應(yīng)用系統(tǒng)根據(jù)所述單點登錄系統(tǒng)公鑰解析令牌,獲取用戶身份ID和時間戳信息,并根據(jù)時間戳判斷在系統(tǒng)內(nèi)部的有效期,如果有 效,返回相應(yīng)的應(yīng)用內(nèi)容,否則,結(jié)束流程。
14. 如權(quán)利要求13所ii^戶端訪問插件應(yīng)用系統(tǒng)的裝置,其中 所述應(yīng)用系統(tǒng)在加入單點登錄系統(tǒng)的認(rèn)證域時,向單點登錄系統(tǒng)申請SPID,并在審核通過后向,接收到頒發(fā)的SPID,并由應(yīng)用系統(tǒng)將自 己的公鑰發(fā)往單點登錄系統(tǒng)保存;所述單點登錄系統(tǒng)判斷SPID已有記錄,且驗證所述私鑰簽名的驗 證碼信息合法時,根據(jù)請求中的時間戳信息向應(yīng)用系統(tǒng)返回單點登錄系 統(tǒng)公鑰,否則結(jié)束。
15. 如權(quán)利要求12所述客戶端訪問插件應(yīng)用系統(tǒng)的裝置,其中 所述單點登錄系統(tǒng)后臺提供接口 ,使所述應(yīng)用系統(tǒng)通過該接口發(fā)送獲取單點登錄系統(tǒng)公鑰的請求以及接收相應(yīng)的公鑰。
16. 如權(quán)利要求11所^戶端訪問插件應(yīng)用系統(tǒng)的裝置,客戶端 還包括第一客戶端主模塊,用于向單點登錄系統(tǒng)發(fā)送用戶的登錄請求,該 請求中包括單點登錄帳號和密碼,在該請求合法時,接收到包括用戶身 份ID和時間戳信息的用戶令牌;用于根據(jù)用戶的訪問請求,將所述令 牌寫入瀏覽器中;用于將應(yīng)用系統(tǒng)返回的應(yīng)用內(nèi)容發(fā)送給用戶,或者通 知用戶拒絕登錄或提示未登錄或未定購;以及第 一應(yīng)用插件,用于將用戶的訪問請求發(fā)送到對應(yīng)的應(yīng)用系統(tǒng)。
17. 如權(quán)利要求12所述客戶端訪問插件應(yīng)用系統(tǒng)的裝置,客戶端 還包括第二客戶端主模塊,用于向單點登錄系統(tǒng)發(fā)送用戶的登錄請求,該 請求中包括單點登錄帳號和密碼,在該請求合法時,接收經(jīng)單點登錄系 統(tǒng)私鑰簽名的包括用戶身份ID和時間戳信息的令牌;用于根據(jù)第二應(yīng) 用插件的要求返回所述私鑰簽名的令牌;以及第二應(yīng)用插件,用于在接收到用戶的訪問請求時,向笫二客戶端主 模塊請求私鑰簽名的令牌,并將獲取的所述令牌發(fā)送到應(yīng)用系統(tǒng);用于 將應(yīng)用系統(tǒng)返回的應(yīng)用內(nèi)容發(fā)送給用戶,或者通知用戶拒絕登錄或提示 未登錄或未定購。
全文摘要
本發(fā)明提出一種客戶端訪問插件應(yīng)用系統(tǒng)的方法和裝置,包括(1)用戶向單點登錄系統(tǒng)發(fā)送登錄請求,該請求中包括單點登錄帳號和密碼;(2)當(dāng)單點登錄系統(tǒng)根據(jù)所述單點登錄帳號和密碼確認(rèn)該請求合法時,向其返回包括用戶身份ID和時間戳的令牌;(3)用戶訪問具有插件集成的客戶端,由客戶端將所述令牌發(fā)送到應(yīng)用系統(tǒng);(4)由應(yīng)用系統(tǒng)向單點登錄系統(tǒng)發(fā)送解析所述令牌的請求,根據(jù)其返回的信息解析出用戶身份ID,并將查找到的與用戶身份ID對應(yīng)的業(yè)務(wù)內(nèi)容返回給客戶端。本發(fā)明中用戶只需一次登錄,就可以訪問所有授權(quán)服務(wù),實現(xiàn)了集中的身份認(rèn)證,并且能有效保障系統(tǒng)數(shù)據(jù)傳輸安全性。
文檔編號H04L29/06GK101202753SQ200710195129
公開日2008年6月18日 申請日期2007年11月29日 優(yōu)先權(quán)日2007年11月29日
發(fā)明者于洪涌, 楊曉玲, 羅斯青, 力 蔣 申請人:中國電信股份有限公司