tel./fax: +34 91 675 33 06 [email protected] - www ......» angularjs: primeros pasos. Últimos...

9
Avenida de Castilla,1 - Edificio Best Point - Oficina 21B 28830 San Fernando de Henares (Madrid) tel./fax: +34 91 675 33 06 [email protected] - www.autentia.com Somos su empresa de Soporte a Desarrollo Informático. Ese apoyo que siempre quiso tener... 1. Desarrollo de componentes y proyectos a medida Tecnología Desarrollo Sistemas Gran Empresa Producción autentia Certificación o Pruebas Verificación previa RFP Concurso Consultora 1 Consultora 2 Consultora 3 Equipo propio desarrollo Piloto 3a 3b 1. Definición de frameworks corporativos. 2. Transferencia de conocimiento de nuevas arquitecturas. 3. Soporte al arranque de proyectos. 4. Auditoría preventiva periódica de calidad. 5. Revisión previa a la certificación de proyectos. 6. Extensión de capacidad de equipos de calidad. 7. Identificación de problemas en producción. 3. Arranque de proyectos basados en nuevas tecnologías ¿Qué ofrece Autentia Real Business Solutions S.L? Para más información visítenos en: www.autentia.com Compartimos nuestro conociemiento en: www.adictosaltrabajo.com Gestor portales (Liferay) Gestor de contenidos (Alfresco) Aplicaciones híbridas Tareas programadas (Quartz) Gestor documental (Alfresco) Inversión de control (Spring) BPM (jBPM o Bonita) Generación de informes (JasperReport) ESB (Open ESB) Control de autenticación y acceso (Spring Security) UDDI Web Services Rest Services Social SSO SSO (Cas) Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery JPA-Hibernate, MyBatis Motor de búsqueda empresarial (Solr) ETL (Talend) Dirección de Proyectos Informáticos. Metodologías ágiles Patrones de diseño TDD 2. Auditoría de código y recomendaciones de mejora 4. Cursos de formación (impartidos por desarrolladores en activo)

Upload: others

Post on 30-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: tel./fax: +34 91 675 33 06 info@autentia.com - www ......» AngularJS: primeros pasos. Últimos Tutoriales del Autor » Introducción a Guvnor » Gestión de expedientes en el ámbito

Avenida de Castilla,1 - Edificio Best Point - Oficina 21B28830 San Fernando de Henares (Madrid)

tel./fax: +34 91 675 33 [email protected] - www.autentia.com

Somos su empresa de Soporte a Desarrollo Informático.Ese apoyo que siempre quiso tener...

1. Desarrollo de componentes y proyectos a medida

TecnologíaDesarrolloSistemas

Gran Empresa

Producción

autentia

Certificacióno Pruebas

Verificación previa

RFP Concurso

Consultora 1

Consultora 2

Consultora 3

Equipo propio desarrolloPiloto

3a

3b

1. Definición de frameworks corporativos.2. Transferencia de conocimiento de nuevas arquitecturas.3. Soporte al arranque de proyectos.4. Auditoría preventiva periódica de calidad.5. Revisión previa a la certificación de proyectos.6. Extensión de capacidad de equipos de calidad.7. Identificación de problemas en producción.

3. Arranque de proyectos basados en nuevas tecnologías

¿Qué ofrece Autentia Real Business Solutions S.L?

Para más información visítenos en: www.autentia.com

Compartimos nuestro conociemiento en: www.adictosaltrabajo.com

Gestor portales (Liferay)Gestor de contenidos (Alfresco)Aplicaciones híbridas

Tareas programadas (Quartz)Gestor documental (Alfresco)Inversión de control (Spring)

BPM (jBPM o Bonita)Generación de informes (JasperReport)ESB (Open ESB)

Control de autenticación y acceso (Spring Security)UDDIWeb ServicesRest ServicesSocial SSOSSO (Cas)

Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery

JPA-Hibernate, MyBatisMotor de búsqueda empresarial (Solr)ETL (Talend)

Dirección de Proyectos Informáticos.Metodologías ágilesPatrones de diseñoTDD

2. Auditoría de código y recomendaciones de mejora

4. Cursos de formación (impartidos por desarrolladores en activo)

Page 2: tel./fax: +34 91 675 33 06 info@autentia.com - www ......» AngularJS: primeros pasos. Últimos Tutoriales del Autor » Introducción a Guvnor » Gestión de expedientes en el ámbito

Entra en Adictos a través de

