小白科普:LDAP有什么用?
1.認(rèn)證的煩惱
小明的公司有很多IT系統(tǒng), 比如郵箱、SVN、Jenkins , JIRA,VPN, WIFI...... 等等 。
新人入職時(shí)需要在每個(gè)系統(tǒng)中申請(qǐng)一遍賬號(hào),每個(gè)系統(tǒng)對(duì)用戶(hù)名和密碼的要求還不一樣, 實(shí)在是煩人。
這還不算, 按照公司的策略, 這些密碼每隔三個(gè)月還得更改一次,每次都是一次大折騰。
離職的時(shí)候, 各個(gè)賬號(hào)又都得刪除一遍,太折磨了。
能不能讓這些系統(tǒng)用同一套用戶(hù)名和密碼呢? 申請(qǐng)一次,到處使用!
“嗯,這其實(shí)是一個(gè)用戶(hù)統(tǒng)一認(rèn)證的問(wèn)題” 小明做了一個(gè)總結(jié)。
怎么去實(shí)現(xiàn)? 當(dāng)然是開(kāi)發(fā)一套系統(tǒng)了, 關(guān)鍵是要把賬號(hào)統(tǒng)一起來(lái)用Mysql 數(shù)據(jù)庫(kù)來(lái)保管, 然后用自己擅長(zhǎng)的SpringMVC對(duì)外提供JSON接口, 別的系統(tǒng)比如SVN想做用戶(hù)認(rèn)證的時(shí)候,調(diào)用一下這個(gè)接口,把用戶(hù)名和密碼傳過(guò)來(lái),系統(tǒng)就會(huì)判斷認(rèn)證是否成功。
被這么一個(gè)美好的前景激勵(lì)著,小明像打了雞血,充滿(mǎn)激情地、迅速地把這個(gè)系統(tǒng)開(kāi)發(fā)出來(lái)了。
2.推廣
他先找了SVN的管理員,結(jié)果栽了跟頭,人家根本不買(mǎi)賬,理由很簡(jiǎn)單: “你這個(gè)系統(tǒng)穩(wěn)定性、性能怎么樣? 還有,你這接口是自己定義的,也不是業(yè)界標(biāo)準(zhǔn),我甚至得開(kāi)發(fā)代碼和你做集成, 太麻煩。 對(duì)了, 你怎么不用LDAP啊?”
LDAP ? 這是什么鬼? 小明沒(méi)放在心上, 又去找郵箱和VPN的負(fù)責(zé)人, 都被殘忍地拒絕了, 甚至連理由都一樣。
最后的希望集中在Jenkins身上, 管理Jenkins的是自己的哥們張大胖, 中午吃飯的時(shí)候小明向基友哭訴了自己的悲慘遭遇,希望能博得一點(diǎn)同情。
“我覺(jué)得你的想法很好啊,我們就缺你這樣的實(shí)干家, 你說(shuō)說(shuō)接口是什么樣的?” 大胖路見(jiàn)不平,決定為好基友兩肋插刀。
“其實(shí)我這里提供了一個(gè)HTTP+JSON的接口, 你的Jenkins調(diào)用一下就行了” 小明滿(mǎn)懷期望。
“這個(gè).... 雖然我沒(méi)有仔細(xì)研究過(guò), 但是Jenkins 好像只支持自定義的用戶(hù)認(rèn)證,還沒(méi)有LDAP。” 大胖的刀還沒(méi)拔出來(lái)就放回去了。
看來(lái)推廣又要失敗了。
3.LDAP
“這個(gè)LDAP是什么東西,你們的系統(tǒng)為什么都要支持它?” 小明憤憤不平地問(wèn)道。
“LDAP是Lightweight Directory Access Protocol , 即輕量級(jí)目錄訪(fǎng)問(wèn)協(xié)議, 用這個(gè)協(xié)議可以訪(fǎng)問(wèn)提供目錄服務(wù)的產(chǎn)品,例如OpenLDAP。 ”
“目錄服務(wù)?”
“對(duì), 比如公司有個(gè)員工列表名單, 對(duì)于一個(gè)員工,你能查到他的電話(huà),工位,部門(mén)等各種信息, 這就是一個(gè)目錄啊。”
“聽(tīng)起來(lái)很適合保存一個(gè)公司員工的賬號(hào)和密碼啊” 小明說(shuō)。
“是啊,這個(gè)目錄服務(wù)啊,存儲(chǔ)數(shù)據(jù)的方式有點(diǎn)特殊,完全不像我們熟知的關(guān)系數(shù)據(jù)庫(kù), 數(shù)據(jù)都在表中,一行一行的,一目了然,這個(gè)OpenLDAP是以樹(shù)的方式存儲(chǔ)的。 比如一個(gè)人的信息是這樣的:
小明說(shuō):“ 有點(diǎn)古怪,不過(guò)這很像文件系統(tǒng)的目錄樹(shù), 每個(gè)目錄都有屬性,可以存儲(chǔ)信息,比如用戶(hù)名和秘密,但是查詢(xún)的時(shí)候還得一層一層的來(lái),多麻煩, 為啥不用關(guān)系型數(shù)據(jù)庫(kù),直接一個(gè)select 不就出來(lái)了 ”
張大胖說(shuō): “我對(duì)LDAP研究不深, 但是我知道LDAP速度快, 非??欤犬?dāng)今最快的數(shù)據(jù)庫(kù)還要快。“
“怎么可能,現(xiàn)在的關(guān)系數(shù)據(jù)庫(kù)多強(qiáng)悍啊。”
“其實(shí)LDAP主要的應(yīng)用場(chǎng)景是查詢(xún)多而修改極少,查詢(xún)和修改的比率是10:1 甚至更高, 那就充分發(fā)揮LDAP的優(yōu)勢(shì)了,因?yàn)闆](méi)有事務(wù)處理,那數(shù)據(jù)庫(kù)的速度可是比不上。 還有LDAP能存儲(chǔ)海量的數(shù)據(jù),還可以輕松地在各個(gè)系統(tǒng)之間復(fù)制,可用性超高。 ”
小明想想確實(shí)是這樣,公司員工信息變化本來(lái)就很少,我們把用戶(hù)名密碼存進(jìn)去, 三個(gè)月才改一次, 查詢(xún)的操作遠(yuǎn)遠(yuǎn)高于修改,如果LDAP專(zhuān)注于優(yōu)化查詢(xún),又沒(méi)有事務(wù)處理, 就像一個(gè)緩存一樣, 肯定要更快了, 怪不得很多軟件都支持LDAP做用戶(hù)認(rèn)證,這是個(gè)重要原因啊。
小明有點(diǎn)沮喪,覺(jué)得自己在沒(méi)有充分調(diào)查研究的情況下,又造了一個(gè)輪子。
既然如此,那就搭建一個(gè)支持LDAP的目錄服務(wù)器吧, 小明這一次吸取了教訓(xùn),先說(shuō)服了領(lǐng)導(dǎo),在領(lǐng)導(dǎo)的支持下,進(jìn)行了跨部門(mén)的溝通,經(jīng)過(guò)艱苦的努力,各個(gè)系統(tǒng)終于搞成了統(tǒng)一認(rèn)證, 現(xiàn)在的結(jié)構(gòu)是這樣的:
小明的努力沒(méi)有白費(fèi), 除了學(xué)到技術(shù)外,還得到了公司的認(rèn)可,年底的時(shí)候給他發(fā)了一個(gè)領(lǐng)導(dǎo)力的獎(jiǎng),獎(jiǎng)勵(lì)他勇于走出自己的工作崗位、跨部門(mén)的與同事溝通,用自己的專(zhuān)業(yè)能力帶來(lái)大家完成了用戶(hù)的統(tǒng)一認(rèn)證,極大提高了工作的效率。
【本文為51CTO專(zhuān)欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)coderising獲取授權(quán)】