裴華艷,王煥民
(1.甘肅廣播電視大學 教務處,蘭州 730030;2.蘭州交通大學 機電技術研究所,蘭州 730070 )
在鐵路企業內部,一般都有OA辦公系統、人力資源管理系統、鐵路貨運制票系統、鐵路調度管理系統、鐵路一卡通系統等應用系統,這些不同的系統往往是在不同的時期建設起來的,采用了不同的軟件設計語言、不同的體系結構、不同的底層數據庫,運行在不同的平臺上,由不同的廠商開發,使用了各種不同的技術和標準。隨著業務系統的不斷增加,老的系統不能被輕易替換,新舊系統形成了信息孤島,各系統獨立管理用戶,增加了管理員的管理與維護工作;各系統獨立分配管理賬號口令,獨立進行用戶身份認證與授權,用戶在訪問不同的應用系統時,每次都需要輸入賬號與口令,且需要記憶多套訪問口令,多次身份認證使系統應用變得非常不便;新增系統的用戶管理與身份認證依舊各自為政,隨著系統的不斷增加,形成惡性循環。為此,提出鐵路企業單點登錄平臺的研究與實現。
單點登錄(Single Sign On)是一種訪問認證機制[1],允許用戶進行一次登錄認證,就可以訪問已授權的應用系統,而不需要在訪問每個系統時都輸入賬號與口令進行身份認證。單點登錄提供了統一的用戶管理,集中管理和維護不同應用系統的用戶信息與用戶賬號;同時,通過提供統一的身份認證機制,有效地解決了多次身份認證帶來的不便與安全問題。
LDAP(Lightweight Directory Access Protocol,即輕量目錄訪問協議)[2],它采用目錄樹的形式分層存儲信息,具有目錄信息的檢索與管理功能,主要用于從服務器上檢索信息,實現對信息的有效管理和訪問。
目錄服務(D irectory service)是一種技術,它將分布式系統中的用戶、資源和其它對象統一組織起來存儲為具有描述性屬性的對象,統一管理和控制分布在計算機網絡中的各類資源,方便用戶查找、檢索所需的資源。利用目錄服務,用戶和應用可以通過資源的名稱快速查找和定位資源,而不必關心資源的具體位置[3],實現了對資源的透明訪問。目錄服務具有如下功能:用戶的統一認證,系統資源的共享、統一授權、單點統一管理和統一監控等。
LDAP協議是基于C/S模式的,其目錄服務建立在C/S模式之上[4],以客戶端/服務器的方式工作,所有的目錄信息數據存儲在LDAP服務器中,一個或多個LDAP服務器組成LDAP目錄樹[5]。每個LDAP服務器由管理模塊、目錄服務模塊和復制服務模塊3個部分組成。
管理模塊負責目錄信息的管理,確保用戶獲取準確的目錄信息。
目錄服務模塊由前端和后端兩個部分組成,前端負責客戶端與服務器之間的網絡通信,完成協議解析和分析;后端負責目錄數據庫的管理。
復制服務模塊負責LDAP服務器之間目錄數據的復制[5],確保目錄服務一致性。
LDAP目錄服務邏輯結構如圖1所示。

LDAP目錄服務的主要工作流程如下:
(1)客戶端根據需要向LDAP服務器發送操作請求;
(2)服務器根據請求進行相應的操作;
(3)操作完成后,服務器向客戶端返回應答,應答可包含操作結果、操作出錯信息或引用。引用表明客戶端所需目錄不在本服務器,同時返回一個更適宜服務器的URL;
(4)若是引用,返回步驟1,客戶端向其他服務器發送請求。
本系統通過采用基于LDAP的目錄服務,將鐵路企業內所有的用戶信息、賬戶信息、身份認證、系統登錄和資源授權進行集中管理,實現統一的用戶管理、身份認證和授權管理,并在此基礎上實現單點登錄,系統結構如圖2所示。

