彭勇 黃劍華 王喆 王全亮 王歡
摘 ?要:針對現(xiàn)代信息門戶用戶訪問量大、信息系統(tǒng)集成數(shù)量多的特點,信息系統(tǒng)身份認(rèn)證分散、用戶體驗差等問題。本文設(shè)計了一種分布式協(xié)同統(tǒng)一身份認(rèn)證平臺。平臺提供認(rèn)證服務(wù)、目錄服務(wù)、接口服務(wù)、負(fù)載均衡和數(shù)據(jù)同步等功能。利用CA數(shù)字證書和SSL協(xié)議,增強認(rèn)證和傳輸過程中的安全性;采用SSO代理和服務(wù)器的模式實現(xiàn)用戶的單點登錄。通過票據(jù)同步、Redis共享數(shù)據(jù)和身份漫游等技術(shù)實現(xiàn)分布式協(xié)同身份認(rèn)證。本文設(shè)計的分布式協(xié)同統(tǒng)一身份認(rèn)證平臺,能夠有效地解決信息系統(tǒng)分散的問題,提升用戶體驗。
關(guān)鍵詞:統(tǒng)一身份認(rèn)證;分布式;身份漫游
中圖分類號:TP393 ? ? 文獻(xiàn)標(biāo)識碼:A
Design and Implementation of Distributed Cooperation and
Uniform Identity Authentication Platform
PENG Yong, HUANG Jianhua, WANG Zhe, WANG ?Quanliang, WANG Huan
(Guangxi University of Science and Technology, Liuzhou 545006, China)
pengyong@gxust.edu.cn; 872874889@qq.com; 751602523@qq.com;
wqlet@qq.com; wanghuan@gxust.edu.cn
Abstract: Currently, large numbers of visits ?and highly-integrated information system lead to the scattered identity authentication and poor user experience. This paper proposes a distributed collaboration and uniform identity authentication platform. It provides functions such as authentication services, directory services, interface services, load balancing, and data synchronization. CA (Certificate Authority) digital certificate and SSL (Secure Socket Layer) protocol are used to enhance the security in authentication and transmission process. SSO (Single Sign-on) agent and server mode are used to realize single sign-on. Distributed collaboration and uniform identity authentication are achieved through technologies such as ticket synchronization, Redis shared data, and identity roaming. The proposed identity authentication platform can effectively coordinate decentralized information systems, and improve user experience.
Keywords: uniform identity authentication; distributed; identity roaming
1 ? 引言(Introduction)
隨著信息技術(shù)的不斷發(fā)展,政府、高校及企事業(yè)部門越來越重視信息化程度,對信息化建設(shè)進(jìn)行了深入探索。近年來各級單位不斷地提高自己的信息化水平,并逐步建立自己的信息門戶,并將多種不同的信息系統(tǒng)進(jìn)行組合和整合,以達(dá)到更好的服務(wù)廣大用戶的目的[1,2]。在信息化建設(shè)的過程中業(yè)報露出一系列的問題,這些問題在高校當(dāng)中尤為突出,如用戶登錄入口繁多,缺乏統(tǒng)一的身份認(rèn)證平臺[3,4]。由于系統(tǒng)的管理部門不統(tǒng)一,進(jìn)而形成多個登錄入口,缺乏統(tǒng)一的身份認(rèn)證平臺,用戶無法通過統(tǒng)一的入口來訪問不同的信息系統(tǒng)。此外每個用戶在不同的業(yè)務(wù)系統(tǒng)都擁有不同的賬號和密碼,經(jīng)常出現(xiàn)用戶賬號密碼混淆的情況[5,6]。
綜上所述,當(dāng)今各單位的信息化建設(shè)急需整體的規(guī)劃和統(tǒng)一的門戶平臺,為各級用戶提供統(tǒng)一的訪問入口,打破信息孤島的壁壘,最終形成統(tǒng)一的門戶平臺。然而,統(tǒng)一身份認(rèn)證不僅是門戶平臺的重要組成部分,而且在整個平臺中起到核心的關(guān)隘作用[7]。為此本文,針對現(xiàn)代信息門戶用戶訪問量大、信息系統(tǒng)集成數(shù)量多的特點,設(shè)計了一種分布式協(xié)同統(tǒng)一身份認(rèn)證平臺,來提高信息化門戶的安全性和便捷性。
2 ?統(tǒng)一身份認(rèn)證需求分析(Analysis of unified identity authentication requirements)
2.1 ? 平臺的功能需求
(1)認(rèn)證服務(wù)
統(tǒng)一身份認(rèn)證平臺提供的認(rèn)證服務(wù)功能,就是要對現(xiàn)有的信息系統(tǒng)提供統(tǒng)一的登錄認(rèn)證服務(wù),用戶只需要進(jìn)行一次認(rèn)證就可以漫游至其他集成的信息系統(tǒng),避免多次記錄賬號密碼。此項功能主要完成以下兩個方面的工作:一是對不同的信息系統(tǒng)賬號進(jìn)行統(tǒng)一管理,對系統(tǒng)資源進(jìn)行統(tǒng)一分配。二是與各個子系統(tǒng)進(jìn)行有效的對接,實現(xiàn)系統(tǒng)的單點登錄和身份漫游[8]。
(2)統(tǒng)一共享數(shù)據(jù)服務(wù)
統(tǒng)一共享數(shù)據(jù)服務(wù)就是對所有信息系統(tǒng)的用戶數(shù)據(jù),按照統(tǒng)一數(shù)據(jù)標(biāo)準(zhǔn)建立共享數(shù)據(jù)庫。共享數(shù)據(jù)庫不僅存儲用戶的身份信息,還會存儲各系統(tǒng)間的認(rèn)證接口信息,進(jìn)而實現(xiàn)統(tǒng)一的認(rèn)證交互。
(3)認(rèn)證接口服務(wù)
由于集成的信息系統(tǒng)種類繁多、開發(fā)的語言也不盡相同、部署的平臺也具有多樣性。為此統(tǒng)一身份認(rèn)證平臺要提供認(rèn)證接口服務(wù)。接口服務(wù)主要具備以下功能:第一、跨平臺的系統(tǒng)調(diào)用與多種語言支持;第二、單點登錄認(rèn)證和身份漫游;第三、支持多種協(xié)議,保證運行的可靠性。
(4)負(fù)載均衡
由于統(tǒng)一身份認(rèn)證平臺承載著大量用戶的并發(fā)訪問,為了保證認(rèn)證平臺的安全平穩(wěn)運行,需要進(jìn)行負(fù)載均衡設(shè)計和部署。通過負(fù)載均衡技術(shù)協(xié)調(diào)多個分布式認(rèn)證服務(wù)器協(xié)同工作,避免單點故障的出現(xiàn),從而影響平臺的可靠性。
(5)數(shù)據(jù)同步服務(wù)
由于各個信息系統(tǒng)每天更新的數(shù)據(jù)較為頻繁,用戶變更頻率也較高,依賴人工同步難以及時完成,為此統(tǒng)一身份認(rèn)證平臺需要提供數(shù)據(jù)同步服務(wù),定時的向子系統(tǒng)推送和拉取數(shù)據(jù),以確保認(rèn)證信息更新的及時性。
2.2 ? 用戶角色需求
統(tǒng)一身份認(rèn)證平臺最典型的場景就是高校的數(shù)字化校園平臺。下面以高校的統(tǒng)一身份認(rèn)證平臺為例,進(jìn)行用戶角色分析。角色分析主要是確定用戶的種類和角色,在統(tǒng)一身份認(rèn)證的過程中,通??梢苑譃槠胀ㄓ脩艉拖到y(tǒng)管理員兩部分,二者因為角色不同、權(quán)限不同,所以具備的功能也不同,本文以用例圖的方式對其進(jìn)行分析,二者的用例圖分別如圖1和圖2所示。
由圖1可知,通常情況下普通用戶會包括登錄、注冊、注銷和進(jìn)入系統(tǒng)等四類操作。其中在登錄的過程還會進(jìn)行登錄驗證和SSO代理兩部分操作。
由圖2可知,與普通用戶不同,系統(tǒng)管理員用例包括用戶管理、賬號的關(guān)聯(lián)設(shè)置、角色配置、權(quán)限配置、應(yīng)用管理等六個操作,實現(xiàn)對整個認(rèn)證平臺的管理。
3 ?身份認(rèn)證安全性設(shè)計(Identity authentication security design)
由于當(dāng)前大多數(shù)信息系統(tǒng)都是采用web架構(gòu)進(jìn)行設(shè)計。為此本文的設(shè)計方案主要是針對基于web的應(yīng)用系統(tǒng)。在身份認(rèn)證平臺的設(shè)計過程中,主要考慮兩種情況:一種是已經(jīng)建成的web應(yīng)用系統(tǒng);另一種新建的應(yīng)用系統(tǒng)。對于已經(jīng)建成的應(yīng)用系統(tǒng),平臺提供組件認(rèn)證功能,應(yīng)用系統(tǒng)通過此功能,將自身用戶的賬號密碼與統(tǒng)一身份認(rèn)證平臺的賬號進(jìn)行關(guān)聯(lián);對于新建的應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)本身不在提供用戶賬號管理功能,此部分直接與統(tǒng)一身份認(rèn)證平臺對接,由認(rèn)證中心完成。此外,本文還考慮了統(tǒng)一身份認(rèn)證平臺的安全性,將CA數(shù)字證書集成到設(shè)計方案中,保證數(shù)據(jù)安全。用戶在認(rèn)證時,不再是輸入傳統(tǒng)的用戶名和密碼,還有符合要求的是數(shù)字證書CA。
集成CA數(shù)字證書的身份認(rèn)證過程如下:
(1)統(tǒng)一身份認(rèn)證服務(wù)器通知CA認(rèn)證服務(wù)器驗證訪問是否持有CA數(shù)字證書,如果沒有數(shù)字證書則拒絕訪問,并給出提示信息;如果持有數(shù)字證書,則通知統(tǒng)一身份認(rèn)證服務(wù)器,并有統(tǒng)一身份認(rèn)證服務(wù)器執(zhí)行第(2)步。
(2)服務(wù)器驗證用戶輸入的賬號和密碼,如果驗證不通過,則提示用戶;如果驗證通過,則執(zhí)行第(3)步。
(3)統(tǒng)一身份認(rèn)證服務(wù)器獲取身份信息,并進(jìn)行數(shù)據(jù)同步,獲取用戶可以訪問的資源列表。
(4)通過SSL協(xié)議建立數(shù)據(jù)傳輸通道,向用戶展示可訪問的資源列表。用戶選擇要訪問的應(yīng)用系統(tǒng)。
(5)統(tǒng)一身份認(rèn)證系統(tǒng)通知認(rèn)證服務(wù)器,建立漫游信息。
4 ? 單點登錄設(shè)計(Single sign-on design)
在整個統(tǒng)一身份認(rèn)證平臺中,單點登錄模塊起到核心的作用。在本文的單點登錄設(shè)計采用的是集中式的架構(gòu)。用戶通過用戶名、密碼登錄成功后,將獲取到有認(rèn)證服務(wù)器分發(fā)的認(rèn)證令牌Token,令牌的唯一標(biāo)識為用戶的SessionID。采用此種模式設(shè)計主要是基于Session在同一次會話內(nèi)相關(guān)信息會保留,可以維持服務(wù)器訪問資源的持續(xù)性。本方案中,用戶一旦通過用戶名密碼以及數(shù)字證書CA登錄成功以后,系統(tǒng)就會與用戶端建立一個會話,然后生成令牌分發(fā)給用戶和其他認(rèn)證服務(wù)系,這樣用戶就可以通過令牌進(jìn)行身份漫游了。
單點登錄過程的身份認(rèn)證過程如圖3所示。由圖3可知,在本文設(shè)計的單點登錄過程中,包含用戶、登錄、驗證及應(yīng)用系統(tǒng)四部分。
用戶為應(yīng)用系統(tǒng)的訪問者;登錄為提供統(tǒng)一入口的門戶登錄平臺,此部分會采集用戶的賬號密碼信息。驗證提供身份認(rèn)證操作,主要進(jìn)行用戶身份認(rèn)證及認(rèn)證令牌的生成和分發(fā);應(yīng)用系統(tǒng)為用戶訪問的對象,負(fù)責(zé)在本系統(tǒng)內(nèi)容的身份生成和訪問控制,并完成相關(guān)業(yè)務(wù)操作。此外應(yīng)用系統(tǒng)在用戶訪問的時候還會識別用戶的會話以及持有token令牌。如果令牌真實,則允許其訪問;如果令牌無效,則跳轉(zhuǎn)至登錄頁面。
用戶申請訪問某一個信息系統(tǒng),信息系統(tǒng)判斷用戶的身份狀態(tài),如果發(fā)現(xiàn)其存在令牌,則根據(jù)漫游信息,向認(rèn)證服務(wù)器獲取身份信息,并允許其訪問;如果發(fā)現(xiàn)其沒有令牌,則返回登錄入口,進(jìn)行登錄操作。單點登錄的過程為:
(1)用戶發(fā)起登錄請求,服務(wù)器響應(yīng)登錄頁面,用戶輸入賬號和密碼,向統(tǒng)一身份認(rèn)證服務(wù)器發(fā)起請求,提交登錄表單。
(2)認(rèn)證服務(wù)端接收到請求后,提取表單數(shù)據(jù),進(jìn)行用戶憑證的校驗,并調(diào)用驗證模塊。
(3)驗證模塊對用戶的賬號密碼進(jìn)行驗證,并獲取用戶的ID及用戶相關(guān)的其他信息,并將這些信息存儲至Session對象中,同時做出響應(yīng)。
(4)登錄模塊收到驗證模塊的響應(yīng)后,收到用戶的令牌Token,系統(tǒng)根據(jù)此令牌獲取用戶可以訪問的資源列表,并將其顯示在門戶列表上。
(5)用戶選擇要訪問的信息系統(tǒng)目錄。
(6)用戶端將獲取到的令牌發(fā)送至認(rèn)證服務(wù)端,對用戶身份進(jìn)行驗證。
(7)認(rèn)證服務(wù)端對用戶的驗證請求做出響應(yīng),并通知應(yīng)用系統(tǒng)。
(8)應(yīng)用系統(tǒng)響應(yīng)用戶請求,并生成用戶在應(yīng)用系統(tǒng)權(quán)限列表和功能集合,并在應(yīng)用系統(tǒng)中進(jìn)行展示。
5 ?分布式協(xié)同認(rèn)證設(shè)計(Design of distributed authentication)
考慮到統(tǒng)一身份認(rèn)證的高可用需求。本文采用分布式協(xié)同認(rèn)證的方式來進(jìn)行認(rèn)證。本方案中,包括多臺認(rèn)證服務(wù)器和兩臺數(shù)據(jù)存儲服務(wù)器。其中認(rèn)證服務(wù)器負(fù)責(zé)采集用戶的登錄狀態(tài),而數(shù)據(jù)庫服務(wù)器負(fù)責(zé)存儲相關(guān)的登錄信息。此外由于是多機協(xié)同工作,需要處理認(rèn)證服務(wù)器和數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)同步和緩存。本方案采用Redis技術(shù)實現(xiàn)對認(rèn)證會話Session、TGT票和ST票據(jù)的同步,實現(xiàn)數(shù)據(jù)同步的緩存和持久。
5.1 ? Session會話同步
由于本文采用的是分布式協(xié)同認(rèn)證,所以不同子系統(tǒng)的有著不同的請求域。這就要求用戶在訪問和認(rèn)證的過程中,要將Session信息同步到不同子系統(tǒng)中,從而保證用戶認(rèn)證后可以進(jìn)行身份漫游,實現(xiàn)不同子系統(tǒng)的無縫切換。
為了實現(xiàn)會話同步,本文采用的是通過Redis技術(shù)將會話信息存儲到共享數(shù)據(jù)庫中,改變原有存儲在web中間件內(nèi)存中的存儲方式,實現(xiàn)會話信息的持久化,并通過CAS的服務(wù)器端進(jìn)行會話共享,進(jìn)而實現(xiàn)多認(rèn)證服務(wù)器的協(xié)同工作,實現(xiàn)用戶的身份漫游。
5.2 ? 認(rèn)證票據(jù)
在基于CAS的認(rèn)證方案中,包含著兩種至關(guān)重要的票據(jù)TGT和ST,其中TGT為登錄票據(jù),ST為訪問票據(jù)。其中登錄票據(jù)TGT包含:ID、創(chuàng)建時間、過期策略、狀態(tài)及最后的使用時間等信息。訪問票據(jù)ST則包含著ID、訪問目錄、創(chuàng)建時間等信息。二者在認(rèn)證的過程中,通過認(rèn)證是否成功進(jìn)行轉(zhuǎn)換和同步,如果登錄成功則將TGT同步轉(zhuǎn)換為ST,如果不成功,則TGT銷毀和終止。
5.3 ? Redis共享數(shù)據(jù)的存儲結(jié)構(gòu)
本文采用Redis方案存儲統(tǒng)一身份認(rèn)證中的TGT、ST票據(jù)和Session會話信息。利用哈希的原理,對這三個對象進(jìn)行鍵值對的映射。在Redis得存儲過程中,通過鍵值對方式進(jìn)行存儲。其中對于Session會話對象,其鍵key為Session會話的ID,值為Session對象;對于票據(jù)TGT、ST,其ID為序列化后通過MD5計算得到的值,值為序列化后對象。Redis存儲方案中的具體數(shù)據(jù)結(jié)構(gòu)如表1所示。
5.4 ? 同步數(shù)據(jù)的實現(xiàn)
由于本文采用的是集群式的Redis部署方案,為此需要考慮集群之間的數(shù)據(jù)同步過程。本文在集群搭建的過程中,采用的是Sentinel流量控制框架,分別構(gòu)造了三個數(shù)據(jù)節(jié)點和監(jiān)控節(jié)點,從而保證集群系統(tǒng)的穩(wěn)定運行。
集群中的三個數(shù)據(jù)節(jié)點中,一個節(jié)點為主節(jié)點,兩個為從節(jié)點,形成了主從同步的高可用方案。其中主節(jié)點負(fù)責(zé)認(rèn)證數(shù)據(jù)的寫入,從節(jié)點負(fù)責(zé)數(shù)據(jù)的讀取操作,二者通過中繼推送的方式實現(xiàn)數(shù)據(jù)同步。在認(rèn)證的過程主節(jié)點上會根據(jù)數(shù)據(jù)節(jié)點的負(fù)載情況,將認(rèn)證請求分發(fā)至數(shù)據(jù)節(jié)點,進(jìn)而實現(xiàn)負(fù)載均衡。
在集群中Sentinel流量控制框架被部署在監(jiān)控節(jié)點上。監(jiān)
控節(jié)點會對數(shù)據(jù)節(jié)點進(jìn)行監(jiān)控,在集群運行的過程中,如果發(fā)現(xiàn)某一個節(jié)點服務(wù)異?;蛘叱霈F(xiàn)故障,則對節(jié)點進(jìn)行故障標(biāo)識,后續(xù)將不再分配訪問流量,并通過郵件或者其他消息的形式通知給管理員,告知其及時處理。
6 ? 結(jié)論(Conclusion)
針對現(xiàn)代信息門戶用戶訪問量大、信息系統(tǒng)集成數(shù)量多的特點,信息系統(tǒng)身份認(rèn)證分散、用戶體驗差等問題。本文設(shè)計了一種分布式協(xié)同統(tǒng)一身份認(rèn)證平臺。平臺提供認(rèn)證服務(wù)、目錄服務(wù)、接口服務(wù)、負(fù)載均衡及數(shù)據(jù)同步等功能。利用CA數(shù)字證書和SSL協(xié)議,增強認(rèn)證和傳輸過程中的安全性;采用SSO代理和服務(wù)器的模式實現(xiàn)用戶的單點登錄。通過票據(jù)同步、Redis共享數(shù)據(jù),以及身份漫游等技術(shù)實現(xiàn)分布式協(xié)同身份認(rèn)證。本文設(shè)計分布式協(xié)同統(tǒng)一身份認(rèn)證平臺,能夠有效提高信息化門戶的安全性和便捷性。
參考文獻(xiàn)(References)
[1] 方乃釵.統(tǒng)一身份認(rèn)證技術(shù)在機場的應(yīng)用[J].江蘇航空,2020?(02):34-35.
[2] 尹蕊,高陽,李凱,等.身份認(rèn)證技術(shù)在電力行業(yè)移動應(yīng)用中的應(yīng)用[J].中國新通信,2020,22(10):116.
[3] Entao Luo,Kehua Guo,Yayuan Tang,etal.Hidden the true identity and dating characteristics based on quick private matching in mobile social networks[J].Future Generation Computer Systems,2020(109):633-641.
[4] Quan Liu,Bei Gong,Zhenhu Ning.Research on CLPKC-IDPKC cross-domain identity authentication for IoT environment[J].Computer Communications,2020(157):410-416.
[5] 賈悠,葉常華,盧宇浩,等.一種基于安全標(biāo)簽的單向身份認(rèn)證技術(shù)[J].通信技術(shù),2020,53(05):1231-1234.
[6] 徐安令.基于三大平臺的高校數(shù)字化校園應(yīng)用系統(tǒng)整合集成設(shè)計[J].科技資訊,2020,18(06):29;31.
[7] 王群,李馥娟.一種基于單點登錄的實驗室統(tǒng)一身份認(rèn)證方案[J].實驗技術(shù)與管理,2020,37(05):219-223.
[8] 江澤濤,徐娟娟.云環(huán)境下基于簽密的異構(gòu)跨域身份認(rèn)證方案[J].計算機應(yīng)用,2020,40(03):740-746.
作者簡介:
彭 ? 勇(1975-),男,碩士,工程師.研究領(lǐng)域:數(shù)字化校園,網(wǎng)絡(luò)與信息安全.
黃劍華(1982-),男,碩士,工程師.研究領(lǐng)域:計算機網(wǎng)絡(luò),密碼學(xué).本文通訊作者.
王 ? 喆(1989-),女,碩士,助理研究員.研究領(lǐng)域:網(wǎng)絡(luò)輿論安全.
王全亮(1989-),男,碩士,講師.研究領(lǐng)域:教育技術(shù).
王 ? 歡(1987-),男,博士,副研究員.研究領(lǐng)域:網(wǎng)絡(luò)與信息安全.