Entrar

Deseo registrarmeOlvidé mi contraseña

Inicio Quiénes somos Formación Comparador de salarios Nuestros libros Más

» Estás en: Inicio Tutoriales Spring Security: haciendo uso de un servidor LDAP embebido.

Síguenos a travésde:

Catálogo de serviciosAutentia

Últimas Noticias

» Vendedor: Soy inseguro,filtra o elige por mi: si quieresque te compre.

» Comentando el libro: El artede pensar, de Rolf Dobelli

» Ya está a la venta misegundo libro: Planifica tuéxito, de aprendiz aempresario

» Ya esta disponible en eBookmi primer libro: InformáticaProfesional

» Comentando el libro: Lainteligencia reformada, lasinteligencias múltiples en elsiglo XXI de Howard Gardner

Histórico de noticias

Últimos Tutoriales

» Introducción a Guvnor

» Gestión de expedientes en elámbito de lasAdministraciones Públicas(IV): buscando en las forjasuna solución.

Ver todos los tutoriales del autor

Jose Manuel Sánchez Suárez

Consultor tecnológico de desarrollo de proyectos informáticos.

Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría yformación

Somos expertos en Java/J2EE

Fecha de publicación del tutorial: 2013-03-04 Tutorial visitado 1 veces Descargar en PDF

Spring Security: haciendo uso de un servidor LDAP embebido.

0. Índice de contenidos.

1. Introducción.2. Entorno.3. Configuración.4. Test.5. Implementación.6. Referencias.7. Conclusiones.

1. Introducción

Ya hemos tenido oportunidad en adictos de examinar las posibilidades de Spring Security a la hora de gestionar laautenticación y autorización en nuestras aplicaciones; más allá de ser un simple filtro. De hecho hacemos uso intensivo delmismo y forma parte de nuestra arquitectura de referencia.

En este tutorial vamos a ver cómo puede darnos soporte para configurar un servidor LDAP embebido con el objetivo deincluirlo o bien dentro de nuestros tests de integración o para dar soporte a nuestras aplicaciones web sin necesidad de tenerun servidor ldap real. Así lo podríamos "levantar" para dar soporte a la autenticación SSO de CAS sin necesidad de disponerde un servidor físico.

2. Entorno.

El tutorial está escrito usando el siguiente entorno:

Hardware: Portátil MacBook Pro 15' (2.4 GHz Intel Core i7, 8GB DDR3 SDRAM).Sistema Operativo: Mac OS X Lion 10.7.4Spring 3.2.1.RELEASESpring Security 3.1.3.RELEASE

3. Configuración.

Como de costumbre, haciendo uso de maven, lo primero es declarar nuestras dependencias en el fichero pom.xml:

123456789

10111213141516

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd <modelVersion>4.0.0</modelVersion> <groupId>com.autentia.tutoriales.bpm.ldap</groupId> <artifactId>spring-security-ldap-embedded</artifactId> <packaging>jar</packaging> <version>1.0.0-SNAPSHOT</version> <name>spring-security-ldap-embedded</name> <properties> <java.version>1.6</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>3.2.1.RELEASE</spring.version> <spring.security.version>3.1.3.RELEASE</spring.security.version> <slf4j.version>1.6.4</slf4j.version> <log4j.version>1.2.16</log4j.version>

?

Spring Security: haciendo uso de un servidor LDAP embebido. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

1 de 8 04/03/13 14:58

Page 3: tel./fax: +34 91 675 33 06 info@autentia.com - www ......» AngularJS: primeros pasos. Últimos Tutoriales del Autor » Introducción a Guvnor » Gestión de expedientes en el ámbito

» Gestión de expedientes en elámbito de lasAdministraciones Públicas (III):BPM y la gestión de procesosde negocio.

» jBPM5: usando nuestrapropia base de datos.

» AngularJS: primeros pasos.

Últimos Tutoriales delAutor

» Introducción a Guvnor

» Gestión de expedientes en elámbito de lasAdministraciones Públicas(IV): buscando en las forjasuna solución.

» Gestión de expedientes en elámbito de lasAdministraciones Públicas (III):BPM y la gestión de procesosde negocio.

» jBPM5: usando nuestrapropia base de datos.

» Gestión de expedientes en elámbito de lasAdministraciones Públicas (II):requisitos.

Últimas ofertas deempleo

2011-09-08Comercial - Ventas -MADRID.

2011-09-03Comercial - Ventas -VALENCIA.

