最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

ldap 組織結(jié)構(gòu)如何轉(zhuǎn)成多叉樹?

2023-04-17 22:55 作者:阿兵云原生  | 我要投稿

工作中,ldap 服務(wù)器的對(duì)接,可以能會(huì)涉及到同步組織結(jié)構(gòu),認(rèn)證,認(rèn)證后處理等等,最近認(rèn)證還不是我想寫的剛需,繼續(xù)來看看對(duì)于組織結(jié)構(gòu)的想法

例如同步 AD 域的組織結(jié)構(gòu),或者是 ldap 協(xié)議的其他產(chǎn)品對(duì)應(yīng)的企業(yè)組織結(jié)構(gòu),如下我簡(jiǎn)單的創(chuàng)建的一些 ou 和 cn

查看當(dāng)前 ldap 組織結(jié)構(gòu)

我們通過命令查看 ldap 服務(wù)器上的組織結(jié)構(gòu)數(shù)據(jù),咱們只查看 DN 即可,不需要其他的屬性

#?ldapsearch?-x?-LLL?-b?dc=xiaomotong,dc=com?objectClass=*?d:

我們可以看到,ldap 服務(wù)器給我們返回的數(shù)據(jù)中,是 1 個(gè) list ,這個(gè)list 里面每 1 個(gè)元素是 1 個(gè) entry,是 1 條記錄,也是 1 個(gè)唯一的標(biāo)識(shí)

那么問題就很明確了,如何將上述的 dn list ,轉(zhuǎn)成 1 棵樹呢?

我們可以根據(jù)上述打印結(jié)果畫圖,進(jìn)行分析一下

先畫一棵樹

根據(jù)上面的打印結(jié)果,在和實(shí)際ldap admin 可視化工具中可以看出,根實(shí)際是在最后 dc=xiaomotong,dc=com,然后從右往左 分別是 ou,cn

前 5 條數(shù)據(jù)對(duì)應(yīng)畫出來的圖是這樣的:

看上去有戲,繼續(xù)往下畫看看效果:

  • 紅色框?yàn)?ou

  • 綠色框?yàn)?dc

  • 藍(lán)色框?yàn)?cn

對(duì)就是這樣的一棵樹,畫出來了,可是我們?nèi)绾斡么a實(shí)現(xiàn)一下呢?

編碼實(shí)現(xiàn)

編碼實(shí)現(xiàn)將 ldif 格式的數(shù)據(jù)轉(zhuǎn)成樹,并用 json 的方式輸出,查看效果

實(shí)現(xiàn)方式

1、遍歷每一條 entry

2、處理每一條 entry 的時(shí)候,從右到左獲取相應(yīng)的 rdn(對(duì)應(yīng)的鍵和值),并給每一個(gè) rdn 創(chuàng)建一個(gè) 多叉樹的 節(jié)點(diǎn)

3、basedn 對(duì)應(yīng)的節(jié)點(diǎn) 和 每一個(gè) ou 對(duì)應(yīng)的節(jié)點(diǎn)地址,存放到一個(gè) map(key 是 string,value 是節(jié)點(diǎn)的地址) 中便于后續(xù)遍歷處理其他 entry 的時(shí)候,直接通過 ou 名字獲取對(duì)應(yīng)節(jié)點(diǎn)地址即可

4、對(duì)于一個(gè)節(jié)點(diǎn)下面的用戶,直接掛到這個(gè)節(jié)點(diǎn)上即可

畫個(gè)圖來闡述一下 map 的作用:

例如我們需要畫一個(gè)組織結(jié)構(gòu),先畫根節(jié)點(diǎn)

現(xiàn)在我們要遍歷對(duì)應(yīng)的 entry,例如:

  • cn=B,dc=A

  • ou=C,dc=A

  • ou=D,dc=A

需要畫上 B,C,D ,我們分別創(chuàng)建好對(duì)應(yīng)的節(jié)點(diǎn),但是如何掛到 A上面去的呢?這個(gè)時(shí)候,是不是就需要 A 的地址了,正好這個(gè) entry 又能獲取到 A 的名字,也就是 map 的key,這樣子,我們就可以獲取到 A 的地址了

繼續(xù)解析 entry

  • ou=E,ou=C,dc=A

  • cn=F,ou=E,ou=C,dc=A

原理同上

通過上面的簡(jiǎn)圖,算是可以將 ldap 的 ldif 格式的數(shù)據(jù),轉(zhuǎn)換成我們想要的樹了,思路是有了,編碼的話就很快了 具體編碼可以看下一篇

學(xué)習(xí)所得,如有偏差,還請(qǐng)不吝賜教

歡迎點(diǎn)贊,關(guān)注,收藏

朋友們,你的支持和鼓勵(lì),是我堅(jiān)持分享,提高質(zhì)量的動(dòng)力

好了,本次就到這里

技術(shù)是開放的,我們的心態(tài),更應(yīng)是開放的。擁抱變化,向陽(yáng)而生,努力向前行。

我是阿兵云原生,歡迎點(diǎn)贊關(guān)注收藏,下次見~


ldap 組織結(jié)構(gòu)如何轉(zhuǎn)成多叉樹?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
彭泽县| 许昌县| 常山县| 安庆市| 靖边县| 阿鲁科尔沁旗| 阜康市| 墨玉县| 黔江区| 永春县| 翼城县| 措勤县| 治多县| 西宁市| 大埔县| 文山县| 花垣县| 宣威市| 含山县| 称多县| 卢氏县| 茶陵县| 奉节县| 金华市| 旺苍县| 彭泽县| 新和县| 满洲里市| 茂名市| 山阴县| 襄城县| 商南县| 闽侯县| 周宁县| 大姚县| 巴林左旗| 漳浦县| 孝感市| 宁城县| 左云县| 侯马市|