springio2012 taller seguridad web springsecurity 3

33
Seguridad en Aplicaciones Web con Spring Security 3 [Taller] Fernando Redondo Ramírez @pronoide_fer

Upload: fernando-redondo-ramirez

Post on 24-Oct-2014

64 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Springio2012 Taller Seguridad Web Springsecurity 3

Seguridad en Aplicaciones Web con Spring Security 3 [Taller]

Fernando Redondo Ramírez

@pronoide_fer

Page 2: Springio2012 Taller Seguridad Web Springsecurity 3

Í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

¿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

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

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

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

¡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

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

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

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

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

Etapa: Configurar Spring Security en la aplicación web

vi. Añadir funcionalidad “Remember Me”

Page 13: Springio2012 Taller Seguridad Web Springsecurity 3

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

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

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

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

¡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

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

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

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

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

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

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

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

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

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

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

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

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

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

¿preguntas?

The Truth is Out There

(La Verdad está ahí afuera)

Page 32: Springio2012 Taller Seguridad Web Springsecurity 3

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

Page 33: Springio2012 Taller Seguridad Web Springsecurity 3

¡Gracias!

• @pronoide_fer

[email protected]

• http://pronoide.com

• http://blog.pronoide.es