授權管理-LDAP-介紹與環境搭建


LDAP介紹

轉自:https://blog.csdn.net/tanshizhen119/article/details/79942315

還是先來百度百科介紹。

LDAP是輕量目錄訪問協議,英文全稱是Lightweight Directory Access Protocol,一般都簡稱為LDAP。它是基於X.500標准的,但是簡單多了並且可以根據需要定制。與X.500不同,LDAP支持TCP/IP,這對訪問Internet是必須的。LDAP的核心規范在RFC中都有定義,所有與LDAP相關的RFC都可以在LDAPman RFC網頁中找到。

以前我也就聽了一下公司里主要是用來存放用戶的信息,然后用來做統一認證的。ldap協議是一個標准解析,所以好多開源軟件都支持ldap,gerrit,gitlab,redmine,jenkins等等等,好多好多。我這個專題主要是面向開源的系統,所以ldap是一個基礎。

先來個圖:

PS:安裝的是否我選擇的是LDIF存儲格式。

大概就是這樣,存儲就像一棵樹一樣,一級一級的,最里面的那層存儲的最詳細的信息。例如:

dc=maxcrc,dc=com—— maxcrc公司

ou=people——people部門

cn=devops+displayName....uid=100001+user——這個是員工的具體信息

dc, ou,cn, uid都有明確的定義,而且是標准的。這個我們會在ldap schema文件里再說明一下。

網上關於ldap的文章也很多,ldap還有好多的高級用法,可以用來管理好多的數據,最基本的功能就是存儲信息。

如果想要深入學習的,可以下載這本書下來看看 《Linux+UNIX+OpenLDAP實戰指南》  密碼:cdjj 

感覺還可以。

優點:

1. 速度快,分布式。

2. 標准協議,可以適用在很多場景,而且集成成本低。

3. 是一個非常成熟的產品,網上的資料,用法都很多,學習成本低(不過開發的可能了解的不多,偏運維應該是了解得透透的吧)

 

LDAP環境搭建

hub鏡像地址: osixia/openldap

github地址:https://github.com/osixia/docker-openldap 這上面會對此docker鏡像有明確的說明,包括如何運行。各種場景都有,請好好閱讀。

下載docker鏡像命令:docker pull osixia/openldap   

運行命令:docker run --name ldap --env LDAP_ORGANISATION="shanktech" --env LDAP_DOMAIN="shanktech.com" --env LDAP_ADMIN_PASSWORD="123456" -p 389:389 -p 636:639 --detach osixia/openldap:1.2.0

此命令我們沒有對目錄進行映射,所以當docker運行結束后,產生的所有數據會丟失

如果不想用docker運行,也可以再官網上下載安裝包進行安裝。在windows上也是可以進行安裝。

openldap for windows 下載地址 這個安裝就很簡單了,下一步下一步即可.

 

在osixia/openldap  docker容器里使用的是MDB格式。

運行docker run命令后ldap服務就起來了。

這邊推薦一個客戶端 ApacheDirectoryStudio 可以直接點擊下載,基於java eclipse寫的,運行起來和eclipse差不多。

 

創建LDAP連接

上圖 

1. 輸入ip 因為沒有改端口所以使用的是默認端口。

 

2. 輸入用戶名和密碼登錄

我們在運行docker run命令的時候設置了環境變量。

-env LDAP_ORGANISATION="shanktech" 

--env LDAP_DOMAIN="shanktech.com" 

--env LDAP_ADMIN_PASSWORD="123456"

所以登錄LDAP的用戶名和密碼為 用戶名:cn=admin,dc=shanktech,dc=com 密碼為123456

3.插入新數據

上一波圖,不過相信,不用看圖大家也可以做出來。第一次接觸ldap, 昨天自己摸索了好久,不過經過學習發現了自己迷茫的圓心,主要在schema, objectcalss, atrr不是很理解導致的。下面我會對進行詳細的解釋,因為這個在網上沒有,至少我沒有搜索到。

 

這樣就插入了一條數據。

LDAP說明重點知識介紹

在回顧一下LDAP存儲格式,是以一種樹狀的格式存儲的。在我的理解,ldap是先定義了一個樹狀數據結構,在葉子節點上定義了專屬的屬性。這些定義是通過schema文件來體現的,我們來舉一個例子如下圖:

schema文件就是放了這些定義的信息的。(ldap有高級的玩法,就是自己自定義schema文件,自己定義節點。當然這不能亂定義的,要在擴展節點上定義自己的葉子節點屬性,看到這些讓我想起了簡單網絡管理協議SNMP

接下來我們再談一下ObjectClass和attr的關系。

其實看這個ldap這個樹狀結構,屬性與屬性之間個獨立,分散,像是一個個特征一樣。Objectclass是將這些有關聯關系的特征組織起來,定義成一個模板。讓你去好組織數據。這個和我們常說面向的對象編程里的class, 屬性一致。ldap這里的屬性與class都是標准定義的而已。下圖對Objectclass大概解釋了一下。

 

使用LDAP認證登錄Gerrit系統

 

 

1. 首先將Gerrit認證換成LDAP

在gerrit.config中修改配置,然后重啟。

[auth]
type = LDAP
[ldap]
  server = ldap://192.168.2.189
  accountBase = dc=shanktech,dc=com
  accountPattern = (&(objectClass=person)(uid=${username}))
  accountFullName = displayName
  accountEmailAddress = mail
  username = cn=admin,dc=shanktech,dc=com

  password = 123456

如下圖:

然后登錄成功

 

寫的這些都是很基本的功能,先不打算深入了,我是計划着先把所有的工具都跑一遍,然后再逐漸的深入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM