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