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á.