天天看點

springboot的ldapTemplate通路openldap完整demo

遇到的難題

1.網上關于openldap基礎知識和概念的文章還是很多的,有的也寫的非常好.但是認識一個事物的順序應該是從具體到抽象,所有網上的大部分關于基礎知識和概念的文章我看得都是雲裡霧裡

2.springboot 內建spring-boot-starter-data-ldap後,用LdapTemplate 通路ldap确實也很簡單,但是一般的文章也隻有代碼,并沒有說明怎麼搭建openldap服務(公司産品以前沒有用到過ldap,所有我需要搭建ldap伺服器)

3.ldap的産品很多,一般市面上用的比較多的是微軟的AD和開源的openldap,兩者之間有微小的差别

此文目标

搭建一個完整的demo,包含ldap伺服器,初始化使用者資料,用ldapTemplate通路ldap的服務

搭建伺服器

用docker安裝比較簡單,基本上參考此文就可以安裝成功了docker安裝openldap.按照文章的步驟一步一步就能安裝成功,并且此文章最後的幾步還初始化的一個叫zhangsan的使用者

初始化使用者資料

具體怎麼在圖形化界面(如下的phpldapadmin)建立使用者等資訊,可以參考上面提到的篇文章最後幾步.我初始化了4個使用者.

springboot的ldapTemplate通路openldap完整demo

注意User Name 就是使用者的uid,這個後面的java demo用的到

springboot的ldapTemplate通路openldap完整demo

springboot 內建ldap

maven依賴:

<!-- LDAP內建 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-ldap</artifactId>
		</dependency>
           

application.properties配置:

#對比前面搭建ldap的過程,一看就知道下面四個配置是啥,也隻需要這四個配置
spring.ldap.urls=ldap://192.168.101.22:389
spring.ldap.base=dc=example,dc=com
spring.ldap.username=cn=admin,dc=example,dc=com
spring.ldap.password=123456
           

單元測試:

認證成功!!!

要注意的是:一般情況下,在AD中用sAMAccountName去認證,在openldap中用uid去認證

springboot的ldapTemplate通路openldap完整demo

demo中其他的代碼:

demo中除了ldapTemplate.authenticate(),還有其他api的單元測試

還有動态生成ladapTemplate的代碼

還有與我項目有關的一些測試代碼不用太關心

demo gitee:

https://gitee.com/wangwei1991/try-springboot.

最後

相信我,隻要demo跑起來,一切問題将迎刃而解!!!