專利名稱:統(tǒng)一認證系統(tǒng)和基于該統(tǒng)一認證系統(tǒng)的登錄方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于用戶訪問多個子系統(tǒng)的認證系統(tǒng)和方法,具體地說,是涉及 一種統(tǒng)一認證系統(tǒng)和基于該統(tǒng)一認證系統(tǒng)的登錄子系統(tǒng)的方法。
背景技術(shù):
開發(fā)一個大型應(yīng)用系統(tǒng)往往需要根據(jù)不同的業(yè)務(wù)或功能開發(fā)多個子系統(tǒng),以降低 系統(tǒng)復(fù)雜性。如果每個子系統(tǒng)都有自己的用戶管理和用戶登錄認證授權(quán)機制,不僅會增加 系統(tǒng)開發(fā)維護成本、降低系統(tǒng)性能和可用性,也不符合應(yīng)用系統(tǒng)的完整性要求。因此,多個 子系統(tǒng)一般要共享一套用戶數(shù)據(jù),共用一套登錄認證授權(quán)流程(一個統(tǒng)一的認證系統(tǒng)),使 用戶只需要登錄一次就可以訪問所有相互信任的子系統(tǒng),即采用SS0(Single Sign 0η,單 點登錄)。
當用戶第一次訪問應(yīng)用子系統(tǒng)1的時候,因為還沒有登錄,會被引導(dǎo)到認證系統(tǒng) 中進行登錄。根據(jù)用戶提供的登錄信息,認證系統(tǒng)將用戶的登錄信息和用戶信息庫相比 較,對用戶進行身份效驗,如果通過效驗,應(yīng)該返回給用戶一個認證的憑據(jù)——認證標志 Ticket。當然,認證系統(tǒng)還應(yīng)對Ticket進行效驗,判斷其有效性。當用戶再訪問子系統(tǒng)2 時,就會將這個Ticket帶上,作為自己認證的憑據(jù),子系統(tǒng)2接收到請求之后通過與認證系 統(tǒng)的通訊,會把Ticket送到認證系統(tǒng)進行效驗,檢查Ticket的合法性。如果通過效驗,用 戶就可在不用再次登錄的情況下訪問子系統(tǒng)2 了。
目前實現(xiàn)SSO的技術(shù)主要有以下幾種基于cookies實現(xiàn);基于經(jīng)紀人 (Broker-based)實現(xiàn);基于代理人(Agent-based)實現(xiàn);基于口令(Token-based)實 M (Agent and Broker-based) $3 SAML(Security Assertion Markup Language,安全斷言標記語言)實現(xiàn)。
雖然上述這些技術(shù)都能夠?qū)崿F(xiàn)SS0,但是,它們存在著一些缺陷第一,沒有把登 錄、認證、授權(quán)有機地結(jié)合起來,認證時需要頻繁訪問統(tǒng)一的認證系統(tǒng),當用戶訪問量很大 時,認證系統(tǒng)就會成為整個系統(tǒng)的瓶頸;第二,不能對用戶登錄成功后的時效性進行控制 (此處的時效性是指比如,出于安全考慮,要求用戶登錄成功12或M小時后,會話自動到 期,必須重新登錄認證和授權(quán))。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種統(tǒng)一認證系統(tǒng)和基于該統(tǒng)一認證系統(tǒng)的登錄方法,基 于該統(tǒng)一認證系統(tǒng)的登錄方法實現(xiàn)了一種統(tǒng)一登錄認證和授權(quán)的過程。
為了實現(xiàn)上述目的,本發(fā)明采用了以下技術(shù)方案
一種統(tǒng)一認證系統(tǒng),其特征在于它包括用于實現(xiàn)用戶管理、用戶角色管理、用戶 權(quán)限管理、用戶登錄界面邏輯、會話的生成、TICKET信息的保存、認證標志TICKET的生成 和保存這些功能的登錄認證授權(quán)管理系統(tǒng)和用于存儲TICKET信息的TICKET服務(wù)器,該 登錄認證授權(quán)管理系統(tǒng)通過服務(wù)接口模塊與該TICKET服務(wù)器連接,該服務(wù)器接口模塊與各個子系統(tǒng)連接,每個子系統(tǒng)均配設(shè)有用于獲取用戶的認證標志TICKET和與該認證標志 TICKET對應(yīng)的TICKET信息的獲取模塊。
一種基于統(tǒng)一認證系統(tǒng)的登錄方法,其特征在于它包括如下步驟
步驟一在用戶登錄界面中,用戶輸入用戶名和密碼進行登錄;
步驟二若該用戶為合法用戶,則由所述登錄認證授權(quán)管理系統(tǒng)在用戶終端中產(chǎn) 生本地會話,生成認證標志TICKET,并將該認證標志TICKET保存在用戶終端中,其中該本 地會話中保存有從服務(wù)器端的信息數(shù)據(jù)庫中獲取的該用戶的TICKET信息;
步驟三所述登錄認證授權(quán)管理系統(tǒng)將該TICKET信息存儲到TICKET服務(wù)器中,該 用戶獲得的認證標志TICKET與該TICKET信息相對應(yīng);
步驟四當該用戶訪問一個子系統(tǒng)時,該子系統(tǒng)的獲取模塊從用戶終端獲取認證 標志TICKET,然后根據(jù)獲取的該認證標志TICKET,從TICKET服務(wù)器中獲取該用戶的TICKET 信息,從而根據(jù)該TICKET信息判斷該用戶是否有權(quán)訪問該子系統(tǒng)。
本發(fā)明的優(yōu)點是
在本發(fā)明中,用戶輸入用戶名和密碼登錄后,是否可以訪問某個子系統(tǒng)的認證和 授權(quán)過程僅由該子系統(tǒng)與TICKET服務(wù)器之間的通訊完成,不用用戶再進行任何其他操作, 為用戶提供了便利性。
在用戶訪問子系統(tǒng)的本地會話期間內(nèi),子系統(tǒng)不會頻繁、重復(fù)訪問TICKET服務(wù) 器,因此,即使用戶訪問量很龐大,所有壓力也不會都集中到TICKET服務(wù)器上,從而TICKET 服務(wù)器不會成為系統(tǒng)的瓶頸,確保了整個系統(tǒng)的順暢運行。
本發(fā)明設(shè)置有定期刪除認證標識TICKET和TICKET信息的機制,該機制緩解了 TICKET服務(wù)器的存儲壓力,提高了系統(tǒng)的安全性。
本發(fā)明統(tǒng)一認證系統(tǒng)是一個完整的統(tǒng)一登錄認證授權(quán)系統(tǒng)解決方案,各個子系統(tǒng) 與本發(fā)明統(tǒng)一認證系統(tǒng)間通過統(tǒng)一的規(guī)范數(shù)據(jù)格式完成SSO(單點登錄)流程。
圖1是本發(fā)明統(tǒng)一認證系統(tǒng)的組成示意圖。
具體實施方式
如圖1所示,本發(fā)明統(tǒng)一認證系統(tǒng)包括用于實現(xiàn)用戶管理、用戶角色管理(角色可 以分級別管理,高級別用戶擁有低級別用戶的管理權(quán)限,一個用戶可以具有多種角色)、用 戶權(quán)限管理(每個用戶針對各個子系統(tǒng)都可有不同的訪問權(quán)限)、用戶登錄界面邏輯、會話 的生成、TICKET信息的保存、認證標志TICKET的生成和保存這些功能的登錄認證授權(quán)管理 系統(tǒng)100和用于存儲TICKET信息的TICKET服務(wù)器200,該登錄認證授權(quán)管理系統(tǒng)100通過 服務(wù)接口模塊300與該TICKET服務(wù)器200連接,該服務(wù)器接口模塊300與各個子系統(tǒng)500 連接,每個子系統(tǒng)500均配設(shè)有用于獲取用戶的認證標志TICKET和與該認證標志TICKET 對應(yīng)的TICKET信息的獲取模塊。
該TICKET信息可包括用戶基本信息和用戶角色權(quán)限信息,TICKET信息中的用戶 角色權(quán)限信息是各個子系統(tǒng)實現(xiàn)授權(quán)的依據(jù)。登錄認證授權(quán)管理系統(tǒng)100使得整個系統(tǒng)具 有一個統(tǒng)一的用戶登錄界面(包括用戶名、密碼輸入框)。用戶訪問所有子系統(tǒng)前,在用戶未登錄或認證、授權(quán)不通過的情況下,該用戶均會被引導(dǎo)到該用戶登錄界面中。
該服務(wù)接口模塊300為JMS、RMI或CORBA中的任一種。JMS (即Java Message krvicejava消息服務(wù)應(yīng)用程序接口 )是一個Java平臺中關(guān)于面向消息中間件的API,用 于在兩個應(yīng)用程序之間或分布式系統(tǒng)中發(fā)送消息,進行異步通信。JMS作為底層數(shù)據(jù)通訊方 式,可將登錄認證授權(quán)管理系統(tǒng)100、TICKET服務(wù)器200與各個子系統(tǒng)500間有效地連接起 來,規(guī)范它們之間的數(shù)據(jù)通訊格式,降低開發(fā)成本。RMI (Remote Method Invocation,遠程 方法調(diào)用)是Java的一組擁護開發(fā)分布式應(yīng)用程序的API。CORBA(Common Object Request Broker Architecture,公共對象請求代理體系結(jié)構(gòu))是一種通用對象請求代理體系結(jié)構(gòu), 是由OMG組織制訂的一種標準的面向?qū)ο髴?yīng)用程序體系規(guī)范。
如圖1,該登錄認證授權(quán)管理系統(tǒng)100、TICKET服務(wù)器200、各個子系統(tǒng)500與服務(wù) 接口模塊300之間均與一個框架MULE 400連接??蚣躆ULE是一個基于Java的輕量級消 息框架,它可以快速、容易地將各個應(yīng)用連接起來,并且保證這些應(yīng)用間可以交換數(shù)據(jù)。
在本發(fā)明統(tǒng)一認證系統(tǒng)中,TICKET服務(wù)器200的核心組成部分為緩存(Cache)。在 緩存中,認證標志TICKET和其對應(yīng)的TICKET信息采用Key-Value (鍵值對)的方式存儲, 其中Key為認證標志TICKET,是一個由用戶名加系統(tǒng)時間生成的md5加密字符串,Value 為TICKET信息。
在實際應(yīng)用中,本發(fā)明統(tǒng)一認證系統(tǒng)還可包括用于定期刪除認證標志TICKET和 TICKET信息的定期刪除模塊,也就是說,認證標志TICKET和TICKET信息是有有效期限的。 認證標志TICKET和TICKET信息在一個設(shè)定時間(該設(shè)定時間可調(diào)整)后自動失效,從而 提高了系統(tǒng)的安全性。另外,TICKET服務(wù)器200中還可設(shè)置用于記錄用戶登錄情況的用戶 登錄日志記錄模塊、用于記錄用戶操作行為情況的用戶行為日志記錄模塊。
基于上述本發(fā)明統(tǒng)一認證系統(tǒng),本發(fā)明還提出了一種登錄方法,該登錄方法包括 如下步驟
步驟一在用戶登錄界面中,用戶輸入用戶名和密碼進行登錄;
步驟二 若用戶為合法用戶,則由登錄認證授權(quán)管理系統(tǒng)100在用戶終端(WEB服 務(wù)器)中產(chǎn)生本地會話Cession),生成認證標志TICKET,并將該認證標志TICKET保存在 用戶終端(瀏覽器)中,其中該本地會話中保存有從服務(wù)器端的信息數(shù)據(jù)庫中獲取的該用 戶的TICKET信息(包括用戶基本信息和用戶角色權(quán)限信息);若用戶為非法用戶,則返回 到該用戶登錄界面中,讓該用戶重新登錄;
步驟三登錄認證授權(quán)管理系統(tǒng)100將該TICKET信息存儲到TICKET服務(wù)器200 中,該用戶獲得的認證標志TICKET與該TICKET信息相對應(yīng)(例如,以鍵值對形式存儲);
步驟四當該用戶訪問一個子系統(tǒng)500(如子系統(tǒng)1)時,該子系統(tǒng)500的獲取模 塊從用戶終端獲取認證標志TICKET(或者,當用戶訪問該子系統(tǒng)時,可通過用戶終端的瀏 覽器將包含認證標志TICKET的COOKIES帶到該子系統(tǒng)中,從而使該子系統(tǒng)通過帶入的該 COOKIES獲取認證標志TICKET。),然后根據(jù)獲取的該認證標志TICKET,從TICKET服務(wù)器 200中獲取該用戶的TICKET信息,從而根據(jù)該TICKET信息判斷該用戶是否有權(quán)訪問該子系 統(tǒng)。
在步驟二中,認證標志TICKET可以COOKIES形式保存在用戶終端中,從而在步驟 四中,子系統(tǒng)500的獲取模塊可從用戶終端的COOKIES中獲取認證標志TICKET。
步驟四是子系統(tǒng)的認證和授權(quán)過程。在步驟四中,若該用戶有權(quán)訪問該子系統(tǒng),則 建立本地會話,允許該用戶以其自身的角色訪問該子系統(tǒng),其中
在本地會話有效期內(nèi),該子系統(tǒng)是不需要與TICKET服務(wù)器200進行通訊的,這樣 可以減輕TICKET服務(wù)器200的負擔(dān);
當該本地會話過期后,若該子系統(tǒng)仍能獲取到認證標志TICKET (即保存該認證標 志TICKET的COOKIES沒有過期),則該子系統(tǒng)再次與TICKET服務(wù)器200通訊而重新進行訪 問權(quán)限判斷(即進行認證和授權(quán)過程),若由于認證標志TICKET被定期刪除模塊刪除而該 子系統(tǒng)不能獲取到該認證標志TICKET,則該用戶的訪問結(jié)束,該用戶必須再次登錄用戶登 錄界面,獲取新的認證標志TICKET,這樣提高了系統(tǒng)安全性。并且,若由于該用戶的TICKET 信息被定期刪除模塊刪除而該子系統(tǒng)從TICKET服務(wù)器200中獲取不到該用戶的TICKET信 息(或者,TICKET信息為空),則該用戶的本地會話結(jié)束,該用戶也必須再次登錄用戶登錄 界面,獲取新的認證標志TICKET,系統(tǒng)安全性被提高。
當用戶訪問完子系統(tǒng)1后又去訪問另外一個子系統(tǒng)(如子系統(tǒng)2),或者,當用戶訪 問子系統(tǒng)1的同時又去訪問另外一個子系統(tǒng)(如子系統(tǒng)2),那么,此時,該用戶不必在用戶 登錄界面中重新登錄,而只需要該子系統(tǒng)2與TICKET服務(wù)器直接通訊來進行認證和授權(quán)過 程,便可以確定該用戶是否有權(quán)訪問該子系統(tǒng)2。
在本發(fā)明中,用戶輸入用戶名和密碼登錄后,是否可以訪問某個子系統(tǒng)的認證和 授權(quán)過程僅由該子系統(tǒng)與TICKET服務(wù)器之間的通訊完成,不用用戶再進行任何其他操作, 為用戶提供了便利性。
在用戶訪問子系統(tǒng)的本地會話期間內(nèi),子系統(tǒng)不會頻繁、重復(fù)訪問TICKET服務(wù) 器,因此,即使用戶訪問量很龐大,所有壓力也不會都集中到TICKET服務(wù)器上,從而TICKET 服務(wù)器不會成為系統(tǒng)的瓶頸,確保了整個系統(tǒng)的順暢運行。
本發(fā)明設(shè)置有定期刪除認證標識TICKET和TICKET信息的機制,該機制緩解了 TICKET服務(wù)器的存儲壓力,提高了系統(tǒng)的安全性。
上述是本發(fā)明的較佳實施例及其所運用的技術(shù)原理,對于本領(lǐng)域的技術(shù)人員來 說,在不背離本發(fā)明的精神和范圍的情況下,任何基于本發(fā)明技術(shù)方案基礎(chǔ)上的等效變換、 簡單替換等顯而易見的改變,均屬于本發(fā)明保護范圍之內(nèi)。
權(quán)利要求
1.一種統(tǒng)一認證系統(tǒng),其特征在于它包括用于實現(xiàn)用戶管理、用戶角色管理、用戶權(quán) 限管理、用戶登錄界面邏輯、會話的生成、TICKET信息的保存、認證標志TICKET的生成和保 存這些功能的登錄認證授權(quán)管理系統(tǒng)和用于存儲TICKET信息的TICKET服務(wù)器,該登錄認 證授權(quán)管理系統(tǒng)通過服務(wù)接口模塊與該TICKET服務(wù)器連接,該服務(wù)器接口模塊與各個子 系統(tǒng)連接,每個子系統(tǒng)均配設(shè)有用于獲取用戶的認證標志TICKET和與該認證標志TICKET 對應(yīng)的TICKET信息的獲取模塊。
2.如權(quán)利要求1所述的統(tǒng)一認證系統(tǒng),其特征在于所述登錄認證授權(quán)管理系統(tǒng)、TICKET服務(wù)器、各個子系統(tǒng)與所述服務(wù)接口模塊之間均 與一個框架MULE連接。
3.如權(quán)利要求1或2所述的統(tǒng)一認證系統(tǒng),其特征在于 所述服務(wù)接口模塊為JMS、RMI或CORBA中的任一種。
4.如權(quán)利要求1或2所述的統(tǒng)一認證系統(tǒng),其特征在于 所述TICKET信息包括用戶基本信息和用戶角色權(quán)限信息。
5.如權(quán)利要求1或2所述的統(tǒng)一認證系統(tǒng),其特征在于所述統(tǒng)一認證系統(tǒng)包括用于定期刪除認證標志TICKET和TICKET信息的定期刪除模塊。
6.一種基于權(quán)利要求1所述的統(tǒng)一認證系統(tǒng)的登錄方法,其特征在于它包括如下步驟步驟一在用戶登錄界面中,用戶輸入用戶名和密碼進行登錄; 步驟二 若該用戶為合法用戶,則由所述登錄認證授權(quán)管理系統(tǒng)在用戶終端中產(chǎn)生本 地會話,生成認證標志TICKET,并將該認證標志TICKET保存在用戶終端中,其中該本地會 話中保存有從服務(wù)器端的信息數(shù)據(jù)庫中獲取的該用戶的TICKET信息;步驟三所述登錄認證授權(quán)管理系統(tǒng)將該TICKET信息存儲到TICKET服務(wù)器中,該用戶 獲得的認證標志TICKET與該TICKET信息相對應(yīng);步驟四當該用戶訪問一個子系統(tǒng)時,該子系統(tǒng)的獲取模塊從用戶終端獲取認證標志 TICKET,然后根據(jù)獲取的該認證標志TICKET,從TICKET服務(wù)器中獲取該用戶的TICKET信 息,從而根據(jù)該TICKET信息判斷該用戶是否有權(quán)訪問該子系統(tǒng)。
7.如權(quán)利要求6所述的登錄方法,其特征在于所述TICKET信息包括用戶基本信息和用戶角色權(quán)限信息。
8.如權(quán)利要求6所述的登錄方法,其特征在于在所述步驟二中,所述認證標志TICKET以COOKIES形式保存在用戶終端中,從而在所 述步驟四中,子系統(tǒng)的獲取模塊從用戶終端的COOKIES中獲取所述認證標志TICKET。
9.如權(quán)利要求6或7或8所述的登錄方法,其特征在于在所述步驟四中,若該用戶有權(quán)訪問該子系統(tǒng),則建立本地會話,允許該用戶以其自身 的角色訪問該子系統(tǒng),其中當該本地會話過期后,若該子系統(tǒng)仍能獲取到所述認證標志TICKET,則該子系統(tǒng)再次 與TICKET服務(wù)器通訊而重新進行訪問權(quán)限判斷,若由于所述認證標志TICKET被定期刪除 模塊刪除而該子系統(tǒng)不能獲取到所述認證標志TICKET,則該用戶的訪問結(jié)束。
10.如權(quán)利要求9所述的登錄方法,其特征在于若由于該用戶的TICKET信息被定期刪除模塊刪除而該子系統(tǒng)從所述TICKET服務(wù)器中 獲取不到該用戶的TICKET信息,則該用戶的本地會話結(jié)束。
全文摘要
本發(fā)明公開了一種統(tǒng)一認證系統(tǒng)和登錄方法。該系統(tǒng)包括登錄認證授權(quán)管理系統(tǒng),其通過服務(wù)接口模塊與TICKET服務(wù)器連接。該方法包括用戶輸入用戶名和密碼登錄;若為合法用戶,用戶終端產(chǎn)生本地會話,生成認證標志并保存在用戶終端中;本地會話中的TICKET信息存儲到TICKET服務(wù)器中;當用戶訪問一子系統(tǒng)時,該子系統(tǒng)根據(jù)從用戶終端獲取的認證標志從TICKET服務(wù)器獲取TICKET信息,從而判斷該用戶是否有權(quán)訪問該子系統(tǒng)。通過本發(fā)明訪問子系統(tǒng)時,除輸入用戶名和密碼登錄外,用戶不用再進行任何其他操作,十分便利。當訪問的用戶量龐大時,本發(fā)明系統(tǒng)中的TICKET服務(wù)器不會成為系統(tǒng)瓶頸。
文檔編號H04L29/06GK102045171SQ20101061452
公開日2011年5月4日 申請日期2010年12月30日 優(yōu)先權(quán)日2010年12月30日
發(fā)明者李勁華, 賈志東 申請人:北京世紀互聯(lián)工程技術(shù)服務(wù)有限公司, 北京云快線軟件服務(wù)有限公司