OpenDJ入門 | 5分鍾快速入門Forgerock DS


微信截圖_20190720181126

本教程為了讓大家快速體驗,故不做深入講解,詳細內容請留意后續進階教程

介紹

OpenDJ是一個目錄服務器,它實現了各種輕量級目錄訪問協議和相關標准,包括完全符合LDAPv3,但也支持目錄服務標記語言(DSMLv2)。OpenDJ 用Java編寫,提供多主復制,訪問控制和許多擴展。

OpenDJ最初是OpenDS的一個分支,它是一個LDAP / DSML服務器,起源於2005年,由Neil A. Wilson創建的Sun Microsystems內部項目,后來發展成為由Oracle公司維護的開源項目。繼甲骨文收購Sun之后,OpenDJ是ForgeRock開發的主干。

OpenDJ與Forgerock Directory Service
很多人會有疑惑,Forgerock官網上並沒有OpenDJ,只有Forgerock Directory Service。OpenDJ的前身是Oracle OpenDS,后來負責OpenDS的核心成員離開,去到ForgeRock公司,發布了OpenDJ開源項目,自2016年11月起,ForgeRock關閉了OpenDJ源代碼,將OpenDJ重命名為Forgerock Dirctory Service,並開始在商業許可下分發。

目錄服務

目錄是一個為查詢、瀏覽和搜索而優化的專業分布式數據庫,它呈樹狀結構組織數據,就好象Linux/Unix系統中的文件目錄一樣。目錄數據庫和關系數據庫不同,它有優異的讀性能,但寫性能差,並且沒有事務處理、回滾等復雜功能,不適於存儲修改頻繁的數據。所以目錄天生是用來查詢的,就好象它的名字一樣。

目錄服務是由目錄數據庫和一套訪問協議組成的系統。類似以下的信息適合儲存在目錄中:

  • 企業員工信息,如姓名、電話、郵箱等;
  • 公用證書和安全密鑰;
  • 公司的物理設備信息,如服務器,它的IP地址、存放位置、廠商、購買時間等;
  • LDAP是輕量目錄訪問協議(Lightweight Directory Access Protocol)的縮寫,LDAP是從X.500目錄訪問協議的基礎上發展過來的,目前的版本是v3.0。與LDAP一樣提供類似的目錄服務軟件還有ApacheDS、Active Directory、Red Hat Directory Service 、Forgerock Directory Service。

LDAP的特點

  • LDAP的結構用樹來表示,而不是用表格。正因為這樣,就不能用SQL語句了
  • LDAP提供了靜態數據的快速查詢方式
  • Client/server模型,Server 用於存儲數據,Client提供操作目錄信息樹的工具
  • 這些工具可以將數據庫的內容以文本格式(LDAP 數據交換格式,LDIF)呈現在您的面前
  • LDAP是一種開放Internet標准,LDAP協議是跨平台的Interent協議
  • 目錄是一個為查詢瀏覽搜索而優化的數據庫,它成樹狀結構組織數據,類似文件目錄一樣
  • 目錄數據庫和關系數據庫不同,它有優異的讀性能,但寫性能差,並且沒有事務處理、回滾等復雜功能,不適於存儲修改頻繁的數據,天生適合多讀少寫的場景

LDAP基本概念

