賈 慧
(山西電力職業(yè)技術(shù)學(xué)院,山西 太原 030021)
基于LDAP統(tǒng)一認(rèn)證系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
賈 慧
(山西電力職業(yè)技術(shù)學(xué)院,山西 太原 030021)
隨著公司規(guī)模擴(kuò)大,各種網(wǎng)絡(luò)服務(wù)不斷增多,為了保證各種應(yīng)用服務(wù)之間用戶的一致性,迫切需要公司系統(tǒng)支持統(tǒng)一認(rèn)證服務(wù)。文章在LDAP的基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)統(tǒng)一認(rèn)證系統(tǒng),支持單點(diǎn)登錄,避免了用戶訪問不同應(yīng)用系統(tǒng)時(shí)重復(fù)驗(yàn)證用戶信息的繁瑣性,保證了系統(tǒng)在網(wǎng)絡(luò)環(huán)境下運(yùn)行的安全性。
身份認(rèn)證;輕量級目錄訪問協(xié)議;統(tǒng)一認(rèn)證系統(tǒng)
隨著公司信息化建設(shè)的不斷深入,系統(tǒng)不斷豐富,各種應(yīng)用系統(tǒng)逐漸集成到公司網(wǎng)絡(luò)環(huán)境中。一方面,用戶在進(jìn)行身份認(rèn)證時(shí)容易出現(xiàn)密碼丟失,一旦密碼泄漏便會(huì)造成不可估量的損失。而且隨著用戶數(shù)量的增加,網(wǎng)絡(luò)資源日益豐富,受攻擊的可能性就越大。網(wǎng)絡(luò)安全就是要保障各種網(wǎng)絡(luò)資源穩(wěn)定、可靠地運(yùn)行及受控、合法地被使用。在開放系統(tǒng)互聯(lián)(OSI)安全體系結(jié)構(gòu)模型中定義了五組安全服務(wù):認(rèn)證服務(wù)、訪問控制服務(wù)、數(shù)據(jù)的完整性、數(shù)據(jù)保密性、非否認(rèn)服務(wù)[1]。因此,認(rèn)證服務(wù)已經(jīng)成為應(yīng)用層必不可少的基本安全技術(shù)。
LDAP(Lightweight Directory Access Protocol)是基于X.500標(biāo)準(zhǔn),簡化后的目錄訪問協(xié)議[2]。
目錄服務(wù)將數(shù)據(jù)庫軟件的邏輯結(jié)構(gòu)分為客戶端和服務(wù)器端,LDAP目錄通常采用Client/Server模式進(jìn)行通訊,如圖1-1所示[3]。
圖1-1 LDAP工作模式
LDAP定義了客戶向服務(wù)器發(fā)送目錄訪問請求的格式,消息請求的操作類型有:綁定、查找、修改、刪除等。LDAP消息在TCP/IP協(xié)議上傳輸,所以能在客戶端和服務(wù)器端建立和斷開會(huì)話操作。
Java命名目錄接口(Java Naming and Directory Interface,JNDI)提供了基于Java訪問LADP服務(wù)的API[4]。
JNDI是一個(gè)通用化的命名和目錄接口。它不僅可以用于訪問LDAP目錄服務(wù),而且還可以訪問NIS(Network Information Services)和 DNS(Domain Name Server)等目錄系統(tǒng)。JNDI通過服務(wù)提供者接口(Service Provider Interface,簡稱 SPI)訪問特定的底層目錄服務(wù),SPI由底層的命名和目錄服務(wù)提供商以Java類庫的形式提供,可以將任意的SPI插入到JNDI框架之中。JNDI的框架圖如圖1-2所示。
圖1-2 JNDI框架圖
LDAP目錄服務(wù)可以實(shí)現(xiàn)單點(diǎn)登錄,在系統(tǒng)中單點(diǎn)集中(不指物理位置)管理資源?;贚DAP目錄服務(wù)的這些特點(diǎn),文章利用目錄服務(wù)實(shí)現(xiàn)統(tǒng)一的認(rèn)證。目前已經(jīng)有了許多基于LDAP協(xié)議開發(fā)出的資源管理系統(tǒng)和工具,如Openldap、NDS、ADS等。
統(tǒng)一認(rèn)證系統(tǒng)的設(shè)計(jì)主要考慮以下問題:
(1)單點(diǎn)登錄(Single Sign-On,SSO)[5]問題。
(2)統(tǒng)一身份認(rèn)證系統(tǒng)應(yīng)為其他應(yīng)用系統(tǒng)提供一個(gè)統(tǒng)一的接口,方便管理員將該系統(tǒng)集成到已有系統(tǒng)中,而且該系統(tǒng)對用戶來說是透明的。
(3)考慮到服務(wù)端的改動(dòng)應(yīng)該不影響其他應(yīng)用系統(tǒng)對服務(wù)的調(diào)用,還應(yīng)該實(shí)現(xiàn)統(tǒng)一認(rèn)證系統(tǒng)與其他系統(tǒng)之間的松散耦合。
統(tǒng)一認(rèn)證系統(tǒng)采用分布式管理體系結(jié)構(gòu)和分層式管理體系結(jié)構(gòu)相結(jié)合的方式進(jìn)行設(shè)計(jì)。分布式結(jié)構(gòu)管理者在一個(gè)層面上,并且地位是平等的,而分層式是多層結(jié)構(gòu),上層管理者管理多個(gè)下層的管理者。同一公司內(nèi)部采用分層管理體系結(jié)構(gòu),公司下屬不同子公司間采用分布式管理體系結(jié)構(gòu)。本系統(tǒng)統(tǒng)一認(rèn)證系統(tǒng)結(jié)構(gòu)如圖2-1。
圖2-1 統(tǒng)一認(rèn)證系統(tǒng)結(jié)構(gòu)圖
目錄服務(wù)將系統(tǒng)中的用戶、資源統(tǒng)一組織起來,提供一個(gè)單一的邏輯視圖。目錄服務(wù)層是系統(tǒng)的底層,目錄服務(wù)器保存的資料主要包括兩部分:
(1)個(gè)人用戶的基本資料,包括統(tǒng)一認(rèn)證的賬號(hào)和口令。
(2)統(tǒng)一認(rèn)證區(qū)域內(nèi)應(yīng)用系統(tǒng)的信息。
各分公司內(nèi)用戶統(tǒng)一認(rèn)證的流程如下:
(1)用戶登錄到應(yīng)用系統(tǒng)。
(2)應(yīng)用系統(tǒng)請求統(tǒng)一認(rèn)證服務(wù)系統(tǒng)認(rèn)證用戶信息,認(rèn)證完畢將該用戶所屬用戶組信息返回應(yīng)用系統(tǒng)。
(3)應(yīng)用系統(tǒng)根據(jù)用戶所在用戶組的級別授予該用戶相應(yīng)的權(quán)限。
目錄服務(wù)接口作為服務(wù)的客戶端,根據(jù)應(yīng)用程序的要求通過相應(yīng)的API向目錄服務(wù)器提出操作請求,并將請求結(jié)果返回給應(yīng)用程序。
OpenLDAP把所有與LDAP服務(wù)器相關(guān)的配置信息都放在slapd.conf文件中。安全控制列表的配置為:
只有userPassword屬性的所有者才能修改上述配置的第一項(xiàng),用戶和管理員可以修改自己的服務(wù)地址(attr=service1)。
系統(tǒng)中LDAP目錄訪問是基于Java名字和目錄訪問接口JNDI開放的。JNDI提供了基于Java的訪問LDAP服務(wù)的API。目錄訪問在實(shí)際開發(fā)中主要運(yùn)用到了JNDI開發(fā)包中的javax.naming.*和javax.naming.directory.*包。
目錄訪問實(shí)現(xiàn)的主要功能都封裝在JavaBean中,包括:目錄服務(wù)器的綁定/認(rèn)證、在目錄中查詢目錄項(xiàng)、添加目錄項(xiàng)、修改已經(jīng)存在的目錄項(xiàng)、刪除目錄項(xiàng)等,亦即通過JNDI實(shí)現(xiàn)一套基于JNDI的JavaBean,通過在JSP頁面中調(diào)用JavaBean,從而實(shí)現(xiàn)了在網(wǎng)絡(luò)環(huán)境中與目錄服務(wù)器之間的交互。
統(tǒng)一身份認(rèn)證系統(tǒng)的應(yīng)用如下:
(1)用戶登錄系統(tǒng),登錄界面如圖4-1所示。
圖4-1 登錄界面圖
(2)瀏覽首頁內(nèi)容,如圖4-2所示。
圖4-2 內(nèi)部門戶信息系統(tǒng)界面圖
應(yīng)用系統(tǒng)導(dǎo)航中集成了不同的應(yīng)用系統(tǒng)服務(wù)。以在線培訓(xùn)系統(tǒng)為例,用戶在進(jìn)入門戶系統(tǒng)后,點(diǎn)擊在線培訓(xùn)系統(tǒng),在線培訓(xùn)系統(tǒng)請求統(tǒng)一認(rèn)證系統(tǒng)認(rèn)證用戶“張三”的信息,認(rèn)證系統(tǒng)將用戶“張三”所在的人力資源部員工的信息返回給在線培訓(xùn)系統(tǒng)。
(3)在線培訓(xùn)系統(tǒng)為用戶“張三”設(shè)置相應(yīng)的課程,用戶訪問在線培訓(xùn)系統(tǒng)時(shí)不需要重新登錄,也感覺不到統(tǒng)一認(rèn)證系統(tǒng)的存在,點(diǎn)擊在線培訓(xùn)系統(tǒng)后的界面如圖4-3所示。用戶使用公司內(nèi)部的任何系統(tǒng)只需要登錄一次,提高了系統(tǒng)的使用效率。
圖4-3 在線培訓(xùn)系統(tǒng)界面圖
該系統(tǒng)實(shí)現(xiàn)了應(yīng)用系統(tǒng)的用戶集中管理和統(tǒng)一認(rèn)證;采用分層和分布式相結(jié)合的管理模式,具有良好的擴(kuò)展性和適應(yīng)性,能適應(yīng)復(fù)雜的環(huán)境,具有一定的應(yīng)用價(jià)值。
[1]趙榮,張雪鋒,范九倫.一種新的單點(diǎn)登錄認(rèn)證協(xié)議[J].軟件導(dǎo)刊,2010,2(9):134-136.
[2]MENG Fan-zi,XIE Qi,LDAP's Framework and Its Practices[M].Computer Technology and Development.2006-10.
[3]V.Koutsonikola,A.Vakali.LDAP:Framework,Practices and Trends.Internet Computing,2004,5(8):66-72.
[4]A.Barman.LDAP Application Development Using J2EE and.NET.Proceedings of the IEEE INDICON 2004,India,2004.494-497.
[5]任傳倫,李忠獻(xiàn),鈕心忻,楊義先.一種分布式網(wǎng)絡(luò)環(huán)境下單點(diǎn)登錄模型[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,(2):40-44.
TP393
A
1673-2014(2011)05-0049-03
2011—05—11
賈 慧(1983— ),女,山西太原人,碩士,助教,主要從事網(wǎng)絡(luò)及網(wǎng)絡(luò)安全研究。
(責(zé)任編輯 郝瑞宇)