Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Fernando Redondo Ramírez 
@pronoide_fer 
Seguridad de las aplicaciones 
web con Spring Security 3.x 
MADRID · NOV 21-22 · ...
Roadmap 
MADRID · NOV 21-22 · 2014 
• ¿Quien soy? 
• Una pequeña 
introducción a Spring 
Security 
• Manos a la obra 
• Má...
Whoami 
• Emprendedor y gestor de pronoide desde 2003 
• Formador Java & Friends (Java EE, Spring, Groovy, Maven, 
Jenkins...
Breve Introducción a Spring Security 
• ¿No es la seguridad una característica estándar de 
Java EE? Si, por supuesto. Per...
Breve Introducción a Spring Security 
• ¿Por qué utilizar Spring Security? 
Porque: 
• Spring Security ⇒Basado en conceder...
Breve Introducción a Spring Security 
Métodos de Negocio 
Seguridad en invocación de los 
métodos de los Objetos de Negoci...
Tu próxima misión 
¡Necesito seguridad en 
la aplicación de los 
Expedientes X! 
MADRID · NOV 21-22 · 2014
¡Manos a la obra! (Más tarde en casa) 
MADRID · NOV 21-22 · 2014 
Antes de empezar, hay que… 
1. Instalar git en tu equipo...
La webapp de los Expedientes X 
Importar la webapp (File/Import/Git/Proyect from Git) 
MADRID · NOV 21-22 · 2014
La webapp de los Expedientes X 
MADRID · NOV 21-22 · 2014 
¡Ejecutarla!
Etapa: Configurar Spring Security en una webapp 
i. Configurar un filtro interceptor para todas las peticiones web 
MADRID...
Etapa: Configurar Spring Security en una webapp 
ii. Crear un nuevo fichero de configuración de Spring beans 
con una conf...
Etapa: Configurar Spring Security en una webapp 
iii. Configurar explícitamente los mecanismos de login / logout 
iv. Arre...
La webapp de los Expedientes X 
MADRID · NOV 21-22 · 2014
Etapa: Configurar Spring Security en una webapp 
v. Encriptar las claves de los usuarios vía Spring Security Crypto 
MADRI...
Etapa: Configurar Spring Security en una webapp 
vi. Añadir la característica Remember Me al proceso de login 
MADRID · NO...
Etapa: Configurar Spring Security en una webapp 
vii. Asegurar el canal de transporte (HTTPS) 
MADRID · NOV 21-22 · 2014 
...
Etapa: Configurar Spring Security en una webapp 
MADRID · NOV 21-22 · 2014 
viii. Gestionar la expiración de sesiones 
ix....
Etapa: Configurar Spring Security en una webapp 
x. Usar la librería de etiquetas de JSP (Spring Security Taglibs) 
MADRID...
Etapa: Configurar Spring Security en una webapp 
xi. Uso de SpEL para proteger URLs (Spring Expression 
MADRID · NOV 21-22...
¡Pero que has hecho! 
¿Sólo hay seguridad en el 
acceso a los recursos 
Web? ¿Eso es lo mejor 
que lo puedes hacer? 
Prueb...
Etapa: Configurar Spring Security en los métodos de negocio 
xii. Asegurar las invocaciones a los métodos de negocio 
medi...
Etapa: Configurar Spring Security en los métodos de negocio 
xiii. Asegurar las invocaciones de métodos con AspectJ pointc...
Etapa: Configurar Spring Security en los métodos de negocio 
xiv. Asegurar las invocaciones de métodos con SpEL (Preinvoca...
¡Mucho mejor! Pero… 
¿Qué haces viendo expedientes que 
no son tuyos? 
¿Por qué eres capaz de acceder al 
expediente de tu...
Etapa: Configurar Spring Security de forma jerárquica 
xiv. Asegurar las invocaciones de métodos con SpEL (Postinvocación)...
Etapa: Configurar Spring Security de forma jerárquica 
xvii. Personalización de los votantes de acceso 
MADRID · NOV 21-22...
Etapa: Configurar Spring Security de forma jerárquica 
xviii.Personalización de los votantes de acceso (continuación) 
• D...
Etapa: Spring Security Bola Extra 1 
xix. Personalización de la cadena de filtros de seguridad (Ejemplo A) 
MADRID · NOV 2...
Etapa: Spring Security Bola Extra 2 
xix. Personalización de la cadena de filtros de seguridad (Ejemplo B) 
MADRID · NOV 2...
El Fumador (The smoking man) 
Todas estas características de 
Spring Security están bastante 
bien, pero siempre me quedar...
Más allá… 
• Configuraciones explicitas 
y no implicitas 
• Gestión de ACL’s 
• Autentificación con DataSources, 
LDAP, X5...
¡Gracias! 
@pronoide_fer 
https://github.com/fredondo/ 
fredondo@pronoide.com 
http://pronoide.es 
MADRID · NOV 21-22 · 20...
Apendice: ¡Manos a la obra(en casa)! 
Navegar a través del código del proyecto con git_presenter 
1. Instalar jruby o ruby...
Próxima SlideShare
Cargando en…5
×

Seguridad de las aplicaciones web con Spring Security 3.x

2.100 visualizaciones

Publicado el

Desde una aplicación web simple, previamente desarrollada, basada en la serie televisiva expediente X (X-Files), el objetivo será establecer la autenticación y autorización de usuarios de recursos de la aplicación web, como securizar la invocación de los métodos de los componentes de negocio. Se establecerá una configuración de seguridad mínima inicial, que se completará con mecanismos más sofisticados, a continuación. Todo ello, haciendo hincapié en las novedades de la versión 3.x de Spring Security como el uso de SPEL, anotaciones, espacio de nombres, configuración Java, etc. Los asistentes podrán ver muchas de las características que implementa Spring Security para establecer mecanismos de seguridad en las aplicaciones JEE. Las herramientas a utilizar serán Spring Tool Suite 3.6, Springframework 3.2, Maven 3 y Spring TC Server 2.9.

Publicado en: Tecnología
  • Sé el primero en comentar

Seguridad de las aplicaciones web con Spring Security 3.x

  1. 1. Fernando Redondo Ramírez @pronoide_fer Seguridad de las aplicaciones web con Spring Security 3.x MADRID · NOV 21-22 · 2014
  2. 2. Roadmap MADRID · NOV 21-22 · 2014 • ¿Quien soy? • Una pequeña introducción a Spring Security • Manos a la obra • Más allá…
  3. 3. Whoami • Emprendedor y gestor de pronoide desde 2003 • Formador Java & Friends (Java EE, Spring, Groovy, Maven, Jenkins, Sonar, Weblogic, Jboss, Websphere, Discotecas y demás ) • Haciendo cosas con Java desde 1999 • Ingeniero Informático • Felizmente casado y padre de dos hijos ;) • Quise ser físico después de ser informático y me encantaban la serie de expedientes X MADRID · NOV 21-22 · 2014
  4. 4. Breve Introducción a Spring Security • ¿No es la seguridad una característica estándar de Java EE? Si, por supuesto. Pero: • La seguridad Java EE ⇒Esta basada en restricciones • La seguridad Java EE ⇒Solo define un perímetro de seguridad • La seguridad Java EE ⇒sus características dependen en última instancia de cada Servidor de Aplicaciones Server (Reinos, SSO, Cifrado, etc) • La seguridad Java EE ⇒Las aplicaciones securizadas con Java EE no se pueden transportar fácilmente entre plataformas diferentes o versiones distintas de un servidor • La seguridad Java EE ⇒Difícil de adaptar a Web 2.0 o a requerimientos cambiantes MADRID · NOV 21-22 · 2014
  5. 5. Breve Introducción a Spring Security • ¿Por qué utilizar Spring Security? Porque: • Spring Security ⇒Basado en conceder permisos • Spring Security ⇒Seguridad tanto perimetral como jerárquica • Spring Security ⇒Las características son independientes del servidor de aplicaciones • Spring Security ⇒Aplicaciones Java EE seguras y transportables • Spring Security ⇒Adaptabilidad and versatilidad MADRID · NOV 21-22 · 2014
  6. 6. Breve Introducción a Spring Security Métodos de Negocio Seguridad en invocación de los métodos de los Objetos de Negocio Proxies/Interceptores de Securidad MADRID · NOV 21-22 · 2014 • ¡Arquitectura y se acabó! Spring Security 3 Clases y estructuras SecurityContextHolder SecurityContext Authentication GrantedAuthority Peticiones Web Seguridad Web/HTTP Cadena de filtros de seguridad Autentificación AuthenticationManager AuthenticationProviders UserDetailsService Autorización AccessDecisionManager Voters AfterInvocationManager
  7. 7. Tu próxima misión ¡Necesito seguridad en la aplicación de los Expedientes X! MADRID · NOV 21-22 · 2014
  8. 8. ¡Manos a la obra! (Más tarde en casa) MADRID · NOV 21-22 · 2014 Antes de empezar, hay que… 1. Instalar git en tu equipo http://git-scm.com/book/en/Getting-Started-Installing-Git 2. Descargar Spring Tool Suite 3.5/3.6 https://spring.io/tools/sts/all 3. Arrancar Spring Tool Suite (STS) y elegir o crear un workspace (recordar ejecutarlo con un JDK) 4. Descargar http://pronoide.com/downloads/codemotion2014-spring-security- xfiles.zip y descomprimirlo en la carpeta del workspace. 5. ¡Ve a tu ritmo! Es bastante fácil…
  9. 9. La webapp de los Expedientes X Importar la webapp (File/Import/Git/Proyect from Git) MADRID · NOV 21-22 · 2014
  10. 10. La webapp de los Expedientes X MADRID · NOV 21-22 · 2014 ¡Ejecutarla!
  11. 11. Etapa: Configurar Spring Security en una webapp i. Configurar un filtro interceptor para todas las peticiones web MADRID · NOV 21-22 · 2014
  12. 12. Etapa: Configurar Spring Security en una webapp ii. Crear un nuevo fichero de configuración de Spring beans con una configuración mínima inicial y cargar vía web.xml context parameter MADRID · NOV 21-22 · 2014
  13. 13. Etapa: Configurar Spring Security en una webapp iii. Configurar explícitamente los mecanismos de login / logout iv. Arreglar problemas con recursos, imagenes y ficheros CSS MADRID · NOV 21-22 · 2014
  14. 14. La webapp de los Expedientes X MADRID · NOV 21-22 · 2014
  15. 15. Etapa: Configurar Spring Security en una webapp v. Encriptar las claves de los usuarios vía Spring Security Crypto MADRID · NOV 21-22 · 2014 Module • Cifrar claves • Configurar el algoritmo y el campo de salt. Luego usar dichas claves en el fichero de configuración de seguridad
  16. 16. Etapa: Configurar Spring Security en una webapp vi. Añadir la característica Remember Me al proceso de login MADRID · NOV 21-22 · 2014
  17. 17. Etapa: Configurar Spring Security en una webapp vii. Asegurar el canal de transporte (HTTPS) MADRID · NOV 21-22 · 2014 • Establecer restricciones y puertos • Configurar servidor tomcat (crear el connector SSL )
  18. 18. Etapa: Configurar Spring Security en una webapp MADRID · NOV 21-22 · 2014 viii. Gestionar la expiración de sesiones ix. Manejar la concurrencia de sessiones
  19. 19. Etapa: Configurar Spring Security en una webapp x. Usar la librería de etiquetas de JSP (Spring Security Taglibs) MADRID · NOV 21-22 · 2014
  20. 20. Etapa: Configurar Spring Security en una webapp xi. Uso de SpEL para proteger URLs (Spring Expression MADRID · NOV 21-22 · 2014 Language) xii. Uso de SpEL con las etiquetas de Spring Security
  21. 21. ¡Pero que has hecho! ¿Sólo hay seguridad en el acceso a los recursos Web? ¿Eso es lo mejor que lo puedes hacer? Prueba esta URL y observa lo que ocurre: https://localhost:8443/fbi/xfiles/declassify?id=0 MADRID · NOV 21-22 · 2014
  22. 22. Etapa: Configurar Spring Security en los métodos de negocio xii. Asegurar las invocaciones a los métodos de negocio mediantes las Anotaciones de Spring Security MADRID · NOV 21-22 · 2014
  23. 23. Etapa: Configurar Spring Security en los métodos de negocio xiii. Asegurar las invocaciones de métodos con AspectJ pointcuts MADRID · NOV 21-22 · 2014
  24. 24. Etapa: Configurar Spring Security en los métodos de negocio xiv. Asegurar las invocaciones de métodos con SpEL (Preinvocación) MADRID · NOV 21-22 · 2014
  25. 25. ¡Mucho mejor! Pero… ¿Qué haces viendo expedientes que no son tuyos? ¿Por qué eres capaz de acceder al expediente de tu hermana? ¿Y por qué accedes a ciertas horas de la noche? MADRID · NOV 21-22 · 2014
  26. 26. Etapa: Configurar Spring Security de forma jerárquica xiv. Asegurar las invocaciones de métodos con SpEL (Postinvocación) xiv. Asegurar las invocaciones de métodos con SpEL (Filtrar resultados) MADRID · NOV 21-22 · 2014
  27. 27. Etapa: Configurar Spring Security de forma jerárquica xvii. Personalización de los votantes de acceso MADRID · NOV 21-22 · 2014 • Codificar un nuevo votante
  28. 28. Etapa: Configurar Spring Security de forma jerárquica xviii.Personalización de los votantes de acceso (continuación) • Descartar la configuración automática de Spring Security y mostrar la real • Personalizar el comportamiento del Access Decision Manager MADRID · NOV 21-22 · 2014
  29. 29. Etapa: Spring Security Bola Extra 1 xix. Personalización de la cadena de filtros de seguridad (Ejemplo A) MADRID · NOV 21-22 · 2014 • Crear un filtro personalizado • Colocarlo en la cadena de filtros
  30. 30. Etapa: Spring Security Bola Extra 2 xix. Personalización de la cadena de filtros de seguridad (Ejemplo B) MADRID · NOV 21-22 · 2014 • Crear un filtro personalizado • Colocarlo en la cadena de filtros
  31. 31. El Fumador (The smoking man) Todas estas características de Spring Security están bastante bien, pero siempre me quedará usar el ataque Java2: <%System.exit(0);%> MADRID · NOV 21-22 · 2014
  32. 32. Más allá… • Configuraciones explicitas y no implicitas • Gestión de ACL’s • Autentificación con DataSources, LDAP, X509, OPENID, Java EE, etc • Captchas • Single Sign On • Java Config “… in most of my work, the laws of physics rarely seems to apply.” Fox Mulder 1x01 "Pilot" MADRID · NOV 21-22 · 2014
  33. 33. ¡Gracias! @pronoide_fer https://github.com/fredondo/ fredondo@pronoide.com http://pronoide.es MADRID · NOV 21-22 · 2014
  34. 34. Apendice: ¡Manos a la obra(en casa)! Navegar a través del código del proyecto con git_presenter 1. Instalar jruby o ruby MADRID · NOV 21-22 · 2014 http://jruby.org/getting-started https://www.ruby-lang.org/en/installation/ 2. Instalar git presenter (gem install git_presenter) 3. Cuando el codigo este preparado ejecutar el comando"git-presenter init" 4. Una vez inicializado se puede empezar la presentación con "git-presenter start" 5. Después usar los siguientes comandos para navegar por la presentación • next/n: move to the next slide (commit) • back/b: move to the back slide (commit) • end/e: move to the end of presentation • start/s: move to the start of presentation • list/l : list slides in presentation • help/h: display this message

×