Въведение в Spring Security LDAP

1. Общ преглед

В този бърз урок ще научим как да настроим Spring Security LDAP.

Преди да започнем, бележка за това какво е LDAP - той означава Лек протокол за достъп до директории и това е отворен, неутрален от доставчика протокол за достъп до каталожни услуги през мрежа.

2. Зависимост на Maven

Първо, нека да разгледаме зависимостите на maven, от които се нуждаем:

 org.springframework.security spring-security-ldap   org.apache.directory.server apacheds-server-jndi 1.5.5 

Забележка: Използвахме ApacheDS като наш LDAP сървър, който е разширяем и вграждаем сървър на директории.

3. Конфигурация на Java

След това нека обсъдим нашата конфигурация Spring Java Java:

public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.ldapAuthentication() .userSearchBase("ou=people") .userSearchFilter("(uid={0})") .groupSearchBase("ou=groups") .groupSearchFilter("member={0}") .contextSource() .root("dc=baeldung,dc=com") .ldif("classpath:users.ldif"); } }

Това разбира се е само свързаната с LDAP част от конфигурацията - пълната конфигурация на Java можете да намерите тук.

4. XML конфигурация

Сега, нека да разгледаме съответната XML конфигурация:

Отново, това е само част от конфигурацията - частта, която е от значение за LDAP; пълната XML конфигурация можете да намерите тук.

5. Формат за обмен на данни LDAP

LDAP данните могат да бъдат представени чрез LDAP формат за обмен на данни (LDIF) - ето пример за нашите потребителски данни:

dn: ou=groups,dc=baeldung,dc=com objectclass: top objectclass: organizationalUnit ou: groups dn: ou=people,dc=baeldung,dc=com objectclass: top objectclass: organizationalUnit ou: people dn: uid=baeldung,ou=people,dc=baeldung,dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Jim Beam sn: Beam uid: baeldung userPassword: password dn: cn=admin,ou=groups,dc=baeldung,dc=com objectclass: top objectclass: groupOfNames cn: admin member: uid=baeldung,ou=people,dc=baeldung,dc=com dn: cn=user,ou=groups,dc=baeldung,dc=com objectclass: top objectclass: groupOfNames cn: user member: uid=baeldung,ou=people,dc=baeldung,dc=com

6. Приложението

И накрая, ето нашето просто приложение:

@Controller public class MyController { @RequestMapping("/secure") public String secure(Map model, Principal principal) { model.put("title", "SECURE AREA"); model.put("message", "Only Authorized Users Can See This Page"); return "home"; } }

7. Заключение

В това кратко ръководство за Spring Security с LDAP научихме как да осигурим основна система с LDIF и да конфигурираме защитата на тази система.

Най- пълното прилагане на този урок може да се намери в проекта GitHub - това е Eclipse базиран проект, така че трябва да бъде лесен за внос и работи като такъв.