Introducción a Spring Security LDAP

1. Información general

En este tutorial rápido, aprenderemos cómo configurar Spring Security LDAP.

Antes de comenzar, una nota sobre lo que es LDAP: significa Protocolo ligero de acceso a directorios y es un protocolo abierto e independiente del proveedor para acceder a servicios de directorio a través de una red.

2. Dependencia de Maven

Primero, echemos un vistazo a las dependencias de maven que necesitamos:

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

Nota: Usamos ApacheDS como nuestro servidor LDAP, que es un servidor de directorio extensible e integrable.

3. Configuración de Java

A continuación, analicemos nuestra configuración de Spring Security 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"); } }

Por supuesto, esta es solo la parte relevante de LDAP de la configuración; la configuración completa de Java se puede encontrar aquí.

4. Configuración XML

Ahora, echemos un vistazo a la configuración XML correspondiente:

Una vez más, esto es solo una parte de la configuración, la parte que es relevante para LDAP; la configuración XML completa se puede encontrar aquí.

5. Formato de intercambio de datos LDAP

Los datos LDAP se pueden representar utilizando el formato de intercambio de datos LDAP (LDIF); aquí hay un ejemplo de nuestros datos de usuario:

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. La aplicación

Finalmente, aquí está nuestra sencilla aplicación:

@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. Conclusión

En esta guía rápida de Spring Security con LDAP, aprendimos cómo aprovisionar un sistema básico con LDIF y configurar la seguridad de ese sistema.

La implementación completa de este tutorial se puede encontrar en el proyecto GitHub; este es un proyecto basado en Eclipse, por lo que debería ser fácil de importar y ejecutar tal como está.