Springio2012 Taller Seguridad Web Springsecurity 3

Post on 24-Oct-2014

66 views 2 download

Tags:

Transcript of Springio2012 Taller Seguridad Web Springsecurity 3

Seguridad en Aplicaciones Web con Spring Security 3 [Taller]

Fernando Redondo Ramírez

@pronoide_fer

Índice

• ¿Quién soy?

• Breve Introducción a Spring Security 3

• ¡Manos a la obra!

• Más allá del taller

• Enlaces

• Preguntas

¿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!)

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

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

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

¡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!!

Etapa: Configurar Spring Security en la aplicación web

i. Configurar el filtro interceptor de las peticiones web

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

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

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

Etapa: Configurar Spring Security en la aplicación web

vi. Añadir funcionalidad “Remember Me”

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

Etapa: Configurar Spring Security en la aplicación web

viii. Control de la expiración de sesiones

ix. Control de la concurrencia de sesiones

Etapa: Configurar Spring Security en la aplicación web

x. Uso de la librería de etiquetas (Spring Security Taglibs)

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

¡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

Etapa: Configurar Spring Security en Servicios de Negocio

xiii. Seguridad en la invocación de métodos de negocio

con anotaciones Spring Security

Etapa: Configurar Spring Security en Servicios de Negocio

xiv. Seguridad en la invocación de métodos de negocio

con anotaciones JSR-250

Etapa: Configurar Spring Security en Servicios de Negocio

xv. Seguridad en la invocación de métodos de negocio

con Pointcuts de AspectJ

Etapa: Configurar Spring Security en Servicios de Negocio

xvi. Seguridad en la invocación de métodos de negocio

con Expresiones SpEL (Preinvocación)

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??

Etapa: Configurar Spring Security de forma jerárquica

xvii.Seguridad en la invocación de métodos de negocio

con Expresiones SpEL (Postinvocación)

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)

Etapa: Configurar Spring Security de forma jerárquica

xix. Utilización del sistema de votantes

• Codificar un votante

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

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

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

The Smoking Man

Todo esto de Spring Security

esta muy bien, pero siempre

me quedará el ataque Java2

<%System.exit(0);%>

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"

¿preguntas?

The Truth is Out There

(La Verdad está ahí afuera)

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

¡Gracias!

• @pronoide_fer

• fredondo@pronoide.com

• http://pronoide.com

• http://blog.pronoide.es