◆趙菁
LDAP協議在統一身份認證系統中的應用
◆趙菁
(北京信息職業技術學院 北京 100018)
企業通過門戶技術可以實現將各分立的系統統一起來。在項目中包括的一個重要部分就是將企業中各應用系統的賬號、口令、權限信息集中統一管理。本文通過設計LDAP數據結構、用戶數據接口和目錄服務接口,實現了使用LDAP存儲管理用戶,同時提高了系統的安全性。
LDAP協議;統一身份認證;系統安全性
統一的人員組織、權限管理,實現統一認證和訪問控制;實現應用單一的登錄,使用戶在初始進行一次登錄和身份認證后,就可以訪問其具有訪問權限的任何系統,而不需要再次登錄,后續系統會自動獲取用戶信息,從而識別出該用戶具有訪問權限,是統一身份認證系統的目標。而LDAP目錄作為系統集成中的一個重要環節,提供了企業級的統一用戶信息管理,是實現統一認證和訪問控制的必要前提。
LDAP(Lightweight Directory Access Protocol)即輕量級目錄訪問協議,此協議基于X.500標準,TCP/IP協議作為其基礎。目錄訪問協議和數據庫很類似,但存在很大的不同。數據庫設計著重于方便數據的讀寫,而目錄訪問協議對讀優化進行了專門的設計,不適用于對寫操作頻繁的數據存儲。目錄服務用于通過鍵-值類型格式存儲、整理及表達數據。一般來講,目錄會面向查找、搜索以及讀取操作做出優化,因此適用于經常引用但卻較少變更的數據。
信息模型是對LDAP中信息的表示方式進行描述。信息模型中涉及的概念包括schema、objectClass、Attribute和Entry。
在目錄信息樹里創建一個條目(entry)時,條目的信息存儲在屬性(attribute)里,屬性又被組合成對象類(objectClass),對象類進一步組成了架構(schema)。
(1)架構(schema)
Schema 就是一個集合。所有的 objectClass 和 attribute 都定義在 Schema 里。每一個 attribute 和 objectClass,包括其父級 attribute 和 objectClass 都必須定義在一個 Schema 里,且該 Schema 必須能夠被 LDAP 服務器識別。Schema、objectClass和attribute的關系如圖1所示。

圖1 Schema、objectClass和attribute的關系
定義在一個 Schema 里的 attribute 可以被另一個 Schema 里的 objectClass 使用。
(2)對象類(objectClass)
objectClass 是 attribute 的集合。對象類由對象標識(OID)、唯一名稱、父對象(SUP)、任何需要的屬性(MUST)和允許的屬性列表(MAY)5個組件組成。
在LDAP中objectClass分為三種:Abstract,Structural,AUXIALIARY。要定義一個Entry必須包含一個Structural類型的ObjectClass,其他兩個類型可包括0或多個。其中Top是一個頂級ObjectClass,里面定義了一個MUST Attribute:ObjectClass,于是也就決定了必須有一個其他的Structural ObjectClass才能定義一個Entry.其中ObjectClass又可以存在繼承關系,子ObjectClass會繼承父ObjectClass中的全部Attribute。該繼承關系于Java中有點相似。
(3)屬性(Attribute)
attribute 定義在 Schema里。Attribute類同于編程語言中的變量,它可以被賦值,就像是可以存放一個單一類型信息的容器。官方聲明了許多常用的 Attribute,也可以自定義,但要避免重名。objectClass是一種特殊的Attribute,它包含其他用到的 Attribute以及它自身。
(4)條目(Entry):
條目是目錄信息樹里 objectClass 的集合。entry 有且只能有一個 STRUCTURAL objectClass。一個 STRUCTURAL objectClass可能有一個同為 STRUCTURAL 類型的父級。entry 可以包含任意數目的 AUXILIARY objectClass。entry 可以有子 entry(child entry),父 entry(parent entry),同級 entry(sibling entry)。entry 有三種類型:
object entry - 最常見的一種,包含位于 objectClass 屬性(attributes)里的用戶數據
alias entry - 帶有單一屬性 aliasedObjectName 的 objectClass 別名
subentry - 用于存儲與父 entry 相關的管理或者操作數據
LDIF(即LDAP數據交換格式)內的條目示例如下:
dn:sn=Ellingwood,ou=people,dc=digitalocean,dc=com
objectclass:person
sn:Ellingwood
cn:Justin Ellingwood
以上即為LDAP系統中的一條有效條目。
命名模型是對LDAP中數據的組織方式進行描述。LDAP中的數據是以樹的形式進行組織,被稱為目錄信息樹(Directory Information Tree,DIT)。目錄樹的根位于最頂部,即基準DN。假設某個用戶Jack,他是abc公司銷售部門(sales)的一名員工,該公司的域名為abc.com。該用戶的表示方法為:CN=Jack OU=Sales DC=abc DC=com。LDAP的目錄信息樹如圖2所示。

圖2 LDAP的樹形結構
功能模型是對LDAP中數據的獲取或者修改條目的操作進行描述。包括查詢、更新、認證和其他操作共四大類操作。
安全模型是對LDAP中的安全機制進行描述。通過身份認證、安全通道和訪問控制實現。
基于LDAP對讀取密集型用戶數據的卓越性能,在企業統一身份認證系統中,用戶或應用系統信息的存儲和管理即可采用LDAP技術。它們的特點是具有層次結構、面向對象的方式存儲的數據庫、數據能夠保持一致性和完整性,企業中的各類應用系統都可以使用存儲和管理其中的共享信息,
如圖3所示,為企業的統一身份認證系統目錄樹設計。DN為:O=abc.com。目錄樹中的信息由三部分組成:“Ou=北京”、Cn=users、Cn=groups。

圖3 目錄樹結構
應用系統集成DIT如圖4所示。目錄屬性列表如表1所示。

圖4 應用系統集成DIT

表1 目錄屬性列表
包括用戶數據接口和目錄服務接口。集成應用系統將通過用戶數據接口獲得用戶的身份信息。而通過目錄服務接口進行目錄信息的存取操作。
本文結合某銀行現有應用系統的情況,提出了使用LDAP存儲管理用戶,把相關的用戶信息存儲在LDAP服務器中,提供企業級的統一用戶信息管理。是進一步實現統一認證和訪問控制的必要前提,同時還提高了系統的安全性。
[1]華建祥,瞿霞. 基于 LDAP 協議的統一身份認證系統研究[J].智能計算機與應用,2019.
[2]吳科樺,張藝夕. 基于 LDAP 協議的 Solr 用戶認證設計與實現[J].網絡安全技術與應用,2020.