OpenLDAP的基本概念
生活随笔
收集整理的這篇文章主要介紹了
OpenLDAP的基本概念
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
LDAP
- LDAP只是專門用于查找的一種數(shù)據(jù)庫。 讀取速度快,但支持寫入,但速度相對(duì)較慢。 這就是為什么LDAP通常用于存儲(chǔ)集中式用戶帳戶的原因。
- 在LDAP中,數(shù)據(jù)是存儲(chǔ)的節(jié)點(diǎn)(很像關(guān)系DB中的記錄)。 每個(gè)節(jié)點(diǎn)都有一些命名屬性。 例如,代表用戶的節(jié)點(diǎn)可能具有以下屬性(cn代表“通用名”,而sn代表“姓”):
- 就像數(shù)據(jù)庫中的記錄或Java中的對(duì)象一樣,節(jié)點(diǎn)可以具有的屬性是固定的。 這由名為objectClass的屬性指定。 例如,有一個(gè)名為“ person”的對(duì)象類,它說它可以具有cn,sn和email,然后一個(gè)屬于該“ person”類的節(jié)點(diǎn)可以具有以下屬性:
- 一個(gè)節(jié)點(diǎn)可能屬于多個(gè)對(duì)象類。 例如,可能有一個(gè)名為“ securityObject”的對(duì)象類,它說它可以具有一個(gè)密碼屬性,然后,如果需要將密碼放入節(jié)點(diǎn)中,則可以這樣做:
- 如何使用節(jié)點(diǎn)表示部門或公司? 這是通過“ organizationalUnit” objectClass(“ ou”代表“ organizational unit”)完成的:
- 如果通通先生在那個(gè)財(cái)務(wù)部門,該如何表示這種關(guān)系? 與相對(duì)的數(shù)據(jù)庫用外鍵表示這種關(guān)系不同,在LDAP中,一個(gè)節(jié)點(diǎn)可以放在另一個(gè)節(jié)點(diǎn)下作為子節(jié)點(diǎn)。 例如,讓我們將人員節(jié)點(diǎn)作為財(cái)務(wù)部門節(jié)點(diǎn)的子節(jié)點(diǎn),而財(cái)務(wù)部門節(jié)點(diǎn)作為公司節(jié)點(diǎn)的子節(jié)點(diǎn):
- 這種父子關(guān)系由稱為“ dn”(專有名稱,就像文件的完整路徑)的屬性表示。 也就是說,您可以從節(jié)點(diǎn)的dn確定父節(jié)點(diǎn)的dn。
- 通常,您將cn添加到父節(jié)點(diǎn)的dn中以獲得節(jié)點(diǎn)本身的dn。 但是,您不必使用cn。 您可以隨意使用任何屬性來實(shí)現(xiàn)該目的(稱為“相對(duì)dn”),只要該屬性在兄弟姐妹之間是唯一的即可。 例如,如果沒有兩個(gè)人的cn值相同,則cn很好。 這樣,在給定dn的情況下,定位節(jié)點(diǎn)非常快。
- 創(chuàng)建目錄的頂級(jí)節(jié)點(diǎn)時(shí),需要指定其dn。 通常,您將使用公司的DNS域名(假設(shè)它是foo.com):
- 其中dc表示“域組件”,只是域名中的標(biāo)簽。
- 一些對(duì)象類(例如person或organizationalUnit)被設(shè)計(jì)為用作節(jié)點(diǎn)的“主要”對(duì)象類,而其他一些對(duì)象類(例如securityObject)(正式稱為“ simpleSecurityObject”)被設(shè)計(jì)為“輔助”對(duì)象,而被添加到節(jié)點(diǎn)。 前者被稱為“結(jié)構(gòu)對(duì)象類”,而后者被稱為“輔助對(duì)象類”。
- 對(duì)于每個(gè)節(jié)點(diǎn),它必須只有一個(gè)結(jié)構(gòu)對(duì)象類 。 它可以具有零個(gè)或多個(gè)輔助對(duì)象類。
架構(gòu)圖
- 屬性和對(duì)象類是定義的,而不是硬編碼的。 對(duì)于Debian上的OpenLDAP,可以在/ etc / ldap / schema中找到模式。 例如,您可以在core.schema中找到以下對(duì)象類:
- 它說它必須具有'sn'和'cn'屬性,并可能具有'userPassword'屬性等。它說其超類是'top',它是代表最頂層對(duì)象類的內(nèi)置對(duì)象類。 。 它還說“人”對(duì)象類是結(jié)構(gòu)類。
- 您可以在此處找到最常用的對(duì)象類和屬性。
使用LDAP進(jìn)行身份驗(yàn)證
- 一種簡(jiǎn)單的方法是根據(jù)用戶名檢索節(jié)點(diǎn),獲取密碼并將其與用戶輸入的密碼進(jìn)行比較。
- 但是,這允許通過服務(wù)通過網(wǎng)絡(luò)檢索任何用戶的敏感信息(密碼)。 因此,還有另一種方法:將dn和密碼發(fā)送到LDAP服務(wù),然后讓它執(zhí)行檢查。 這稱為對(duì)該dn的“綁定”。 本質(zhì)上,您是作為特定節(jié)點(diǎn)登錄的。
- 以上兩種方法都將以明文方式傳輸密碼。 因此,在訪問LDAP服務(wù)時(shí)(使用ldaps://),您可能應(yīng)該使用TLS。
- 上述方法是其他服務(wù)(例如郵件,Samba或Apache)最常用于檢查用戶密碼的方法。
- 使用OpenLDAP執(zhí)行管理時(shí),您可以使用上面的“綁定”方法以代表管理員的節(jié)點(diǎn)身份登錄。 這稱為“簡(jiǎn)單身份驗(yàn)證”:
- 但是,有時(shí)將身份驗(yàn)證為不是管理員身份而不是目錄中的節(jié)點(diǎn)更為方便。 例如,如果您的站點(diǎn)使用Kerberos,則可以使用OpenLDAP執(zhí)行單點(diǎn)登錄。 這通過其SASL支持來完成。 SASL反過來支持許多機(jī)制,例如PLAIN(純文本),GSSAPI(Kerberos),EXTERNAL(使用帶有TLS的客戶端證書之類的傳輸)。 當(dāng)SASL進(jìn)行身份驗(yàn)證時(shí),OpenLDAP將組成一個(gè)dn來代表您的身份。 例如,對(duì)于Kerberos域foo.com中的用戶Kent,偽造的dn將為uid = kent,cn = foo.com,cn = gssapi,cn = auth。 這是授予權(quán)限所必需的。
在Debian上設(shè)置并運(yùn)行OpenLDAP
- 在Debian上設(shè)置OpenLDAP時(shí),您需要重新配置軟件包,以便它為您以及代表管理員的節(jié)點(diǎn)創(chuàng)建初始目錄:
- 然后,要檢查其是否正常運(yùn)行,可以使用SASL EXTERNAL機(jī)制,并使用Unix域套接字(ldapi:///)作為root用戶連接到它:
詢問
- 就像關(guān)系數(shù)據(jù)庫一樣,您可以執(zhí)行查詢來檢索節(jié)點(diǎn)及其屬性。 例如,您可以嘗試在dn為dc = foo,dc = com(搜索的“基礎(chǔ)”)的節(jié)點(diǎn)下查找所有帶有cn = Kent Tong(“過濾器”)的節(jié)點(diǎn):
- 您可以嘗試查找其objectClass為'person'且cn包含單詞'Kent'的所有節(jié)點(diǎn):
- 您可能會(huì)告訴它僅檢索某些屬性:
更新數(shù)據(jù)
- 要添加新節(jié)點(diǎn),請(qǐng)確保已存在父節(jié)點(diǎn),然后在文本文件(稱為L(zhǎng)DIF文件)中指定dn和其他屬性,并將其標(biāo)記為“添加”請(qǐng)求:
- 然后將LDIF文件輸入ldapmodify:
- 要修改(添加,更改或刪除)現(xiàn)有節(jié)點(diǎn)的屬性,請(qǐng)首先指定該節(jié)點(diǎn),然后列出每個(gè)屬性更改,并用包含單個(gè)連字符的行將它們分開。 最后,以空行結(jié)束節(jié)點(diǎn):
- 刪除節(jié)點(diǎn):
參考:來自JCG合作伙伴 Kent Tong 的OpenLDAP基本概念,來自Kent Tong在信息技術(shù)博客上的個(gè)人想法 。
翻譯自: https://www.javacodegeeks.com/2013/03/basic-concepts-of-openldap.html
總結(jié)
以上是生活随笔為你收集整理的OpenLDAP的基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript基础语法(一)
- 下一篇: gdal影像镶嵌并裁剪