spring security LDAP獲取用戶信息


很多企業內部使用LDAP保存用戶信息,這章我們來看一下如何從LDAP中獲取Spring Security所需的用戶信息。

首先在pom.xml中添加ldap所需的依賴。

<dependency>
  <groupId>org.apache.directory.server</groupId>
  <artifactId>apacheds-server-jndi</artifactId>
  <version>1.5.5</version>
</dependency>
<dependency>
  <groupId>org.springframework.ldap</groupId>
  <artifactId>spring-ldap</artifactId>
  <version>1.2.1</version>
</dependency>
    

然后修改配置文件,使用內嵌的ldap服務器和ldap-authentication-provider。

<ldap-server ldif="classpath:users.ldif" port="33389" root="dc=family168,dc=com"/>

<ldap-authentication-provider
    group-search-filter="member={0}"
    group-search-base="ou=groups"
    user-search-base="ou=people"
    user-search-filter="uid={0}"
/>
    

這里配置內嵌的ldap服務器從users.ldif文件中讀取初始化數據,端口使用33389,查詢目錄的根目錄設置為dc=family168,dc=com。

ldap-authentication-provider設置查找組和用戶的配置,分別使用ou=groups表示組,使用ou=people表示用戶。

用於保存ldap初始信息的文件內容如下:

dn: ou=groups,dc=family168,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups

dn: ou=people,dc=family168,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people

dn: uid=user,ou=people,dc=family168,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: FirstName LastName
sn: LastName
uid: user
userPassword: user

dn: uid=admin,ou=people,dc=family168,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: FirstName LastName
sn: LastName
uid: admin
userPassword: admin

dn: cn=user,ou=groups,dc=family168,dc=com
objectclass: top
objectclass: groupOfNames
cn: ROLE_USER
member: uid=user,ou=people,dc=family168,dc=com
member: uid=admin,ou=people,dc=family168,dc=com

dn: cn=admin,ou=groups,dc=family168,dc=com
objectclass: top
objectclass: groupOfNames
cn: ROLE_ADMIN
member: uid=admin,ou=people,dc=family168,dc=com
    

這里在dc=family168,dc=com目錄下創建了groups和people兩個目錄,然后在people目錄下創建了user和admin兩個用戶。在groups目錄下創建了admin和user兩個目錄,並將user和admin兩個用戶與groups的user目錄關聯,又將admin用戶與groups的admin目錄關聯。

在系統初始化后,Spring Security會在people下讀取用戶信息,而對應的權限信息是對應用戶所關聯的groups信息,Spring Security會將查詢到的權限信息加上ROLE_前綴,如cn=admin最終會轉換為ROLE_ADMIN。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM