華建祥 瞿霞
摘 要:針對(duì)校園網(wǎng)各應(yīng)用系統(tǒng)對(duì)用戶無法統(tǒng)一管理、認(rèn)證和授權(quán)等問題,提出了基于LDAP協(xié)議的統(tǒng)一身份認(rèn)證解決方案,該方案實(shí)現(xiàn)了對(duì)集成系統(tǒng)用戶的統(tǒng)一管理、統(tǒng)一認(rèn)證和統(tǒng)一授權(quán),具有較高的安全性和可靠性。
關(guān)鍵詞: LDAP;統(tǒng)一身份認(rèn)證;目錄信息樹;SASL
文章編號(hào): 2095-2163(2019)03-0129-04 中圖分類號(hào): TP311.52 文獻(xiàn)標(biāo)志碼: A
0 引 言
賬號(hào)密碼是用戶進(jìn)入應(yīng)用系統(tǒng)的憑證,身份認(rèn)證的過程就是判斷用戶憑證是否有效的過程,若有效,即是合法用戶,否則為非法用戶,一般而言,一套應(yīng)用系統(tǒng)對(duì)一個(gè)用戶來說只有一套賬號(hào)密碼。統(tǒng)一身份認(rèn)證,是指一個(gè)用戶使用一套賬號(hào)密碼,就可訪問所有應(yīng)用系統(tǒng),從而實(shí)現(xiàn)“用戶一次登錄,一站式訪問所有授權(quán)應(yīng)用系統(tǒng)”。
隨著校園信息化建設(shè)的不斷深入,基于校園的應(yīng)用越來越多,其中有B/S架構(gòu),也有C/S架構(gòu)[1],如教務(wù)管理系統(tǒng)、學(xué)工管理系統(tǒng)、站群管理系統(tǒng)、就業(yè)管理系統(tǒng)、自主學(xué)習(xí)平臺(tái)、云辦公系統(tǒng)、網(wǎng)絡(luò)云盤等。不管哪一種應(yīng)用系統(tǒng),用戶要使用都必須進(jìn)行身份認(rèn)證,因此,應(yīng)用系統(tǒng)越多,用戶要記住的賬號(hào)密碼就越多,對(duì)用戶來說,這顯然是一種負(fù)擔(dān)。另外,系統(tǒng)管理人員要維護(hù)各個(gè)應(yīng)用系統(tǒng)的用戶數(shù)據(jù),保證同一用戶群體在各個(gè)系統(tǒng)中都有相應(yīng)的用戶數(shù)據(jù),同時(shí)針對(duì)各個(gè)用戶在各個(gè)系統(tǒng)中分配相應(yīng)的權(quán)限,這是一件比較復(fù)雜、耗時(shí)的事情,若還要處理用戶因忘記用戶名或密碼要求找回或重置的申請(qǐng),則更加重了系統(tǒng)管理人員的負(fù)擔(dān)。所以校園信息化建設(shè)的首要目的就是要搭建統(tǒng)一身份認(rèn)證平臺(tái),實(shí)現(xiàn)對(duì)用戶身份的統(tǒng)一認(rèn)證[2]。
用戶賬戶信息的快速檢索、統(tǒng)一管理和統(tǒng)一維護(hù)是實(shí)現(xiàn)統(tǒng)一身份認(rèn)證的前提條件。本文根據(jù)作者學(xué)院校園信息化建設(shè)經(jīng)驗(yàn),提出了一種基于LDAP協(xié)議的統(tǒng)一身份認(rèn)證方案,該方案利用LDAP協(xié)議對(duì)各應(yīng)用系統(tǒng)用戶進(jìn)行統(tǒng)一身份認(rèn)證,用戶通過認(rèn)證即可訪問所有授權(quán)的應(yīng)用系統(tǒng)?;贚DAP協(xié)議的統(tǒng)一身份認(rèn)證系統(tǒng)優(yōu)化了用戶登錄體驗(yàn),方便了用戶統(tǒng)一管理,提高了系統(tǒng)的安全性。
1 LDAP目錄服務(wù)
1.1 LDAP協(xié)議
輕量目錄訪問協(xié)議LDAP由美國密歇根大學(xué)開發(fā)[3],是一種被廣泛接受的目錄訪問方法,是開放的行業(yè)標(biāo)準(zhǔn)。LDAP是一種特殊的數(shù)據(jù)庫,其中數(shù)據(jù)以目錄方式組織,目錄由對(duì)象構(gòu)成,對(duì)象具有屬性信息,屬性在本質(zhì)上是一種鍵-值對(duì),是目錄中存儲(chǔ)數(shù)據(jù)的一種方式。LDAP對(duì)數(shù)據(jù)的寫入較慢,修改操作只是使用簡單的鎖定機(jī)制實(shí)現(xiàn),不支持復(fù)雜的事務(wù),也沒有事務(wù)的回滾機(jī)制[4],因此,LDAP主要任務(wù)不是數(shù)據(jù)存儲(chǔ)和操作,也并不適合存儲(chǔ)大量需要除查詢以外操作(如增加、刪除、修改等操作)的數(shù)據(jù),但LDAP的讀取性能比其寫入性能要強(qiáng),比一般的關(guān)系型數(shù)據(jù)庫的查詢速度快很多[5],同時(shí),LDAP基于X.500標(biāo)準(zhǔn)的安全協(xié)議,由簡單安全證明層(SASL)協(xié)議提供訪問控制,利用SSL/TLS認(rèn)證機(jī)制來保護(hù)數(shù)據(jù)完整性和隱私[6]。因此,將LDAP用于網(wǎng)絡(luò)環(huán)境下讀密集型操作的統(tǒng)一身份認(rèn)證,是非常高效安全的。
1.2 LDAP目錄信息樹
目錄信息樹(Directory Information Tree,DIT)以樹型結(jié)構(gòu)存儲(chǔ)對(duì)象(條目)[7],其設(shè)計(jì)的好壞直接關(guān)系認(rèn)證系統(tǒng)的整體查詢性能,因此,在設(shè)計(jì)目錄信息樹結(jié)構(gòu)時(shí)要盡量減少目錄信息樹的結(jié)構(gòu)層次,因?yàn)閷哟卧缴?,?duì)象(條目)的標(biāo)識(shí)名就越短,受其它因素影響越小。當(dāng)出現(xiàn)某個(gè)部門機(jī)構(gòu)調(diào)整時(shí),結(jié)構(gòu)層次越少,對(duì)其它部門或分支的影響就越小。
2 統(tǒng)一身份認(rèn)證過程
在多應(yīng)用系統(tǒng)共存的校園網(wǎng)環(huán)境下,采用統(tǒng)一身份認(rèn)證方案即可實(shí)現(xiàn)“用戶一次登錄,一站式訪問所有授權(quán)應(yīng)用系統(tǒng)”,其認(rèn)證過程如圖1所示。
其統(tǒng)一認(rèn)證過程如下:
(1)用戶登錄操作,輸入賬號(hào)密碼,統(tǒng)一身份認(rèn)證模塊接受用戶登錄驗(yàn)證請(qǐng)求。
(2)統(tǒng)一身份認(rèn)證模塊根據(jù)用戶提交的賬戶密碼進(jìn)入LDAP數(shù)據(jù)庫檢索,驗(yàn)證用戶身份的合法性。
(3)用戶身份驗(yàn)證合法,將結(jié)果返回給統(tǒng)一身份驗(yàn)證模塊。
(4)統(tǒng)一身份驗(yàn)證模塊為合法用戶發(fā)放許可進(jìn)入已經(jīng)集成應(yīng)用系統(tǒng)的身份令牌。
(5)用戶登錄應(yīng)用系統(tǒng)并向應(yīng)用系統(tǒng)提交獲得的身份令牌。
(6)應(yīng)用系統(tǒng)發(fā)起查驗(yàn)用戶身份令牌操作。
(7)統(tǒng)一身份認(rèn)證模塊證實(shí)身份令牌的有效性,則用戶登錄成功,根據(jù)角色授權(quán)訪問應(yīng)用系統(tǒng)相關(guān)資源。
(8)用戶獲得服務(wù)。
3 系統(tǒng)總體結(jié)構(gòu)
如圖2所示,統(tǒng)一身份認(rèn)證系統(tǒng)總體結(jié)構(gòu)主要包括目錄服務(wù)層、目錄服務(wù)接口層、應(yīng)用服務(wù)層和對(duì)外接口層。其中,目錄服務(wù)層操作的對(duì)象是目錄數(shù)據(jù)庫,通過API接口與上層通信,目錄數(shù)據(jù)庫主要存儲(chǔ)用戶信息和集成的應(yīng)用系統(tǒng)信息;目錄服務(wù)接口層為集成的應(yīng)用系統(tǒng)服務(wù),負(fù)責(zé)向目錄服務(wù)器提交應(yīng)用系統(tǒng)的操作請(qǐng)求并返回請(qǐng)求結(jié)果;應(yīng)用服務(wù)層是一個(gè)中間件,負(fù)責(zé)對(duì)外接口層的請(qǐng)求分析和處理;對(duì)外接口層面向外部用戶,負(fù)責(zé)處理外部的請(qǐng)求,并將處理結(jié)果回送給請(qǐng)求端。
應(yīng)用服務(wù)層的功能主要包括用戶身份認(rèn)證、用戶集中管理和應(yīng)用系統(tǒng)注冊(cè)三個(gè)部分。對(duì)此可做闡釋分述如下。
(1)用戶身份認(rèn)證。用戶請(qǐng)求使用網(wǎng)內(nèi)資源時(shí)必須先進(jìn)行用戶的身份認(rèn)證,合法用戶才能取得統(tǒng)一身份認(rèn)證系統(tǒng)發(fā)放的身份令牌,當(dāng)用戶進(jìn)入應(yīng)用系統(tǒng)后,應(yīng)用系統(tǒng)須將用戶提供的身份令牌提交給統(tǒng)一身份認(rèn)證系統(tǒng)進(jìn)行認(rèn)證,若為合法用戶則根據(jù)角色授予相應(yīng)資源訪問權(quán)限。
(2)用戶集中管理。原有業(yè)務(wù)系統(tǒng)相互獨(dú)立,每套應(yīng)用系統(tǒng)都有一套用戶管理系統(tǒng),如人事管理系統(tǒng)有全校教工的人事基本信息,教務(wù)管理系統(tǒng)有全校學(xué)生的學(xué)生基本信息,用戶集中統(tǒng)一管理的目的在于整合上述的教師、學(xué)生基本信息,因此,其設(shè)計(jì)的核心在于實(shí)現(xiàn)LDAP目錄數(shù)據(jù)庫存儲(chǔ)的用戶信息與應(yīng)用系統(tǒng)用戶管理的信息交互和數(shù)據(jù)同步。
(3)應(yīng)用系統(tǒng)注冊(cè)。應(yīng)用系統(tǒng)要實(shí)現(xiàn)系統(tǒng)集成,就必須在統(tǒng)一身份認(rèn)證系統(tǒng)中注冊(cè),并提交相關(guān)注冊(cè)信息,如應(yīng)用系統(tǒng)描述、相關(guān)用戶組及用戶條件、管理員信息、訪問URL等,統(tǒng)一身份認(rèn)證系統(tǒng)接收注冊(cè)信息后需在DIT中增加注冊(cè)系統(tǒng)的節(jié)點(diǎn),并設(shè)定相關(guān)訪問控制信息、系統(tǒng)標(biāo)識(shí)ID,簽發(fā)相關(guān)數(shù)字證書。
4 系統(tǒng)實(shí)現(xiàn)
4.1 目錄信息樹設(shè)計(jì)
以福建林業(yè)職業(yè)技術(shù)學(xué)院統(tǒng)一身份認(rèn)證系統(tǒng)目錄信息樹設(shè)計(jì)為例,目錄信息樹中主要存儲(chǔ)的是用戶賬戶信息和集成的應(yīng)用系統(tǒng)信息,如圖3所示,本院的域名為fjlzy.com,因此,目錄樹基準(zhǔn)標(biāo)識(shí)名(Distinguished Name,DN)為dc=fjlzy,dc=com。目錄樹根下主要有2類信息,包括:People用戶信息和Application集成應(yīng)用系統(tǒng)信息。為此將給出設(shè)計(jì)解析描述如下。
(1)People:主要用于存放用戶信息,可細(xì)分為Groups、Teachers、Students、Others等4類組織角色。其中,Groups用戶組可進(jìn)一步細(xì)分為超級(jí)管理員角色、職能部門管理員角色和系部管理員角色,院系內(nèi)部還可繼續(xù)予以細(xì)分;Teachers指的是教師角色,可進(jìn)一步細(xì)分為院領(lǐng)導(dǎo)、行政上班、行政兼課、專任教師和其它人員五類,根據(jù)需要可對(duì)細(xì)分的角色進(jìn)行相應(yīng)的權(quán)限控制;Students指的是學(xué)生角色,可根據(jù)學(xué)制細(xì)分為二年制學(xué)生、三年制學(xué)生、五年制學(xué)生、二元制學(xué)生和現(xiàn)代學(xué)徒制學(xué)生等;Others為臨時(shí)用戶角色。
(2)Application:主要用于存放集成的應(yīng)用系統(tǒng)的相關(guān)信息,如教科研系統(tǒng)、校情展示系統(tǒng)、網(wǎng)站群管理系統(tǒng)、VPN、數(shù)字云盤、校友管理系統(tǒng)、招生管理系統(tǒng)、網(wǎng)上辦事大廳、移動(dòng)校園等,包括訪問控制信息、系統(tǒng)標(biāo)識(shí)ID、系統(tǒng)描述、訪問URL等相關(guān)信息。
條目(Entry)是目錄管理對(duì)象,這是LDAP中最基本的顆粒,就像字典中的詞條,或者數(shù)據(jù)庫中的記錄,每個(gè)條目都有一個(gè)唯一的標(biāo)識(shí)名DN,比如cn=huajianxiang,ou=Admin,ou=Groups,ou=People,dc=fjlzy,dc=com。每個(gè)條目都可以有很多屬性(Attribute),比如管理人員條目中有姓名、電話、職務(wù)、用戶ID、密碼、性別、用戶狀態(tài)等屬性,每個(gè)屬性都有名稱及對(duì)應(yīng)的值,屬性值可以是單個(gè),也可以是多個(gè),比如教師用戶或?qū)W生用戶可以有多個(gè)電話,這樣電話屬性就可以對(duì)應(yīng)多個(gè)值。
LDAP為人員組織機(jī)構(gòu)中常見的對(duì)象都設(shè)計(jì)了屬性,詳情見表1,后續(xù)可根據(jù)實(shí)際情況參考表1進(jìn)行設(shè)計(jì)。
4.2 角色定義
角色(Role)實(shí)際上是一組操作集合,不同的角色被賦予不同的操作集合,每種角色都有某些特定的權(quán)限或功能,一般根據(jù)用戶工作崗位或工作職責(zé)分配不同的角色,一旦用戶被賦予某種角色,則具有這種角色被賦予的操作權(quán)限。在LDAP中還可通過設(shè)置訪問控制表(ACL)來控制角色成員對(duì)指定條目的訪問權(quán)限,比如控制某類用戶訪問某種資源或資源的某種屬性。
校園信息化系統(tǒng)擁有眾多的用戶,如果對(duì)每個(gè)用戶都進(jìn)行權(quán)限配置,工作量非常大,而且對(duì)于用戶狀態(tài)的改變,如學(xué)生畢業(yè)、教師調(diào)崗等都需要對(duì)用戶權(quán)限進(jìn)行重新分配。一般而言對(duì)于擁有眾多用戶的校園信息化系統(tǒng)不會(huì)直接將權(quán)限分配給用戶,而是通過角色來授予用戶權(quán)限,角色的引入有3個(gè)顯著優(yōu)勢(shì),具體內(nèi)容如下。
(1)減少權(quán)限分配和調(diào)整的工作量,學(xué)生畢業(yè)或教師調(diào)崗只須簡單變換角色,即可完成權(quán)限的分配和調(diào)整。
(2)靈活支持安全策略,過濾某一種角色的權(quán)限,即可控制該角色下所有成員的訪問權(quán)限。
(3)用戶管理高效。因此,在本院的信息化系統(tǒng)中,所有用戶均歸屬相應(yīng)角色,如教師角色細(xì)分為院領(lǐng)導(dǎo)、行政上班、行政兼課、專任教師和其它人員五種角色。以共享數(shù)據(jù)中心應(yīng)用為例,院領(lǐng)導(dǎo)角色可以查閱、統(tǒng)計(jì)分析所有數(shù)據(jù),并得到所有數(shù)據(jù)報(bào)表;行政上班角色可以查閱自己所屬部門或院系的相關(guān)數(shù)據(jù)及報(bào)表;專任教師角色可以查閱本人所在教研室的所有數(shù)據(jù)及報(bào)表;其它人員則只查閱本人相關(guān)數(shù)據(jù)。
4.3 安全模型設(shè)計(jì)
分析可知,校園信息化系統(tǒng)中的用戶本身就是LDAP的訪問用戶,所以LDAP可以針對(duì)這些用戶提供集中式的身份認(rèn)證(Authentication)和授權(quán)管理(Authorization)功能。根據(jù)LDAP v3的規(guī)范,身份驗(yàn)證的方式有4種,分別是:匿名驗(yàn)證、基礎(chǔ)驗(yàn)證、SASL驗(yàn)證和Kerberos驗(yàn)證。對(duì)此擬展開研究論述如下。
(1)匿名驗(yàn)證:用戶登錄時(shí)不提供賬戶密碼,由系統(tǒng)賦予缺省的身份與訪問權(quán)限,一旦設(shè)置了匿名驗(yàn)證功能,用戶不經(jīng)驗(yàn)證即可訪問目錄樹中的條目,當(dāng)然因?yàn)闄?quán)限問題會(huì)屏蔽掉很多信息,只能看到一些完全公開的信息。
(2)基礎(chǔ)驗(yàn)證:最常見的用戶密碼驗(yàn)證方式,在基礎(chǔ)驗(yàn)證中,用戶名就是LDAP條目的DN,密碼可以用各種算法加密存儲(chǔ)?;A(chǔ)驗(yàn)證由于設(shè)計(jì)簡單且與LDAP結(jié)合緊密,是最常用的一種驗(yàn)證方式,但在使用上也有明顯的缺點(diǎn)。首先,驗(yàn)證方需要提供條目的DN和口令,DN其實(shí)反映了LDAP目錄的內(nèi)部組織結(jié)構(gòu),用戶并不需要了解,要用戶記住諸如cn=huajianxiang,ou=Admin,ou=Groups,ou=People,dc=fjlzy,dc=com這樣的條目DN不太現(xiàn)實(shí)。其次,基礎(chǔ)驗(yàn)證中DN和口令在網(wǎng)絡(luò)中以明碼方式傳送,這使得遠(yuǎn)程驗(yàn)證過程容易被監(jiān)聽和盜用。所以,這種方式多用于內(nèi)網(wǎng)驗(yàn)證,或者通信鏈路本身已經(jīng)有加密機(jī)制保護(hù)。
(3)SASL驗(yàn)證:LDAP v3標(biāo)準(zhǔn)引入了Simple Authentication and Security Layer(SASL)基于連接協(xié)議的一種框架,SASL解決了基礎(chǔ)驗(yàn)證存在的問題,用戶身份可以是DN或者用戶名,認(rèn)證憑據(jù)可以是密碼或數(shù)字證書,SASL為驗(yàn)證過程設(shè)計(jì)了不同的安全機(jī)制,常用的有Digest-MD5、Kerberos、TLS/SSL驗(yàn)證,如此即使得用戶名和密碼在網(wǎng)絡(luò)上以密文方式傳輸,防止監(jiān)聽和篡改,大大提高了安全性。
(4)Kerberos驗(yàn)證:Kerberos驗(yàn)證多用于網(wǎng)絡(luò)認(rèn)證服務(wù)(Network Authentication Service,NAS)。在NAS環(huán)境中,客戶端的密鑰由密鑰發(fā)布中心(Key Distribution Center,KDC)簽發(fā),客戶端保存私鑰部分,KDC保存公鑰部分。在使用時(shí),客戶端發(fā)送一個(gè)憑證請(qǐng)求到KDC,KDC創(chuàng)建一個(gè)授權(quán)憑證(Ticket-Granting Ticket,TGT),以客戶端的公鑰加密并返回給客戶端。客戶端收到TGT后用自己的私鑰解密,如果成功就將該TGT當(dāng)作客戶端通信憑證。每隔一段時(shí)間TGT會(huì)超時(shí),這時(shí)客戶端會(huì)發(fā)起申請(qǐng)要求派發(fā)下一憑證以保持通信連續(xù),這一過程是自動(dòng)的,無需用戶參與。
本院的統(tǒng)一身份認(rèn)證系統(tǒng)采用了SASL身份認(rèn)證機(jī)制,其應(yīng)用如圖4所示,LDAP客戶端請(qǐng)求調(diào)用服務(wù)端的SASL協(xié)議驅(qū)動(dòng),再由服務(wù)端的SASL協(xié)議驅(qū)動(dòng)連接認(rèn)證系統(tǒng),從而實(shí)現(xiàn)對(duì)客戶端用戶的身份驗(yàn)證,由于用戶信息均以密文傳輸,安全性非常高。
5 結(jié)束語
本文重點(diǎn)探討了基于LDAP統(tǒng)一身份認(rèn)證系統(tǒng)中目錄信息樹的設(shè)計(jì)、角色定義和安全模型設(shè)計(jì),詳細(xì)分析了統(tǒng)一身份驗(yàn)證過程。實(shí)踐證明,基于LDAP的統(tǒng)一身份認(rèn)證系統(tǒng)成功實(shí)現(xiàn)了用戶的統(tǒng)一管理、認(rèn)證和授權(quán),系統(tǒng)具有較高的安全性和可靠性。
參考文獻(xiàn)
[1]賀玉明,李晉宏,唐輝. LDAP在數(shù)字校園統(tǒng)一身份認(rèn)證系統(tǒng)中的應(yīng)用[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2011,21(5):139-142.
[2] 黃秀芳,王海. 基于LDAP的高校數(shù)字化校園統(tǒng)一身份認(rèn)證集成實(shí)施方案[J]. 江蘇科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,29(6):580-584.
[3] 王衛(wèi)華,王長杰. 基于LDAP的統(tǒng)一身份認(rèn)證在網(wǎng)絡(luò)中的應(yīng)用[J]. 清遠(yuǎn)職業(yè)技術(shù)學(xué)院學(xué)報(bào) 2014,7(6):38-40.
[4] 吳曉斌,張?jiān)铝? 基于LDAP的校園網(wǎng)統(tǒng)一身份認(rèn)證系統(tǒng)設(shè)計(jì)[J]. 華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2003,31(S1):332-334.
[5] 袁軼,宋秋林. 基于LDAP的用戶認(rèn)證系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 重慶電子工程職業(yè)學(xué)院學(xué)報(bào) 2012,21(3):161-164.
[6] 譚勝蘭. 基于LDAP技術(shù)的校園網(wǎng)統(tǒng)一身份認(rèn)證系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 東莞理工學(xué)院學(xué)報(bào), 2009,16(3):82-86.
[7] 張希奇. 基于目錄服務(wù)的統(tǒng)一身份認(rèn)證和登錄系統(tǒng)研究[J]. 安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2015,14(2):1-4.