2018年10月3日 星期三

LDAP 探究 Part 2-基礎知識篇




LDAP 系列:

為了順利對 OpenLDAP 進行 Config,我們需要對 LDAP 有一些基本的認識。

上回說過 LDAP 是一個樹狀的資料結構,由一個根節點往下延伸成一棵樹。

接下來只講我知道且會用到的,對 LDAP 我也是略懂略懂而已。

Entry
每一個節點就是一個 Entry,每個 Entry 都會有一個唯一的 DN ( Distinguished Name ),用來定位這個 Entry。

DN 的表示法是由小到大 ( 從葉節點返回到根節點 ),以上圖為例,cn=Hao 的 DN 就是 "cn=Hao,ou=RD,ou=IT,dc=MyCompany,dc=com"。


ObjectClass
什麼是 ObjectClass?
簡單來說就是建立 Entry 的模板,LDAP 本身有提供多種 ObjectClass,這裡 ldapwiki objectClass 有列出 LDAP 所提供的 ObjectClass。

一個 Entry 可以擁有多個 ObjectClass,打個比方來說 cn=Hao 這個 Entry 代表了我這個人,我可以同時擁有 ObjectClass = Person 跟 ObjectClass = PosixAccount,代表我是個人及我有一個帳號的概念。


下面算補充知識,看看就好。

一個 ObjectClass可以有 STRUCTURAL, AUXILLARY 或 ABSTRACT 三種分類。

注意這個是 AUXILIARY ObjectClass,它需要 STRUCTURAL ObjectClass 去建立合法的Entry。

也就是說,如果你只單單給 AUXILIARY 類型的 ObjectClass 的話,LDAP 是沒辦法建立一個 Entry。

以這個DN為例
dn: dc=example,dc=com,dc=au
objectClass: dcObject
objectClass: organization
dc: example
o: example
description: Example Pty Ltd.

我們為什麼可以合法的建立這個Entry?

這個Entry包含了兩個objectClass,dcObject 及 organization。

dcObject 的類型是 AUXILIARY,而 organization 的類型是 STRUCTURAL。

雖然 dcObject 的類型是 AUXILIARY,不過因為有 organization 這個類型為 STRUCTURAL 的 ObjectClass,所以這個 Entry 可以順利的建立起來。

如果只有 dcObject 的話是無法建立這個 Entry 的,有點類似抽象類別的概念。


Attribute
Attribute 就是 ObjectClass 所帶的資料。

舉剛剛的例子,cn=Hao 的 ObjectClass=Person,我是個人總得有姓有名吧?

所以ObjectClass=Person的 Attribute 有 cn (commonName 名字) 跟 sn (surname 姓)。

根據不同的 ObjectClass 會有不同 的 Attribute

有些 ObjectClass 的 Attribute 是必備,你同樣可以在這個網頁 ldapwiki objectClass 查到,有標 MUST 的就是必備的 Attribute。( 不過這個網頁我覺得也不太準……當作參考就好。 )



基本上暸解這些就可以繼續往下走惹~下篇預計會說怎麼調整 OpenLDAP 的 Config。

LDAP 系列:

0 comments:

張貼留言