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

LDAP介紹

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

仍是先來百度百科介紹。git

LDAP是輕量目錄訪問協議,英文全稱是Lightweight Directory Access Protocol,通常都簡稱爲LDAP。它是基於X.500標準的,可是簡單多了而且能夠根據須要定製。與X.500不一樣,LDAP支持TCP/IP,這對訪問Internet是必須的。LDAP的核心規範在RFC中都有定義,全部與LDAP相關的RFC均可以在LDAPman RFC網頁中找到。github

之前我也就聽了一下公司裏主要是用來存放用戶的信息,而後用來作統一認證的。ldap協議是一個標準解析,因此好多開源軟件都支持ldap,gerrit,gitlab,redmine,jenkins等等等,好多好多。我這個專題主要是面向開源的系統,因此ldap是一個基礎。docker

先來個圖:apache

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

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

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

以下圖:

而後登陸成功

 

寫的這些都是很基本的功能,先不打算深刻了,我是計劃着先把全部的工具都跑一遍,而後再逐漸的深刻。

相關文章
相關標籤/搜索