賈 慧
(山西電力職業技術學院,山西 太原 030021)
基于LDAP統一認證系統的設計與實現
賈 慧
(山西電力職業技術學院,山西 太原 030021)
隨著公司規模擴大,各種網絡服務不斷增多,為了保證各種應用服務之間用戶的一致性,迫切需要公司系統支持統一認證服務。文章在LDAP的基礎上設計并實現了一個統一認證系統,支持單點登錄,避免了用戶訪問不同應用系統時重復驗證用戶信息的繁瑣性,保證了系統在網絡環境下運行的安全性。
身份認證;輕量級目錄訪問協議;統一認證系統
隨著公司信息化建設的不斷深入,系統不斷豐富,各種應用系統逐漸集成到公司網絡環境中。一方面,用戶在進行身份認證時容易出現密碼丟失,一旦密碼泄漏便會造成不可估量的損失。而且隨著用戶數量的增加,網絡資源日益豐富,受攻擊的可能性就越大。網絡安全就是要保障各種網絡資源穩定、可靠地運行及受控、合法地被使用。在開放系統互聯(OSI)安全體系結構模型中定義了五組安全服務:認證服務、訪問控制服務、數據的完整性、數據保密性、非否認服務[1]。因此,認證服務已經成為應用層必不可少的基本安全技術。
LDAP(Lightweight Directory Access Protocol)是基于X.500標準,簡化后的目錄訪問協議[2]。
目錄服務將數據庫軟件的邏輯結構分為客戶端和服務器端,LDAP目錄通常采用Client/Server模式進行通訊,如圖1-1所示[3]。

圖1-1 LDAP工作模式
LDAP定義了客戶向服務器發送目錄訪問請求的格式,消息請求的操作類型有:綁定、查找、修改、刪除等。LDAP消息在TCP/IP協議上傳輸,所以能在客戶端和服務器端建立和斷開會話操作。
Java命名目錄接口(Java Naming and Directory Interface,JNDI)提供了基于Java訪問LADP服務的API[4]。
JNDI是一個通用化的命名和目錄接口。它不僅可以用于訪問LDAP目錄服務,而且還可以訪問NIS(Network Information Services)和 DNS(Domain Name Server)等目錄系統。JNDI通過服務提供者接口(Service Provider Interface,簡稱 SPI)訪問特定的底層目錄服務,SPI由底層的命名和目錄服務提供商以Java類庫的形式提供,可以將任意的SPI插入到JNDI框架之中。JNDI的框架圖如圖1-2所示。

圖1-2 JNDI框架圖
LDAP目錄服務可以實現單點登錄,在系統中單點集中(不指物理位置)管理資源。基于LDAP目錄服務的這些特點,文章利用目錄服務實現統一的認證。目前已經有了許多基于LDAP協議開發出的資源管理系統和工具,如Openldap、NDS、ADS等。
統一認證系統的設計主要考慮以下問題:
(1)單點登錄(Single Sign-On,SSO)[5]問題。
(2)統一身份認證系統應為其他應用系統提供一個統一的接口,方便管理員將該系統集成到已有系統中,而且該系統對用戶來說是透明的。
(3)考慮到服務端的改動應該不影響其他應用系統對服務的調用,還應該實現統一認證系統與其他系統之間的松散耦合。
統一認證系統采用分布式管理體系結構和分層式管理體系結構相結合的方式進行設計。分布式結構管理者在一個層面上,并且地位是平等的,而分層式是多層結構,上層管理者管理多個下層的管理者。同一公司內部采用分層管理體系結構,公司下屬不同子公司間采用分布式管理體系結構。本系統統一認證系統結構如圖2-1。

圖2-1 統一認證系統結構圖
目錄服務將系統中的用戶、資源統一組織起來,提供一個單一的邏輯視圖。目錄服務層是系統的底層,目錄服務器保存的資料主要包括兩部分:
(1)個人用戶的基本資料,包括統一認證的賬號和口令。
(2)統一認證區域內應用系統的信息。
各分公司內用戶統一認證的流程如下:
(1)用戶登錄到應用系統。
(2)應用系統請求統一認證服務系統認證用戶信息,認證完畢將該用戶所屬用戶組信息返回應用系統。
(3)應用系統根據用戶所在用戶組的級別授予該用戶相應的權限。
目錄服務接口作為服務的客戶端,根據應用程序的要求通過相應的API向目錄服務器提出操作請求,并將請求結果返回給應用程序。
OpenLDAP把所有與LDAP服務器相關的配置信息都放在slapd.conf文件中。安全控制列表的配置為:

只有userPassword屬性的所有者才能修改上述配置的第一項,用戶和管理員可以修改自己的服務地址(attr=service1)。
系統中LDAP目錄訪問是基于Java名字和目錄訪問接口JNDI開放的。JNDI提供了基于Java的訪問LDAP服務的API。目錄訪問在實際開發中主要運用到了JNDI開發包中的javax.naming.*和javax.naming.directory.*包。
目錄訪問實現的主要功能都封裝在JavaBean中,包括:目錄服務器的綁定/認證、在目錄中查詢目錄項、添加目錄項、修改已經存在的目錄項、刪除目錄項等,亦即通過JNDI實現一套基于JNDI的JavaBean,通過在JSP頁面中調用JavaBean,從而實現了在網絡環境中與目錄服務器之間的交互。
統一身份認證系統的應用如下:
(1)用戶登錄系統,登錄界面如圖4-1所示。

圖4-1 登錄界面圖
(2)瀏覽首頁內容,如圖4-2所示。

圖4-2 內部門戶信息系統界面圖
應用系統導航中集成了不同的應用系統服務。以在線培訓系統為例,用戶在進入門戶系統后,點擊在線培訓系統,在線培訓系統請求統一認證系統認證用戶“張三”的信息,認證系統將用戶“張三”所在的人力資源部員工的信息返回給在線培訓系統。
(3)在線培訓系統為用戶“張三”設置相應的課程,用戶訪問在線培訓系統時不需要重新登錄,也感覺不到統一認證系統的存在,點擊在線培訓系統后的界面如圖4-3所示。用戶使用公司內部的任何系統只需要登錄一次,提高了系統的使用效率。

圖4-3 在線培訓系統界面圖
該系統實現了應用系統的用戶集中管理和統一認證;采用分層和分布式相結合的管理模式,具有良好的擴展性和適應性,能適應復雜的環境,具有一定的應用價值。
[1]趙榮,張雪鋒,范九倫.一種新的單點登錄認證協議[J].軟件導刊,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]任傳倫,李忠獻,鈕心忻,楊義先.一種分布式網絡環境下單點登錄模型[J].計算機系統應用,2011,(2):40-44.
TP393
A
1673-2014(2011)05-0049-03
2011—05—11
賈 慧(1983— ),女,山西太原人,碩士,助教,主要從事網絡及網絡安全研究。
(責任編輯 郝瑞宇)