2011-08-19Comercial - Compras -ALICANTE.

2011-07-12Otras Sin catalogar -MADRID.

2011-07-06Otras Sin catalogar -LUGO.

Jose Manuel Sánchezsanchezsuarezj

Join the conversation

1718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899

100101102103104105106107108109110111112113114115116117118119

</properties> <repositories> <repository> <id>com.springsource.repository.bundles.release</id> <name>EBR Spring Release Repository</name> <url>http://repository.springsource.com/maven/bundles/release</url> </repository> </repositories> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </build> <dependencies> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <!-- spring security --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>${spring.security.version}</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </exclusion> <exclusion> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${spring.security.version}</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </exclusion> <exclusion> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId>

adictosaltrabaj Introducción aGuvnor - kcy.me/g8hs comorepositorio central de recursosdentro de nuestro ecosistemabpm #jbpm2 days ago · reply · retweet · favorite

adictosaltrabaj Gestión deexpedientes en el ámbito de lasAdministraciones Públicas (IV):buscando en las forjas unasolución. - kcy.me/g0de6 days ago · reply · retweet · favorite

adictosaltrabaj Gestión deexpedientes en el ámbito de lasAdministraciones Públicas (III):BPM y la gestión de procesos denegocio - kcy.me/fyzp6 days ago · reply · retweet · favorite

adictosaltrabaj jBPM5 y como

Spring Security: haciendo uso de un servidor LDAP embebido. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

2 de 8 04/03/13 14:58

Page 4: tel./fax: +34 91 675 33 06 info@autentia.com - www ......» AngularJS: primeros pasos. Últimos Tutoriales del Autor » Introducción a Guvnor » Gestión de expedientes en el ámbito

El servidor que usaremos será Apache Directory que se alimentará en su arranque de un fichero ldif (autentia-identity-repository.ldif), con la siguiente información sobre nuestra organización:

120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200

<artifactId>spring-core</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-ldap</artifactId> <version>${spring.security.version}</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.directory.server</groupId> <artifactId>apacheds-all</artifactId> <version>1.5.5</version> </dependency> <!-- logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!-- Test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> </dependencies> </project>

123456789

101112131415161718

version: 1 dn: o=autentiaobjectClass: organizationobjectClass: extensibleObjectobjectClass: topo: autentia dn: ou=users,o=autentiaobjectClass: extensibleObjectobjectClass: organizationalUnitobjectClass: topou: users dn: ou=groups,o=autentiaobjectClass: extensibleObjectobjectClass: organizationalUnitobjectClass: top

?

Spring Security: haciendo uso de un servidor LDAP embebido. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

3 de 8 04/03/13 14:58

Page 5: tel./fax: +34 91 675 33 06 info@autentia.com - www ......» AngularJS: primeros pasos. Últimos Tutoriales del Autor » Introducción a Guvnor » Gestión de expedientes en el ámbito

Tenemos una pequeña jerarquía, con dos grupos de usuarios: administrativos y tramitadores (además del grupo deadministradores ) y varios usuarios asociados a los mismos que montará una estructura como la siguiente:

192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596

ou: groups dn: cn=administrativos,ou=groups,o=autentiaobjectClass: groupOfUniqueNamesobjectClass: topobjectClass: groupcn: administrativosuniqueMember: cn=jmsanchez,ou=users,o=autentiauniqueMember: cn=psanchez,ou=users,o=autentia dn: cn=tramitadores,ou=groups,o=autentiaobjectClass: groupOfUniqueNamesobjectClass: topobjectClass: groupcn: tramitadoresuniqueMember: cn=ablanco,ou=users,o=autentiauniqueMember: cn=msanchez,ou=users,o=autentia dn: cn=admin,ou=groups,o=autentiaobjectClass: groupOfUniqueNamesobjectClass: topobjectClass: groupcn: adminuniqueMember: cn=administrador,ou=users,o=autentia dn: cn=jmsanchez,ou=users,o=autentiaobjectClass: organizationalPersonobjectClass: personobjectClass: inetOrgPersonobjectClass: topcn: Jose Manuel Sánchezsn: jmsanchezuid: jmsanchezmail: [email protected]:: cGFzcw== dn: cn=psanchez,ou=users,o=autentiaobjectClass: organizationalPersonobjectClass: personobjectClass: inetOrgPersonobjectClass: topcn: Pablo Sánchezsn: psanchezuid: psanchezmail: [email protected]:: cGFzcw== dn: cn=msanchez,ou=users,o=autentiaobjectClass: organizationalPersonobjectClass: personobjectClass: inetOrgPersonobjectClass: topcn: Mario Sánchezsn: msanchezuid: msanchezmail: [email protected]:: cGFzcw== dn: cn=ablanco,ou=users,o=autentiaobjectClass: organizationalPersonobjectClass: personobjectClass: inetOrgPersonobjectClass: topcn: Alfonso Blancosn: ablancouid: ablancomail: [email protected]:: cGFzcw== dn: cn=administrador,ou=users,o=autentiaobjectClass: organizationalPersonobjectClass: personobjectClass: inetOrgPersonobjectClass: topcn: adminsn: adminuid: administradoruserPassword:: cGFzcw==

