Spring Security

7,711 views
7,571 views

Published on

Breve presentación que use en la impartición de un curso introductorio al framework de seguridad de Spring en su versión 3

Published in: Technology, News & Politics
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,711
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
0
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Spring Security

  1. 1. INTRODUCCIÓN A SPRING SECURITY Santiago Márquez Solís
  2. 2. Contenidos <ul><li>Introducción </li></ul><ul><li>Relación de Módulos </li></ul><ul><li>Funcionamiento </li></ul><ul><li>Clases Principales </li></ul><ul><li>Configuración </li></ul>
  3. 3. Spring Security (1) <ul><li>Introducción (1) </li></ul><ul><ul><li>Es uno de los frameworks de seguridad web mas utilizados hoy en día </li></ul></ul><ul><ul><li>Está basado en Acegi un proyecto que paso a formar parte de Spring (2003) </li></ul></ul><ul><ul><ul><li>2006 – versión 1.0.0 </li></ul></ul></ul><ul><ul><ul><li>Actualmente (enero 2011) – versión 3.0.x </li></ul></ul></ul><ul><ul><li>Se caracteriza fundamentalmente por ser no invasivo </li></ul></ul><ul><ul><li>La versión 3.x necesita la JRE 5 para funcionar </li></ul></ul>
  4. 4. Spring Security (2) <ul><li>Introducción (2) </li></ul><ul><ul><li>Importante su sistema de versiones (Apache Portable Runtime Project): MAJOR.MINOR.PATCH </li></ul></ul><ul><ul><ul><li>Entre MAJOR no hay compatibilidad con otras MAJOR </li></ul></ul></ul><ul><ul><ul><li>MINOR compatibilidad garantizada con MINOR menores </li></ul></ul></ul><ul><ul><ul><li>PATCH compatibilidad garantizada con PATH menores </li></ul></ul></ul><ul><ul><li>Hace hincapié en los dos aspectos fundamentales de la seguridad de aplicaciones: </li></ul></ul><ul><ul><ul><li>Autenticación </li></ul></ul></ul><ul><ul><ul><li>Autorización </li></ul></ul></ul>
  5. 5. Spring Security (3) <ul><li>Introducción (3) </li></ul><ul><ul><li>Autenticación (¿quién soy?) </li></ul></ul><ul><ul><ul><li>Consiste en determinar quien (principal) desea hacer uso del sistema (usuario o dispositivo) </li></ul></ul></ul><ul><ul><ul><li>Spring Security provee los siguientes mecanismos: </li></ul></ul></ul><ul><ul><ul><ul><li>HTTP Basic </li></ul></ul></ul></ul><ul><ul><ul><ul><li>HTTP Digest </li></ul></ul></ul></ul><ul><ul><ul><ul><li>HTTP X.509 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>LDAP </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Autenticación basada en formulario </li></ul></ul></ul></ul><ul><ul><ul><ul><li>OpenID </li></ul></ul></ul></ul><ul><ul><ul><ul><li>… . (ver documento adjunto) </li></ul></ul></ul></ul>
  6. 6. Spring Security (4) <ul><li>Introducción (y 4) </li></ul><ul><ul><li>Autorización (¿qué puedo hacer?) </li></ul></ul><ul><ul><ul><li>Consiste en determinar qué se puede hacer sobre el sistema. </li></ul></ul></ul><ul><ul><ul><li>Spring Security define tres niveles: </li></ul></ul></ul><ul><ul><ul><ul><li>Nivel Web  Qué URLs se solicitan al servidor, </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Qué métodos y clases Java se quieren usar </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Qué instancias concretas de las clases van a utilizarse </li></ul></ul></ul></ul>
  7. 7. Spring Security (5) <ul><li>Relación de Módulos (1) </li></ul><ul><ul><li>Núcleo (spring-security-core.jar) </li></ul></ul><ul><ul><ul><li>Contiene las clases e interfaces básicos para autenticación y control del acceso a las clases. </li></ul></ul></ul><ul><ul><ul><li>Hay que incluirlo en cualquier aplicación que haga uso de Spring Security </li></ul></ul></ul><ul><ul><ul><li>Los paquetes principales son: </li></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.core </li></ul></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.access </li></ul></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.authentication </li></ul></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.provisioning </li></ul></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.remoting </li></ul></ul></ul></ul>
  8. 8. Spring Security (6) <ul><li>Relación de Módulos (2) </li></ul><ul><ul><li>Web (spring-security-web.jar) </li></ul></ul><ul><ul><ul><li>Contiene los filtros y el código relacionado con la infraestructura de seguridad web </li></ul></ul></ul><ul><ul><ul><li>Se necesitará si requerimos servicios de autenticación web y control del acceso basada en URL </li></ul></ul></ul><ul><ul><ul><li>El paquete principal es: </li></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.web. </li></ul></ul></ul></ul>
  9. 9. Spring Security (7) <ul><li>Relación de Módulos (3) </li></ul><ul><ul><li>Config (spring-security-config.jar) (1) </li></ul></ul><ul><ul><ul><li>Contiene el código para la manipulación del namespace de seguridad </li></ul></ul></ul><ul><ul><ul><li>Es poco probable que lo usemos en el código directamente </li></ul></ul></ul><ul><ul><ul><li>Hay que incluirlo si estamos configurando Spring Security haciendo uso del namespace de seguridad en nuestro fichero de contexto </li></ul></ul></ul><ul><ul><ul><li>El paquete principal es: </li></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.config. </li></ul></ul></ul></ul>
  10. 10. Spring Security (8) <ul><li>Relación de Módulos (4) </li></ul><ul><ul><li>Config (spring-security-config.jar) (1) </li></ul></ul><ul><li>Disponemos de las siguientes áreas: </li></ul><ul><ul><li>Web/HTTP Security </li></ul></ul><ul><ul><li>Business Object (Method) Security </li></ul></ul><ul><ul><li>Authentication Manager </li></ul></ul><ul><ul><li>Access Decision Manager </li></ul></ul><ul><ul><li>Authentication Providers </li></ul></ul><ul><ul><li>User Details Service </li></ul></ul>
  11. 11. Spring Security (9) <ul><li>Relación de Módulos (5) </li></ul><ul><ul><li>LDAP (spring-security-ldap.jar) </li></ul></ul><ul><ul><ul><li>Incluye el código necesario para autenticación basada en LDAP </li></ul></ul></ul><ul><ul><ul><li>Lo usaremos si necesitamos autenticación basada en LDAP o administrar las entradas de usuario LDAP. </li></ul></ul></ul><ul><ul><ul><li>El paquete principal es: </li></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.ldap. </li></ul></ul></ul></ul>
  12. 12. Spring Security (10) <ul><li>Relación de Módulos (6) </li></ul><ul><ul><li>ACL (spring-security-acl.jar) </li></ul></ul><ul><ul><ul><li>Implementación del objeto de dominio especializado ACL </li></ul></ul></ul><ul><ul><ul><li>Lo usaremos para aplicar seguridad a instancias de objetos especificas dentro de un dominio de la aplicación </li></ul></ul></ul><ul><ul><ul><li>El paquete principal es: </li></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.acls </li></ul></ul></ul></ul>
  13. 13. Spring Security (11) <ul><li>Relación de Módulos (7) </li></ul><ul><ul><li>CAS (spring-security-cas-client.jar) </li></ul></ul><ul><ul><ul><li>Integración con el cliente de CAS </li></ul></ul></ul><ul><ul><ul><li>Lo usaremos si queremos autenticación web con un servidor single Sing-on </li></ul></ul></ul><ul><ul><ul><li>El paquete principal es: </li></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.cas. </li></ul></ul></ul></ul>
  14. 14. Spring Security (12) <ul><li>Relación de Módulos (y 8) </li></ul><ul><ul><li>OpenID (spring-security-openid.jar) </li></ul></ul><ul><ul><ul><li>Clases para autenticación web basadas en OpenID </li></ul></ul></ul><ul><ul><ul><ul><li>OpenID es un sistema de autenticación descentralizado, de modo que un usuario se valida en un URL y cualquier servidor que soporte el protocolo puede verificarlo. </li></ul></ul></ul></ul><ul><ul><ul><li>Lo usaremos si queremos realizar un proceso de autenticación contra un servidor OpenID externo. </li></ul></ul></ul><ul><ul><ul><li>Necesitamos también tener OpenID4Java en nuestro entorno </li></ul></ul></ul><ul><ul><ul><li>El paquete principal es: </li></ul></ul></ul><ul><ul><ul><ul><li>org.springframework.security.openid </li></ul></ul></ul></ul>
  15. 15. Spring Security (13) <ul><li>Funcionamiento (1) </li></ul><ul><ul><li>Spring Security se basa en el uso de filtros en los servlets (Servlet Filter) </li></ul></ul><ul><ul><li>Esto permite la creación de capas de seguridad </li></ul></ul><ul><ul><li>Un Servlet Filter es cualquier clase que implemente el interface “javax.servlet.Filter” </li></ul></ul><ul><ul><ul><li>Interceptan la petición del usuario </li></ul></ul></ul><ul><ul><ul><li>Realizan operaciones de pre y post proceso o de redirección de la petición </li></ul></ul></ul>
  16. 16. Spring Security (14) <ul><li>Funcionamiento (2) </li></ul><ul><ul><li>Spring Security al arrancar prepara un conjunto de hasta diez filtros para ser usados en secuencia  javax.servlet.FilterChain de J2EE </li></ul></ul><ul><ul><li>Spring Security implementa su propia abstracción “VirtualFilterChain” del “FilterChain” para realizar la ejecución </li></ul></ul>
  17. 17. Spring Security (15) <ul><li>Funcionamiento (3) </li></ul><ul><ul><li>El Servlet Filter Gráficamente </li></ul></ul>
  18. 18. Spring Security (16) <ul><li>Funcionamiento (4) </li></ul>Servlet Container Usuario Web FilterToBeanProxy IoC Container FilterChainProxy Filter 1 Filter 3 Filter 4 Filter 5 Filter 2 Filter X Servlet Spring Security incluye unos 25 filtros
  19. 19. Spring Security (17) <ul><li>Funcionamiento (5) </li></ul><ul><ul><li>Algunos Filtros de Spring Security: </li></ul></ul>
  20. 20. Spring Security (18) <ul><li>Funcionamiento (6) </li></ul>Authentication Mechanism Filter 3 Authentication “ Request” ProviderManager Authentication “ Response” creates creates calls Security ContextHolder populates returns
  21. 21. Spring Security (19) <ul><li>Funcionamiento (7) </li></ul><ul><ul><li>Sistema de Autorización (1): </li></ul></ul>
  22. 22. Spring Security (20) <ul><li>Funcionamiento (8) </li></ul><ul><ul><li>Sistema de Autorización (2) </li></ul></ul><ul><ul><ul><li>Se basa en un sistema de votos </li></ul></ul></ul><ul><ul><ul><li>Tres implementaciones: </li></ul></ul></ul><ul><ul><ul><ul><li>AffirmativeBased :  En el caso de recibir un sólo voto positivo, se le da acceso al recurso protegido.Se permite controlar el comportamiento en el caso que todos los votos son de abstención. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>ConsensusBased : Será necesario que haya más votos positivos que negativos para dar acceso al recurso protegido. Se permite controlar el comportamiento en el caso que todos los votos son de abstención </li></ul></ul></ul></ul><ul><ul><ul><ul><li>UnanimousBased : Es necesario que todos los votos sean positivos para dar acceso al recurso protegido. Se permite controlar el comportamiento en el caso que todos los votos son de abstención. </li></ul></ul></ul></ul>
  23. 23. Spring Security (21) <ul><li>Funcionamiento (9) </li></ul><ul><ul><li>Sistema de Autorización (3) </li></ul></ul><ul><ul><ul><li>AccessDecisionManager usan AccessDecisionVoter </li></ul></ul></ul><ul><ul><ul><li>Dos implementaciones (1): </li></ul></ul></ul><ul><ul><ul><ul><li>RoleVoter : </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>comprueba si para cada rol especificado para proteger al recurso protegido lo presenta el principal que realiza la petición. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>En tal caso emite un voto positivo y en caso contrario realizará un voto negativo. </li></ul></ul></ul></ul></ul>
  24. 24. Spring Security (22) <ul><li>Funcionamiento (10) </li></ul><ul><ul><li>Sistema de Autorización (y 4) </li></ul></ul><ul><ul><ul><li>AccessDecisionManager usan AccessDecisionVoter </li></ul></ul></ul><ul><ul><ul><li>Dos implementaciones (2): </li></ul></ul></ul><ul><ul><ul><ul><li>AuthenticatedVoter . </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>permite diferenciar entre acceso anónimo al recurso, completamente autenticado u autenticado mediante mecanismos remember-me (IS_AUTHENTICATED:ANONYMOUS, IS_AUTHENTICATED_REMEMBERED, IS_AUTHENTICATED_FULLY). </li></ul></ul></ul></ul></ul>
  25. 25. Spring Security (23) <ul><li>Funcionamiento (y 11) </li></ul><ul><ul><li>Existen cuatro formas distintas de securizar las ejecuciones de métodos dentro de Spring Security: </li></ul></ul><ul><ul><ul><li>Configuración de seguridad a nivel global (uso del namespace)  Es la que veremos </li></ul></ul></ul><ul><ul><ul><li>Configuración de seguridad usando el componente MethodSecurityInterceptor </li></ul></ul></ul><ul><ul><ul><li>Configuración de seguridad basada en anotaciones (JSR-250 ó SpringSecurity). </li></ul></ul></ul><ul><ul><ul><li>Configuración de seguridad a nivel de bean </li></ul></ul></ul>
  26. 26. Spring Security (24) <ul><li>Clases Principales (1): </li></ul><ul><ul><li>AuthenticationManager: </li></ul></ul><ul><ul><ul><li>Es un interfaz </li></ul></ul></ul><ul><ul><ul><li>Es el componente principal y el encargado de implementar el proceso de autenticación de las aplicaciones </li></ul></ul></ul><ul><ul><ul><li>Implementa el método: </li></ul></ul></ul><ul><ul><ul><li>Authentication authenticate (Authentication authentication) throws AuthtenticationException; </li></ul></ul></ul>
  27. 27. Spring Security (25) <ul><li>Clases Principales </li></ul><ul><ul><li>Authentication: </li></ul></ul><ul><ul><ul><li>Guarda los datos asociados a la entidad y el conjunto de roles que posee esta entidad </li></ul></ul></ul><ul><ul><ul><li>Da soporte a AuthenticationManager para implementar el servicio de autenticación </li></ul></ul></ul><ul><ul><ul><li>Métodos importantes: </li></ul></ul></ul><ul><ul><ul><ul><li>getPrincipal()  Devuelve la entidad autenticada </li></ul></ul></ul></ul><ul><ul><ul><ul><li>getCredentials()  Devuelve las credenciales de la entidad autenticada </li></ul></ul></ul></ul>
  28. 28. Spring Security (26) <ul><li>Clases Principales (2) </li></ul><ul><ul><li>SecurityContextHolder: </li></ul></ul><ul><ul><ul><li>encargado de guardar los datos del principal y sus roles (autoridades) dentro del contexto de seguridad </li></ul></ul></ul><ul><ul><ul><li>Guarda el objeto Authentication en el contexto de seguridad </li></ul></ul></ul><ul><ul><ul><ul><li>Generalmente coincide con el ThreatLocal </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Permite que la información que reside en el Authentication pueda ser consultada por cualquier componente de nuestra aplicación </li></ul></ul></ul></ul>
  29. 29. Spring Security (27) <ul><li>Clases Principales (3) </li></ul><ul><ul><li>UserDetailsService </li></ul></ul><ul><ul><ul><li>Es el objeto en donde el AuthenticationManager delega la información del usuario </li></ul></ul></ul><ul><ul><ul><li>Permite obtener información del usuario sobre el repositorio de seguridad </li></ul></ul></ul><ul><ul><ul><li>Métodos: </li></ul></ul></ul><ul><ul><ul><ul><li>loadUserByUsername(username)  Devuelve un objeto “UserDetails” pasando como parámetro el nombre del usuario </li></ul></ul></ul></ul>
  30. 30. Spring Security (27) <ul><li>Clases Principales (y 4) </li></ul><ul><ul><li>UserDetails </li></ul></ul><ul><ul><ul><li>Encapsula información del usuario autenticado </li></ul></ul></ul><ul><ul><ul><li>Métodos: </li></ul></ul></ul><ul><ul><ul><ul><li>getAuthorities()  Autorizaciones del usuario </li></ul></ul></ul></ul><ul><ul><ul><ul><li>getPassword()  Password del usuario </li></ul></ul></ul></ul><ul><ul><ul><ul><li>getUsername()  Nombre de Usuario </li></ul></ul></ul></ul><ul><ul><ul><ul><li>isAccountNonExpired() </li></ul></ul></ul></ul><ul><ul><ul><ul><li>isAccountNonLocked() </li></ul></ul></ul></ul><ul><ul><ul><ul><li>isEnabled() </li></ul></ul></ul></ul><ul><ul><ul><ul><li>isCredentialsNonExpired() </li></ul></ul></ul></ul>
  31. 31. Spring Security (28) <ul><li>Configuración (1) </li></ul><ul><ul><ul><li>Hay que añadir un nuevo filtro a “web.xml” </li></ul></ul></ul><ul><ul><ul><li>Y el listener adecuado para la carga del fichero de contexto </li></ul></ul></ul>
  32. 32. Spring Security (29) <ul><li>Configuración (2) </li></ul><ul><ul><li>Si no se específica, el fichero de contexto se llama “applicationContext.xml” </li></ul></ul><ul><ul><li>Para especificar un nombre se hace uso de un parámetro “contextConfigLocation” para indicar a “ContextLoaderListener” el fichero </li></ul></ul>
  33. 33. Spring Security (30) <ul><li>Configuración (3) </li></ul><ul><ul><li>En el “applicationContext.xml”se establece la configuración de la seguridad por namespace </li></ul></ul><ul><ul><li>Los elementos básicos son (1): </li></ul></ul><ul><ul><ul><ul><li><http> </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Define las reglas de autenticación para las URLs </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Crea el “FilterChainProxy” </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li><authentication-manager> </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Establece el mecanismo de validación que deseamos utilizar para la aplicación </li></ul></ul></ul></ul></ul>
  34. 34. Spring Security (31) <ul><li>Configuración (4) </li></ul><ul><ul><li>Los elementos básicos son (y 2) </li></ul></ul><ul><ul><ul><ul><li>La configuración mínima de estos elementos es: </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Auto-config = “true” abreviatura para incluir en http: </li></ul></ul></ul></ul>
  35. 35. Spring Security (32) <ul><li>Configuración (5) </li></ul><ul><ul><li>Añadiendo página de login (1) </li></ul></ul><ul><ul><ul><li>Si no se indica Spring Security genera una por defecto </li></ul></ul></ul><ul><ul><ul><li>Podemos indicar una del modo siguiente: </li></ul></ul></ul><ul><ul><ul><li>“ IS_AUTHENTICATED_ANONYMOUSLY” indica si el usuario es anónimo </li></ul></ul></ul>
  36. 36. Spring Security (33) <ul><li>Configuración (6) </li></ul><ul><ul><li>Añadiendo página de login (y 2) </li></ul></ul><ul><ul><ul><li>“ j_spring_security_check”, “j_username” y “j_password” </li></ul></ul></ul><ul><ul><ul><ul><li>son elementos del filtro UsernamePasswordAuthenticationFilter </li></ul></ul></ul></ul><ul><ul><ul><li>Los atributos “default-target-url” y “always-use-default-target” redirigen la petición después del login </li></ul></ul></ul>
  37. 37. Spring Security (34) <ul><li>Configuración (7) </li></ul><ul><ul><li>Otros proveedores de autenticación </li></ul></ul><ul><ul><ul><li>A través de Password Encoder (MD5 o SHA) </li></ul></ul></ul><ul><ul><ul><li>Se añade con “<password-encoder>” </li></ul></ul></ul><ul><ul><ul><li>El método de codificación se marca en el atributo “hash” que puede ser “md5” o “sha” </li></ul></ul></ul><ul><ul><ul><li>… ver proyecto adjunto sobre autenticación en Base de Datos como otro proveedor de autenticación </li></ul></ul></ul>
  38. 38. Spring Security (35) <ul><li>Configuración (8) </li></ul><ul><ul><li>Añadiendo canal de seguridad HTTP/HTTPS </li></ul></ul><ul><ul><ul><li>Se consigue con el atributo “requires-channel” </li></ul></ul></ul><ul><ul><ul><li>Admite tres valores: “http”, “https” y “any” </li></ul></ul></ul><ul><ul><ul><li>Pueden configurarse los puertos a través de “<port-mapping>” </li></ul></ul></ul>
  39. 39. Spring Security (36) <ul><li>Configuración (9) </li></ul><ul><ul><li>Detección del Timeout de Sesión </li></ul></ul><ul><ul><ul><li>Se consigue con “<session-management>” </li></ul></ul></ul><ul><ul><ul><li>En el atributo “invalid-session-url” se indica la página a la que ir cuando hay un timeout en el servidor </li></ul></ul></ul>
  40. 40. Spring Security (37) <ul><li>Configuración (10) </li></ul><ul><ul><li>Control de la Sesión (1) </li></ul></ul><ul><ul><ul><li>Se puede controlar las veces que un usuario está logado dentro de la aplicación </li></ul></ul></ul><ul><ul><ul><ul><li>Hay que añadir a web.xml el filtro: org.springframework.security.web.session.HttpSessionEventPublisher </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Esto habilita “<session-management>” y “<concurrency-control>” </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>max-sessions  establece el máximo de sesiones por usuario </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>error-if-maximun-exceeded  true si queremos que se produzca un error al exceder “max-sessions” </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>session-authentication-error-url  Url a la que reenviar al usuario se produce el error </li></ul></ul></ul></ul></ul>
  41. 41. Spring Security (38) <ul><li>Configuración (11) </li></ul><ul><ul><li>Control de la Sesión (2) </li></ul></ul>
  42. 42. Spring Security (39) <ul><li>Configuración (12) </li></ul><ul><ul><li>Control de la Sesión (3) </li></ul></ul><ul><ul><ul><li>Spring Security proporciona la posibilidad de controlar el ataque por fijación de sesión ( Session Fixation Attack) </li></ul></ul></ul><ul><ul><ul><ul><li>Escenario: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Usuario A  cuenta bancaria en http://BancoNoSeguro (acepta cualquier tipo de SID de usuario) </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Usuario B  envía un correo a A con un texto tipo: “ Estimado cliente…… por favor haz clic en: http://BancoNoSeguro/?SID=LO_QUE_QUIERAS </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Usuario A  usa el link enviado y se loga </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Usuario B  accede al mismo link ya que la sesión se recrea en su navegador </li></ul></ul></ul></ul></ul>
  43. 43. Spring Security (40) <ul><li>Configuración (13) </li></ul><ul><ul><li>Control de la Sesión (4) </li></ul></ul><ul><ul><ul><li>Para prevenir esto Spring Security crea una nueva sesión cuando el usuario se loga (por tanto el SID cambia entre sesiones) </li></ul></ul></ul><ul><ul><ul><ul><li>Se cambia con el atributo “session-fixation-protection” en “<session-management>” </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Valores posibles: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>migrateSession : crea una nueva sesión y copia todos los atributos de sesión a la nueva sesión. Es el valor por defecto: </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>newSession : Crea una nueva sesión sin copiar ningún valor existente </li></ul></ul></ul></ul></ul>
  44. 44. Spring Security (41) <ul><li>Configuración (14) </li></ul><ul><ul><li>Control de la Sesión (y 5) </li></ul></ul>
  45. 45. Spring Security (y 42) <ul><li>Configuración (y 14) </li></ul><ul><ul><li>Seguridad en los métodos </li></ul></ul><ul><ul><ul><li>La forma estándar de hacerlo en mediante configuración a través del namespace y la etiqueta “<global-method-security>” y el uso de anotaciones </li></ul></ul></ul>

×