Spring Boot整合LDAP搭建具備安全認證機制的RESTful服務
在企業級大資料平臺應用中,經常會面臨企業內部組織結構與使用者資料的儲存及應用場景。LDAP(Light-weight
Directory Access
Protocol)就是常用的儲存載體,LDAP是輕量級目錄訪問協議的簡稱,是一種樹形目錄結構的輕量級資料庫。它能夠提供快速而高效的查詢效率,且易於使用。Spring對於LDAP服務的操作有著良好的支援。本文重點闡述如何在Spring
Boot構建的RESTful服務中整合LDAP功能,並將整合過程中的經驗和遇到的問題進行分享。
第一步,新建RESTful服務,不再贅述。如下圖所示:

RESTful服務
第二步,新建的RESTful服務,是不支援安全驗證功能的,為此服務增加安全驗證機制,首先需要在DOM檔案中新增四個依賴項:spring-boot-starter-security、spring-ldap-core、spring-security-ldap、unboundid-ldapsdk。通過依賴項的新增,接下來,我們才可以配置安全認證策略,以及實現一個簡單的供開發除錯使用的LDAP服務。如下圖所示:

依賴項
第三步,安全認證策略配置是利用Java檔案和@Configuration註解實現的。新建一個WebSecurityConfig類,繼承WebSecurityConfigurerAdapter,覆蓋configure方法。如下圖所示:

配置檔案
值得注意:userDnPatterns("uid={0},ou=people")中{0}來自網頁表單輸入;url("ldap://localhost:8389/dc=springframework,dc=org")說明還需要一個LDAP服務支撐,這個地方困擾了一下,這個服務如何搭建?其實官網中已經給出了方法,下面過程遇到了這個問題。
第四步,構建一個LDIF (LDAP Data Interchange Format)用於儲存使用者資料,以提供LDAP服務交換資料使用。在resources目錄下,新建一個test-server.ldif檔案。具體內容如下圖所示:

LDIF檔案
第五步,至此,執行程式,在瀏覽器中訪問localhost:8080/login,按照官網提示輸入使用者名稱ben,密碼benspassword。如下圖所示:

登入
卻一直提示以下錯誤資訊:

錯誤提示
第六步,以上提示錯誤是發現缺少了一個LDAP服務拒絕訪問,在properties檔案中加入配置選項(這個地方遲疑了好久,後來發現在配置檔案中缺少配置)。如下圖所示:

配置檔案
第七步,再次執行程式,輸出以下正常結果:

輸出結果
結束語:綜合以上步驟,一個簡單的Spring Boot整合LDAP搭建具備安全認證機制的RESTful服務功能開發完成,複雜的功能開發還需要我們進一步的不斷探索。