Spring Security: haciendo uso de un servidor LDAP embebido. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

4 de 8 04/03/13 14:58

Page 6: tel./fax: +34 91 675 33 06 info@autentia.com - www ......» AngularJS: primeros pasos. Últimos Tutoriales del Autor » Introducción a Guvnor » Gestión de expedientes en el ámbito

Nota: para obtener esta captura he puesto un punto de ruptura en el test que veremos en el siguiente punto y he comprobadoel acceso al directorio, por el puerto configurado, con la herramienta Apache Directory Studio

La configuración del servidor LDAP la incluimos en un fichero de configuración Spring, con un contenido similar al siguiente(src/main/resources/spring-config/ldapServer.xml):

En el propio espacio de nombres del contexto de seguridad disponemos de una configuación para ldap donde configuramos elfuente ldif con el contenido de nuestra organización, el nodo raíz para acceder al mismo y el puerto, a través del cuál podemosacceder al mismo.

4. Test.

Vamos a escribir, con el soporte de Spring, un test que compruebe el acceso y recuperación de usuarios y grupos deldirectorio:

En este punto nuestro test estará en ROJO (errores de compilación), porque:

no disponemos de la clase PersonRepository, que nos proporcionará acceso al repositorio de usuarios o personas,no tenemos la clase Person, que tendrá las propiedades de un usuario, yhemos separado la configuración del servidor de la configuración del contexto para acceder al mismo (aún no hemos

123456789

101112

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd"> <security:ldap-server ldif="classpath:autentia-identity-repository.ldif" root="o=autentia" </beans>

123456789

101112131415161718192021222324252627282930313233343536

package com.autentia.tutoriales.spring.security.ldap; import static org.junit.Assert.assertEquals; import java.util.List; import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration({"classpath:spring-config/ldapServer.xml","classpath:spring-config/ldapContext.xml"public class PersonRepositoryIntegrationTest { @Autowired private PersonRepository personRepository; @Test public void shouldFindUserById(){ final String userId = "jmsanchez"; final List<Person> persons = personRepository.getByUID(userId); assertEquals(1, persons.size()); assertEquals("Jose Manuel Sánchez", persons.get(0).getName()); } @Test public void shouldFindUsersByGroupId(){ final String groupId = "administrativos"; final List<Person> persons = personRepository.getByGroupUID(groupId); assertEquals(2, persons.size()); } }

?

?

Spring Security: haciendo uso de un servidor LDAP embebido. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

5 de 8 04/03/13 14:58

Page 7: tel./fax: +34 91 675 33 06 info@autentia.com - www ......» AngularJS: primeros pasos. Últimos Tutoriales del Autor » Introducción a Guvnor » Gestión de expedientes en el ámbito

visto el contenido del fichero de configuración ldapContext.xml).

Veamos la interfaz de servicio que hemos pensado para el repositorio de personas

Y ahora el contenido del POJO que tendrá las propiedades de un usuario:

Ahora no tendremos errores de compilación, pero fallará la ejecución del test:

5. Implementación.

Veamos el contenido que proponemos para el repositorio de usuarios:

123456789

1011

package com.autentia.tutoriales.spring.security.ldap; import java.util.List; public interface PersonRepository { List<Person> getByUID(String userId); List<Person> getByGroupUID(String groupId); }

123456789

1011121314151617181920212223242526272829303132333435

package com.autentia.tutoriales.spring.security.ldap; public class Person { private String uid; private String name; private String email; public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }

123456789

10111213141516171819202122232425262728293031323334353637383940

package com.autentia.tutoriales.spring.security.ldap; import java.util.ArrayList;import java.util.List; import javax.naming.NamingEnumeration;import javax.naming.NamingException;import javax.naming.directory.Attributes; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.ldap.core.AttributesMapper;import org.springframework.ldap.core.LdapTemplate; public class PersonLdapRepository implements PersonRepository{ private LdapTemplate ldapTemplate; @Autowired public PersonLdapRepository(LdapTemplate ldapTemplate){ this.ldapTemplate = ldapTemplate; } @SuppressWarnings("unchecked") @Override public List<Person> getByUID(String userId) { return ldapTemplate.search("", "(uid=" + userId + ")", personMapper()); } @Override public List<Person> getByGroupUID(String groupId) { final List<Person> persons = new ArrayList<Person>(); @SuppressWarnings("unchecked") final List<String> userIds = (List<String>) ldapTemplate.search("", "(&(objectClass=group)(cn=" for (String userId : userIds) { persons.add(getByUID(userId).get(0)); } return persons; } private AttributesMapper personMapper() {

?

?

?

Spring Security: haciendo uso de un servidor LDAP embebido. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

6 de 8 04/03/13 14:58

Page 8: tel./fax: +34 91 675 33 06 info@autentia.com - www ......» AngularJS: primeros pasos. Últimos Tutoriales del Autor » Introducción a Guvnor » Gestión de expedientes en el ámbito

Básicamente, se apoya en una clase de plantilla de Spring para realizar las consultas al servidor ldap y se encarga de mapearel resultado de las consultas en un objeto de tipo Person (lo que haría un típico Dao).

La configuración que nos resta es la del fichero (src/main/resources/spring-config/ldapContext.xml) que va a configurar elcontexto de acceso al servidor ldap que tenemos levantado para el entorno de tests, lo va a asociar a la plantilla de spring yésta será inyectada en nuestro servicio.

6. Referencias.

http://static.springsource.org/spring-security/site/docs/3.0.x/reference/ldap.htmlhttp://static.springsource.org/spring-ldap/docs/1.3.x/reference/pdf/spring-ldap-reference.pdfhttp://krams915.blogspot.com.es/2011/01/spring-security-mvc-using-embedded-ldap.html

7. Conclusiones.

Como siempre, con el soporte de Spring, lo dificil se termina convirtiendo en algo fácil y vamos allanando el terreno paraconfigurar un sistema de identidad único en nuestro entorno.

Un saludo.

Jose

[email protected]

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

414243444546474849505152535455565758596061626364656667686970

return new AttributesMapper() { @Override public Person mapFromAttributes(final Attributes attributes) throws NamingException { final Person person = new Person(); person.setUid( (String) attributes.get("uid").get()); person.setName( (String) attributes.get("cn").get()); person.setEmail( (String) attributes.get("mail").get()); return person; } }; } private AttributesMapper groupMapper() { return new AttributesMapper() { @Override public List<String> mapFromAttributes(final Attributes attributes) throws NamingException { final List<String> userIds = new ArrayList<String>(); final NamingEnumeration<?> uniquemembers = attributes.get("uniquemember" while (uniquemembers.hasMore()) { String userId = uniquemembers.next().toString().split(",")[0].split( userIds.add(userId); } return userIds; } }; } }

123456789

101112131415161718192021222324252627

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd"> <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource" init-method="afterPropertiesSet"> <property name="url" value="ldap://localhost:9898" /> <property name="base" value="o=autentia" /> <property name="userDn" value="uid=admin,ou=system" /> <property name="password" value="secret" /> </bean> <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate" init-method="afterPropertiesSet"> <constructor-arg ref="contextSource"/> </bean> <bean id="personRepository" class="com.autentia.tutoriales.spring.security.ldap.PersonLdapRepository" <constructor-arg ref="ldapTemplate"/> </bean> </beans>

?

Spring Security: haciendo uso de un servidor LDAP embebido. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

7 de 8 04/03/13 14:58

Page 9: tel./fax: +34 91 675 33 06 info@autentia.com - www ......» AngularJS: primeros pasos. Últimos Tutoriales del Autor » Introducción a Guvnor » Gestión de expedientes en el ámbito

Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5

Share | 0

» Registrate y accede a esta y otras ventajas «

Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Copyright 2003-2013 © All Rights Reserved | Texto legal y condiciones de uso | Banners | Powered by Autentia | Contacto

Spring Security: haciendo uso de un servidor LDAP embebido. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pag...

8 de 8 04/03/13 14:58