圖2 單點登錄系統結構圖
本系統采用二次身份認證,其中,單點登錄服務器主要負責對用戶的身份進行主體認證和二次認證,認證機制采用LDAP。LDAP目錄服務主要負責集中存儲用戶信息、用戶的身份信息以及每個用戶ID與各應用系統賬號的映射關系。用戶進行單點登錄和身份認證的主要流程如下:
(1)用戶使用ID通過單點登錄門戶進行登錄;
(2)單點登錄服務器獲取用戶ID信息,查詢LDAP目錄服務,獲取用戶的身份信息,進行主體認證;
(3)主體認證完成后,單點登錄服務器返回認證通過信息,并列出用戶有權訪問的應用系統;
(4)主體認證成功后,用戶即可直接訪問單點登錄管理界面列出的應用系統,登錄系統時,后臺自動進行第二次身份認證,認證會被重定向到單點登錄服務器;
(5)單點登錄服務器查詢LDAP目錄服務,獲取用戶ID與應用系統賬號的映射關系,進行第二次身份認證;
(6)第二次身份認證通過后,用戶自動登錄到應用系統,無需再次輸入系統賬號與口令,從而實現了單點登錄。
2.2.1 統一用戶管理模塊的設計
統一的用戶管理是實現單點登錄的基礎。本系統采用基于LDAP的目錄服務構建統一用戶管理,統一存儲、管理和維護用戶信息和用戶賬號,實現從一個集中點控制用戶ID的注冊、注銷與用戶信息的變更,以及各系統對用戶的所有操作。
統一用戶管理主要完成3項工作:(1)統一管理和維護用戶信息;(2)為用戶分配并管理(包括創建、修改、注銷)單點登錄用戶ID;(3)統一存儲和管理各應用系統的賬號信息。當有人員離職或崗位發生變動時,只需在統一用戶管理對其用戶ID進行操作,即可改變其訪問行為。統一用戶管理規避了用戶賬號和用戶信息獨立管理的數據不一致性和安全風險,提高了系統的安全性。
2.2.2 基于角色的統一授權模塊的設計
用戶授權管理即對系統中的角色進行資源分配與權限管理。
本系統提供了兩種用戶管理機制:
基于分組的用戶管理。這種機制將用戶根據鐵路企業內部的組織機構和部門(又可以劃分子部門)劃分進行分組,然后在每一個分組中添加用戶。
基于角色的用戶管理。根據鐵路企業內部的職能職權劃分創建各種角色,對各類角色進行定義,對不同的角色進行不同的授權,分配不同的資源,設定不同的訪問權限。
上述2種用戶管理機制的基礎上,本系統提供了基于角色的統一授權機制,通過為用戶綁定一個或多個角色,實現對用戶的授權、資源分配以及訪問權限的控制。完整的用戶授權流程如下:
(1)新用戶在統一用戶管理進行注冊,添加個人信息并進行分組,即根據用戶所屬部門將其加入合適的分組;
(2)根據系統角色定義為用戶選擇角色,建立用戶ID與角色的映射關系,根據角色對用戶進行授權,即根據角色對用戶進行資源分配和權限控制,包括對應用系統的訪問權限與操作權限;
(3)用戶使用ID進行單點登錄,統一身份認證根據用戶的角色、授權等信息對用戶的身份進行主體認證;
(4)如果用戶ID被注銷,則其對應的授權信息也將被刪除;
(5)當用戶的職位或崗位發生改變時,只需改變用戶的角色就可以進行重新授權,改變用戶的訪問權限,而不需要逐個系統改變用戶授權,從而實現了對用戶授權的集中、統一管理。
2.2.3 統一身份認證模塊的設計
為了解決鐵路企業內各系統獨立認證產生的各種問題,本系統通過統一身份認證將不同異構系統的用戶身份認證工作進行集中,統一管理和驗證用戶的身份。
LDAP目錄服務存儲了所有用戶的身份信息,包括用戶的角色信息、授權信息和分組信息,用戶ID與角色的映射關系以及用戶ID與應用系統賬號的關聯關系等。用戶進行單點登錄,統一身份認證根據用戶ID查詢LDAP目錄服務,獲取用戶的身份信息,對用戶的身份進行主體認證,認證通過后,返回用戶有權訪問的應用系統,用戶訪問系統,統一身份認證根據用戶ID與各應用系統賬號的關聯關系進行第二次身份認證,認證通過后,即可登錄應用系統。
由于用戶已經擁有各應用系統的賬號,為了不改造原有系統,在系統集成時仍保持各系統的賬號,需要建立每個用戶ID與各應用系統賬號的關聯關系,通過管理和維護這張表實現對用戶賬號的統一管理,關聯關系的建立過程如下:
通過主體認證后,用戶首次登錄每個應用系統時,需要輸入各系統的賬號與口令,LDAP目錄服務將記錄并存儲這些賬號與口令,并將用戶ID與各賬號進行關聯,建立兩者的映射關系。用戶第二次及后續登錄應用系統時,無需再次輸入賬號口令,統一身份認證將自動查詢映射關系表,如果存在映射關系,認證通過,允許用戶登錄。
當新增一個應用系統時,只需增加用戶ID與該系統賬號的映射關系,不會對其它系統產生任何影響,從而解決了登錄認證時不同系統間用戶交叉和用戶賬號不同的問題。
在本系統的實現中,統一用戶管理、基于角色的統一授權和統一身份認證都基于LDAP目錄服務構建,并部署在單點登錄服務器上,圖3所示為單點登錄統一管理界面。

圖3 單點登錄統一管理界面
在統一管理界面中可以看到已授權應用系統的圖標,點擊圖標,就可以直接訪問相應的系統。在系統實現中,主要form表單的實現代碼如下:
在需要添加單點登錄的系統登錄頁面中,讀取Form表單id為btnSubm it的提交按鈕,同時記錄登錄用戶名id和密碼id,加入到單點登錄平臺中,分配資源并關聯用戶名和密碼,即可實現單點登錄的機制。
目前,本系統已投入使用,運行效果良好。通過構建單點登錄平臺,實現多個應用系統的統一身份認證、統一用戶管理和系統資源的統一管理及授權,解決了鐵路企業信息共享中因異構系統、異構數據造成的數據整合和界面展示的整合難題,實現了對不同系統應用權限的統一控制和用戶信息的統一管理,以及生產、辦公各系統間的信息共享,提升了系統應用的便捷性。
[1]皮曉東.單點登錄的研究與實現[J].計算機應用與軟件,2007,24(6):156.
[2]任 軍.基于LDAP的目錄服務綜述[J].計算機應用研究,2005(5):9.
[3]王電剛.基于LDAP目錄服務的單點登錄系統的研究與實現[D].四川:四川大學,2004:4.
[4]沈 婧,耿國華,周明全,梁 娜.LDAP目錄服務在網絡科技資源應用基礎環境中的應用[J].計算機應用與軟件,2009,26(1):57.
[5]于 劍,張 輝,趙紅梅. LDAP目錄服務在Web開發中的應用[J].計算機應用,2003,23(10):82-84.