[外鏈圖片轉存失敗(img-njBS53ml-1563724999423)(http://www.evanshare.com/upload/2019/7/條目-cc4047a9abd4436ab1ba0e01ba5decda.png)]

  • 目錄樹:在一個目錄服務系統中,整個目錄信息集可以表示為一個目錄信息樹,樹中的每個節點是一個條目。

  • 條目:每個條目就是一條記錄,每個條目有自己的唯一可區別的名稱(DN)

  • 對象類:與某個實體類型對應的一組屬性,對象類是可以繼承的,這樣父類的必須屬性也會被繼承下來

  • 屬性:描述條目的某個方面的信息,一個屬性由一個屬性類型和一個或多個屬性值組成,屬性有必須屬性和非必須屬性。
    屬性
    樹狀結構

准備工作


安裝

解壓

輸入如下命令解壓安裝包

unzip DS-eval-6.5.2.zip

1
解壓后如下所示:
2

執行安裝腳本

本教程的安裝目錄為/usr/local/tools/opendj,執行setup命令進行安裝

./setup  directory-server  --rootUserDn "cn=Directory Manager"  --rootUserPassword password  --monitorUserPassword password  --hostname localhost  --ldapPort 1389  --httpPort 8080  --adminConnectorPort 4444  --baseDn dc=example,dc=com  --sampleData 10000  --acceptLicense

3

查看安裝狀態

進入opendj/bin,執行status命令

./status \
 --bindDn "cn=Directory Manager" \
 --bindPassword password \
 --hostname localhost \
 --port 4444 \
 --usePkcs12TrustStore /usr/local/tools/opendj/config/keystore \
 --trustStorePasswordFile /usr/local/tools/opendj/config/keystore.pin

4


驗證

使用LDAP操作目錄

搜索LDAP目錄

這里使用項目自帶的sample數據,假設您知道用戶的全名,Abagail Abadines,並且Abagail的條目位於基本DN dc = example,dc = com之下。 您想查找Abagail的電子郵件和辦公地點

 ./ldapsearch  --hostname localhost  --port 1389  --baseDn dc=example,dc=com  "(cn=Abagail Abadines)"  cn mail street l

5

修改LDAP目錄條目
想進行修改操作,必須先在LDAP做身份驗證。這里模擬Abagail用戶想修改他的個人描述為Hellow World

 ./ldapmodify  --hostname localhost  --port 1389  --bindDn uid=user.6,ou=People,dc=example,dc=com  --bindPassword password <<EOF dn: uid=user.6,ou=People,dc=example,dc=com changetype: modify replace: description description: Hello World EOF

6

新增一個LDAP目錄條目

已經授權的用戶,可以進行修改、新增、刪除操作。這里新增一個用戶ID為newuser的用戶

 ./ldapmodify  --hostname localhost  --port 1389  --bindDn "cn=Directory Manager"  --bindPassword password <<EOF dn: uid=newuser,ou=People,dc=example,dc=com uid: newuser objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: top cn: Evan Liang sn: User ou: People mail: evanliang@example.com userPassword: changeme EOF

7

刪除一個LDAP目錄條目

刪除上面創建的用戶ID為newuser的用戶,指定唯一索引dn: uid=user.6,ou=People,dc=example,dc=com

./ldapdelete  --hostname localhost  --port 1389  --bindDn "cn=Directory Manager"  --bindPassword password  uid=newuser,ou=People,dc=example,dc=com

[外鏈圖片轉存失敗(img-DBkzMTRV-1563724999433)(http://www.evanshare.com/upload/2019/7/8-dd872a5bf8d341a4ba0ef42da6b69199.png)]


使用Rest API操作目錄

創建資源

在設置時配置HTTP端口時,您啟用了DS服務器以響應HTTP請求。 但是,您必須進一步更改服務器配置以啟用對目錄數據的HTTP訪問。
由於默認的REST到LDAP映射文件是用於處理示例數據的示例,因此無法保證可以使用您的數據。 因此,默認情況下不啟用訪問目錄數據的API。
這里啟動API訪問Sample數據

./dsconfig  set-http-endpoint-prop  --hostname localhost  --port 4444  --bindDN "cn=Directory Manager"  --bindPassword password  --endpoint-name /api  --set enabled:true  --usePkcs12TrustStore /usr/local/tools/opendj/config/keystore  --trustStorePasswordFile /usr/local/tools/opendj/config/keystore.pin  --no-prompt

9

進行修改操作,需要進行授權,這里授權Abagail (user.6) 用戶去修改目錄數據

./ldapmodify  --hostname localhost  --port 1389  --bindDn "cn=Directory Manager"  --bindPassword password <<EOF dn: dc=example,dc=com changetype: modify add: aci aci: (target="ldap:///dc=example,dc=com") (targetattr = "*") (version 3.0;acl "Abagail can update entries"; allow(all) userdn = "ldap:///uid=user.6,ou=People,dc=example,dc=com";) EOF

10

使用API去創建一個用戶

curl  --request POST  --user user.6:password  --header "Content-Type: application/json"  --data '{ "_id": "newuser", "_schema":"frapi:opendj:rest2ldap:user:1.0", "contactInformation": { "telephoneNumber": "+1 408 555 1212", "emailAddress": "newuser@example.com" }, "name": { "givenName": "New", "familyName": "User" }, "displayName": ["New User"], "manager": { "_id": "user.6", "displayName": "Abagail Abadines" } }'  http://localhost:8080/api/users?_prettyPrint=true

11

讀取資源

通過API去讀取剛才創建的用戶ID為newuser用戶

 curl  --request GET  --user user.6:password  --header "Content-Type: application/json" http://localhost:8080/api/users/newuser?_prettyPrint=true

12

更新資源

更新用戶ID為newuser的用戶信息

 curl  --request PUT  --user user.6:password  --header "Content-Type: application/json"  --header "If-Match: *"  --data '{ "_id": "newuser", "_schema":"frapi:opendj:rest2ldap:user:1.0", "contactInformation": { "telephoneNumber": "+1 234 567 8910", "emailAddress": "updated.user@example.com" }, "name": { "givenName": "Updated", "familyName": "User" }, "displayName": ["Updated User"], "manager": { "_id" : "user.6", "displayName" : "Abagail Abadines" } }'  http://localhost:8080/api/users/newuser?_prettyPrint=true

13

刪除資源

通過指定用戶IDnewuser刪除用戶數據

 curl  --request DELETE  --user user.6:password  --header "Content-Type: application/json"  http://localhost:8080/api/users/newuser?_prettyPrint=true

14

參考

官方文檔:


免責聲明!

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



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