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