springio2012 taller seguridad web springsecurity 3
TRANSCRIPT
![Page 1: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/1.jpg)
Seguridad en Aplicaciones Web con Spring Security 3 [Taller]
Fernando Redondo Ramírez
@pronoide_fer
![Page 2: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/2.jpg)
Índice
• ¿Quién soy?
• Breve Introducción a Spring Security 3
• ¡Manos a la obra!
• Más allá del taller
• Enlaces
• Preguntas
![Page 3: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/3.jpg)
¿Quién soy?
• Emprendedor y empresario en Pronoidedesde 2003
• Formador Java & Friends
• Haciendo cosas con Java desde 1999
• Ingeniero técnico informático
• Casado y padre de dos hijos (la segunda hija podría estar naciendo ahora… ¡uff!)
![Page 4: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/4.jpg)
Breve Introducción a Spring Security 3
• ¿La seguridad JEE no es estándar? Sí, pero:
1. Seguridad JEE ⇒ Basada en restricciones (Constraints)
2. Seguridad JEE ⇒ Exclusivamente perimetral
3. Seguridad JEE ⇒ Funcionalidades dependientes de cada Servidor de Aplicaciones (Realms, SSO, Cifrado, etc.)
4. Seguridad JEE ⇒ Aplicaciones JEE no transportables entre plataformas o versiones del mismo servidor
5. Seguridad JEE ⇒ Difícil de adaptar a para aplicaciones Web 2.0 y/o nuevos requerimientos
![Page 5: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/5.jpg)
Breve Introducción a Spring Security 3
• ¿La seguridad JEE no es estándar? Sí, pero:
1. Spring Security ⇒ Basada en otorgar permisos
2. Spring Security ⇒ Perimetral y jerárquica
3. Spring Security ⇒ Funcionalidades independientes del Servidor de Aplicaciones
4. Spring Security ⇒ Aplicaciones JEE transportables
5. Spring Security ⇒ Versátil y adaptable
![Page 6: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/6.jpg)
Breve Introducción a Spring Security 3
Arquitectura (¡y se acabó!)
Seguridad Aplicaciones Spring Security 3
SecurityContextHolderSecurityContextAuthentication
GrantedAuthority
Peticiones Web
Web/HTTP Security
Cadena de filtros de seguridad
Autentificación
AuthenticationManager
AuthenticationProviders
UserDetailsService
Autorización
AccessDecisionManager
Voters
AfterInvocationManager
Métodos Negocio
Business Object (Method) Security
Proxies/Interceptores de seguridad
![Page 7: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/7.jpg)
¡Manos a la obra!
Notas
1. Descargar http://pronoide.com/descargas/fbi.war2. Importar war en STS 2.83. Ejecutar la aplicación4. Entrar en http://localhost:8080/fbi/index.jsp
¡¡Necesito seguridad
en la aplicación de
los Expedientes X!!
![Page 8: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/8.jpg)
Etapa: Configurar Spring Security en la aplicación web
i. Configurar el filtro interceptor de las peticiones web
![Page 9: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/9.jpg)
Etapa: Configurar Spring Security en la aplicación web
ii. Crear el fichero para la configuración de seguridad
con una seguridad mínima y cargarlo en el web.xml
![Page 10: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/10.jpg)
Etapa: Configurar Spring Security en la aplicación web
iii. Configurar el login/logout explícitamente
iv. Solucionar problemas de recursos, CSS e imágenes
![Page 11: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/11.jpg)
Etapa: Configurar Spring Security en la aplicación web
v. Proteger contraseñas de los usuarios encriptándolas
• Generar claves con Spring Basic Crypto Module
• Poner las claves cifradas y configurar el algoritmo y el salt
![Page 12: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/12.jpg)
Etapa: Configurar Spring Security en la aplicación web
vi. Añadir funcionalidad “Remember Me”
![Page 13: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/13.jpg)
Etapa: Configurar Spring Security en la aplicación web
vii. Seguridad en el canal de transporte (HTTPS)
• Configurar restricciones y puertos
• Crear conector SSL en Servidor
![Page 14: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/14.jpg)
Etapa: Configurar Spring Security en la aplicación web
viii. Control de la expiración de sesiones
ix. Control de la concurrencia de sesiones
![Page 15: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/15.jpg)
Etapa: Configurar Spring Security en la aplicación web
x. Uso de la librería de etiquetas (Spring Security Taglibs)
![Page 16: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/16.jpg)
Etapa: Configurar Spring Security en la aplicación web
xi. Uso Expresiones SpEL para proteger URL’s
xii. Uso Expresiones SpEL con etiquetas Security Taglib
![Page 17: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/17.jpg)
¡Pero que has hecho!
¿¿Sólo hay seguridad
en el acceso a los
recursos web??
Prueba y verás:
/clasificar?id=1
Prueba y verás:
https://localhost:8443/fbi/expedientesx
/clasificar?id=1
![Page 18: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/18.jpg)
Etapa: Configurar Spring Security en Servicios de Negocio
xiii. Seguridad en la invocación de métodos de negocio
con anotaciones Spring Security
![Page 19: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/19.jpg)
Etapa: Configurar Spring Security en Servicios de Negocio
xiv. Seguridad en la invocación de métodos de negocio
con anotaciones JSR-250
![Page 20: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/20.jpg)
Etapa: Configurar Spring Security en Servicios de Negocio
xv. Seguridad en la invocación de métodos de negocio
con Pointcuts de AspectJ
![Page 21: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/21.jpg)
Etapa: Configurar Spring Security en Servicios de Negocio
xvi. Seguridad en la invocación de métodos de negocio
con Expresiones SpEL (Preinvocación)
![Page 22: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/22.jpg)
Mucho mejor pero…
¿¿Qué haces consultando
expedientes que no son tuyos??
¿¿Cómo es que puedes ver el de
tu hermana??
¿¿… y a estas horas??
![Page 23: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/23.jpg)
Etapa: Configurar Spring Security de forma jerárquica
xvii.Seguridad en la invocación de métodos de negocio
con Expresiones SpEL (Postinvocación)
![Page 24: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/24.jpg)
Etapa: Configurar Spring Security de forma jerárquica
xviii.Seguridad en la invocación de métodos de negocio
con Expresiones SpEL (Filtro de resultados)
![Page 25: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/25.jpg)
Etapa: Configurar Spring Security de forma jerárquica
xix. Utilización del sistema de votantes
• Codificar un votante
![Page 26: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/26.jpg)
Etapa: Configurar Spring Security de forma jerárquica
xix. Utilización del sistema de votantes (cont.)
• Explicitar la configuración del espacio de nombres Security
• Personalizar la configuración del accessDecisionManager
![Page 27: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/27.jpg)
Etapa: Configurar Spring Security de forma jerárquica
xx. Personalizar la cadena de filtros de seguridad
• Crear un filtro para recordar el usuario que hace login
![Page 28: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/28.jpg)
Etapa: Configurar Spring Security de forma jerárquica
xx. Personalizar la cadena de filtros de seguridad (cont.)
• Crear un filtro para evitar el uso del botón “volver” tras
hacer logout
![Page 29: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/29.jpg)
The Smoking Man
Todo esto de Spring Security
esta muy bien, pero siempre
me quedará el ataque Java2
<%System.exit(0);%>
![Page 30: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/30.jpg)
Más allá del taller. A partir de aquí…
• Configuraciones explícitas no implícitas
• Gestión de ACL’s
• Autentificación vía DataSources, LDAP, X509, OPENID, JEE, etc
• Captcha
• Single Sign On
• Secure Remoting
• “... en la mayoría de mi trabajo, las leyes de la física rara vez se aplican.” Mulder 1x01 "Pilot"
![Page 31: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/31.jpg)
¿preguntas?
The Truth is Out There
(La Verdad está ahí afuera)
![Page 32: Springio2012 Taller Seguridad Web Springsecurity 3](https://reader033.vdocuments.mx/reader033/viewer/2022050904/544c2c47af7959a8438b5a97/html5/thumbnails/32.jpg)
Referencias
• Spring Security 3.1 Referencehttp://bit.ly/uQFyUY
• JSR-250 Annotationshttp://en.wikipedia.org/wiki/JSR_250
• Spring SpELhttp://bit.ly/xIuueQ
• Spring Security Common Built-In Expressionshttp://bit.ly/worFP0
• Spring Security Adding Custom filtershttp://bit.ly/z2vQWQ
• Constantes Spring Securityhttp://bit.ly/yszYqm
• Clasificación de la información por paíseshttp://bit.ly/zLCoNT