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