Envíanos tu consulta
Términos y condiciones *
*Si no puedes asistir en directo de facilitaremos un enlace para verlo en diferido
logoImagina
iconoCurso

Curso completo de Spring Security

DISPONIBLE EN MODALIDAD:

Aprende a controlar la seguridad de tus aplicaciones con Spring Security, la librería de Spring que te aportará todas las funcionalidades que necesitas para mejorar la seguridad y robustez de tus aplicaciones.

Personaliza y configura un rígido control de acceso controlando las invocaciones a la lógica de negocios o limita el acceso de peticiones HTTP entre otras funcionalidades, adquiriendo todos los conocimientos necesarios para ello con este curso de Spring Security.

iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient
Formación en Spring Security bonificable para empresas

¿A quién va dirigido?

Esta formación está enfocada a aquellos desarrolladores con experiencia en Spring que quieran aprender a mejorar la seguridad y robustez de sus aplicaciones.

Objetivos

  • Aprender a configurar la seguridad de las aplicaciones con Spring Security para configurar procesos de autenticación y autorización
  • Aprende a gestionar sesiones
  • Descubre como gestionar el control de acceso de tus aplicaciones
  • Configurar las diversas opciones que ofrece Spring Security

¿Qué vas a aprender?

Aprende a controlar la seguridad de tus aplicaciones con Spring Security, la librería de Spring que te aportará todas las funcionalidades que necesitas para mejorar la seguridad y robustez de tus aplicaciones. Personaliza y configura un rígido control de acceso controlando las invocaciones a la lógica de negocios o limita el acceso de peticiones HTTP entre otras funcionalidades, adquiriendo todos los conocimientos necesarios para ello con este curso de Spring Security.

Requisitos

  • Tener experiencia en el desarrollo de aplicaciones Spring
  • Disponer de un usuario con permisos de instalación
  • Tener instalado previamente: IntelliJ y poder crear proyectos con Spring Boot

Temario del curso

tema 1

Aplicaciones no seguras

  • Auditoria de seguridad
  • Tecnología de la aplicación
  • Autenticación y Autorización
  • Credenciales de seguridad de la base de datos
  • Conociendo la información sensible que debe protegerse
  • Protección en el nivel de transporte
  • Utilizando Spring Security para encargarnos de la seguridad
  • ¿Por qué Spring Security?
tema 2

Empezando con Spring Security

  • Introducción a Spring Security
  • Actualizando dependencias
  • Usando Spring y Spring Security
  • Implementado el archivo de configuración XML de Spring Security
  • Actualizando el archivo web.xml
  • La clase ContextLoaderListener
  • ContextLoaderListener versus DispatcherServlet
  • El filtro springSecurityFilterChain
  • La clase DelegatingFilterProxy
  • La clase FilterChainProxy
  • Ejecutando una aplicación asegurada
  • Problemas comunes
  • Personalizando el login
  • Configurando el logout
  • Problemas de redirección
  • Autorización basada en expresiones
  • Mostrando la información de autenticación condicionalmente
  • Personalización de comportamiento después de login
tema 3

Autenticación personalizada

  • Arquitectura del calendario JBCP
  • El objeto CalendarUser
  • El objeto Event
  • La interfaz CalendarService
  • La interfaz UserContext
  • La interfaz SpringSecurityUserContext
  • Logeando nuevos usuarios mediante SecurityContextHolder
  • Administración de usuarios en Spring Security
  • Logeando nuevos usuarios a una aplicación
  • Actualizando SignupController
  • Introducción a UserDetailsService Personalizado
  • La clase CalendarUserDetailsService
  • Configurando UserDetailsService
  • Eliminando referencias a UserDetailsManager
  • El objeto CalendarUserDetails
  • Simplificaciones de SpringSecurityUserContext
  • Mostrando atributos de usuario personalizados
  • Introducción a AuthenticationProvider personalizado
  • CalendarUserAuthenticationProvider
  • Configurando CalendarUserAuthenticationProvider
  • Autenticando con diferentes parámetros
  • La clase DomainUsernamePasswordAuthenticationToken
  • Actualizando CalendarUserAuthenticationProvider
  • Añadiendo un dominio a la página de login
  • La clase DomainUsernamePasswordAuthenticationFilter
  • Actualizando nuestra configuración
  • Debate: ¿Qué método de autenticación usar?
tema 4

Autenticación basada en JDBC

  • Dependencias necesarias
  • Usando la base de datos H2
  • Scripts JDBC proporcionados
  • Configurando la base de datos embebida H2
  • Configurando una implementación JDBC UserDetailsManager
  • El user schema predefinido de Spring Security
  • Definiendo usuarios
  • Definiendo las autoridades de los usuarios
  • La interfaz UserDetailsManager
  • Control de acceso basado en grupos
  • Configurando el Control de acceso basado en grupos
  • Configurando JdbcUserDetailsManager para usar grupos
  • Usando los scripts GBAC JDBC
  • El esquema basado en grupos
  • Mapeado de autoridades de grupos
  • Soporte para un esquema personalizado
  • determinando las consultas JDBC SQL correctas
  • actualizando los scripts SQL que se cargan
  • El SQL de la autoridad CalendarUser
  • Insertando autoridades personalizadas
  • Configurando JdbcUserDetailsManager para usar consultas SQL personalizadas
  • Configurando contraseñas seguras
  • El método PasswordEncoder
  • Configurando password encoding
  • Configurando el método PasswordEncoder
  • Notificando a Spring Security el método PasswordEncoder
  • Hash con los paswords guardados
  • Hash con los passwords de nuevos usuarios
  • Mejorando a Spring Security
  • Actualizando la configuración de Spring Security
  • Migrando las contraseñas actuales
  • ActualizandoDefaultCalendarUserService
  • Probando las contraseñas mejoradas
tema 5

Autenticación con Spring Data JPA

  • Actualizando dependencias
  • Actualizando el calendario JBCP para usar Spring Data JPA
  • Reconfigurando la base de datos
  • Inicializando la base de datos
  • Refactorización de SQL a ORM
  • Mapeo de objetos usando JP
  • Los repositorios de Spring Data
  • Data Access Objects
  • Servicios de aplicación
  • El objeto UserDetailsService
tema 6

Autenticación con LDAP

  • Introducción a LDAP
  • Nombres comunes de atributos LDAP
  • Actualización de dependencias
  • Configuración de un servidor LDAP
  • Habilitando la interfaz LDAP AutehnticationProviderNext
  • ¿Cómo funciona la autenticación LDAP de Spring?
  • Credenciales de usuario para la autenticación
  • Definiendo roles y configuraciones avanzadas
  • Cifrado y almacenamiento de contraseñas
  • Configurando USerDetailsContextMapper
  • Visualizando detalles adicionales de usuario
  • Usando LDAP como UserDetailService
  • Configurando LdapUserDetailsService
  • Actualizando AccountController para usar LdapUserDetailsService
  • Integrando Spring Security para hacer uso de un servidor LDAP externo
  • Configuración explícita del bean de LDAP
  • Integración con Directorio Activo de Microsoft
tema 7

Servicios de recordatorio de usuarios

  • Qué es ¿remember-me?
  • Dependencies de remember-me
  • Remember-me basado en tokens
  • Configurando de remember-me basado en tokens
  • ¿Cómo funciona remeember-me basado en tokens
  • Introducción a MD5
  • La firma de remember-me
  • Directivas de configuración para tokens de remember-me
  • ¿Cómo de seguro es hacer uso de remember-me?
  • Reglas de autorización para remember-me
  • Usando remember-me de manera persistente
  • Añadiendo SQL para crear un esquema
  • Inicializando datos con el esquema de remember-me
  • Configurando remember-me de forma persistente
  • El funcionamiento de remember-me persistente
  • PersistentTokenRepository basado en JPA
  • Personalización de RememberMeServices
  • Limpiando sesiones de remember-me
  • La arquitectura de remember-me
  • Remember-me and the user life cycle
  • El cliclo de vida del usuario y remember-me
  • Restricción por dirección IP
  • Trabajando con cookies y parámetros personalizados HTTP
tema 8

Control de acceso

  • Integración del lenguaje de expresión Spring (SpEL)
  • WebSecurityExpressionRoot
  • Usando el atributo de solicitud
  • Usando el método hasIpAddress
  • La clase MethodSecurityExpressionRoot
  • Autorización a nivel de página
  • Representación condicional con la biblioteca de etiquetas Thymeleaf Spring Security
  • Representación condicional basada en reglas de acceso a URL
  • Representación condicional usando SpEL
  • Usar la lógica del controlador para renderizar contenido condicionalmente
  • WebInvocationPrivilegeEvaluator
  • ¿Cuál es la mejor forma de configurar la autorización en la página?
  • Seguridad a nivel de método
  • ¿Por qué aseguramos en capas?
  • Asegurar el nivel de negocio
  • Agregar la anotación del método @PreAuthorize
  • Instruir a Spring Security para que use anotaciones de métodos
  • Validación de la seguridad del método
  • Proxies basados en interfaz
  • Reglas estandarizadas que cumplen con JSR-250
  • Seguridad del método usando la anotación @Secured de Spring
  • Reglas de seguridad de métodos que incorporan parámetros de métodos
  • Reglas de seguridad de métodos que incorporan valores devueltos
  • Asegurar los datos del método mediante el filtrado basado en roles
  • Prefiltrado de colecciones con @PreFilter
  • Comparativa de tipos de autorización de métodos
  • Recomendaciones para la seguridad basada en anotaciones
tema 9

Control de Acceso (ACL)

  • El módulo de ACL
  • Listas de control de acceso en Spring Security
  • Configuración básica del soporte de Spring Security ACL
  • Dependencias
  • Definición de un escenario objetivo simple
  • Agregar tablas de ACL a la base de datos H2
  • Configuración de SecurityExpressionHandler
  • El objeto AclPermissionCacheOptimizer
  • Optimización de la caché de AclPermission
  • El objeto JdbcMutableAclService
  • La clase BasicLookupStrategy
  • Consultando con el mínimo común denominador
  • EhCacheBasedAclCache
  • La clase ConsoleAuditLogger
  • La interfaz AclAuthorizationStrategyImpl
  • Crear una entrada de ACL simple
  • ¿Cómo funcionan los permisos?
  • La declaración de permisos de ACL personalizada
  • Habilitación de la evaluación de permisos de ACL
  • ACL mutables y autorización
  • Agregar ACL a eventos recién creados
  • Recomendaciones para una implementación de ACL
  • Debate: Modelado de escalabilidad y rendimiento de ACL
tema 10

Manejo de Sesiones

  • Gestión de sesiones
  • Configurar la protección de fijación de sesiones
  • Comprender los ataques de fijación de sesiones
  • Prevención de ataques de fijación de sesiones con Spring Security
  • Simular un ataque de fijación de sesión
  • Comparación de las opciones de protección de fijación de sesión
  • Restringir el número de sesiones simultáneas por usuario
  • Configurar el control de sesiones concurrentes
  • Comprender el control de sesiones concurrentes
  • Prueba del control de sesión concurrente
  • Configuración de la redirección de sesión caducada
  • Problemas comunes con el control de simultaneidad
  • Evitar la autenticación en lugar de forzar el cierre de sesión
  • Ventajas fundamentales del control de sesiones concurrentes
  • Visualización de sesiones activas para un usuario
  • ¿Cómo usa Spring Security el método HttpSession?
  • HttpSessionSecurityContextRepository
  • Depurar con DebugFilter
tema 11

Autorización Personalizada

  • Autorizando las solicitudes
  • Configuración de agregación de decisiones de acceso
  • Administrador de decisiones de acceso basado en unanimidad
  • Autorización de solicitud basada en expresiones
  • Personalización de la autorización de solicitud
  • Definir dinámicamente el control de acceso a las URL
  • Configuración de RequestConfigMappingService
  • Implementación de SecurityMetadataSource personalizada
  • Registro de un SecurityMetadataSource personalizado
  • Creando una expresión personalizada
  • Configurar una SecurityExpressionRoot personalizada
  • Configuración de un SecurityExpressionHandler personalizado
  • Configuración y uso de CustomWebSecurityExpressionHandler
  • Alternativa a un CustomWebSecurityExpressionHandler
  • ¿Cómo funciona?
  • Crear un PermissionEvaluator personalizado
  • CalendarPermissionEvaluator
  • Configuración de CalendarPermissionEvaluator
  • Asegurando nuestro CalendarService
  • Ventajas principales del uso de un PermissionEvaluator personalizado
tema 12

Profundizando en Spring Security

  • Vulnerabilidades de seguridad
  • Secuencias de comandos entre sitios
  • Falsificación de solicitudes entre sitios
  • Tokens de sincronización
  • Token de sincronización de soporte
  • ¿Cuándo utilizar la protección CSRF?
  • Protección CSRF y JSON
  • CSRF y aplicaciones web sin estado
  • Usando la protección CSRF en Spring Security
  • Usando verbos HTTP adecuados
  • Configurando la protección CSRF
  • Soporte por defecto CSRF
  • Token CSRF en los formularios de presentación
  • Token CSRF usando el tag library de Spring Security JSP
  • Default CSRF token support
  • Peticiones Ajax y JSON
  • El tag csrfMetaTags
  • Advertencias acerca de CSRF que se deben tener en cuenta (Timeouts, Login y Logout)
  • Aplicando seguridad en cabeceras de respuestas HTTP
  • Introducción a las Cabeceras de seguridad por defecto
  • Cache-Control
  • Opciones de Content-Type
  • HTTP Strict Transport Security
  • X-Frame-Options
  • Introducción a las cabeceras personalizadas
  • Cabeceras estáticas
  • DelegatingRequestMatcherHeaderWriter
tema 13

AUTENTICACIÓN CON OAUTH2

  • Introducción a OAuth 2
  • OAuth en la actualidad y expectativas futuras
  • Registro para una aplicación OAuth 2
  • Habilitación de la autenticación OAuth con Spring Security
  • Dependencias
  • Configuración de la compatibilidad con OAuth 2 en Spring Security
  • UserConnectionRepository local
  • Creación de entradas de la base de datos local para los detalles del proveedor
  • La interfaz personalizada UserConnectionRepository
  • El flujo de ConnectionSignup
  • Ejecución del flujo de trabajo de conexión del proveedor de OAuth 2
  • Agregar usuarios de OAuth 2
  • Flujo de inicio de sesión del controlador OAuth 2
  • Autenticación automática de usuarios
  • Proveedores adicionales de OAuth 2
  • El problema de registro de usuarios de OAuth 2
  • Registro de proveedores de OAuth 2 no estándar
  • Debate: ¿Es seguro OAuth 2?
tema 14

Seguridad de microservicios con OAuth 2 y JSON Web Tokens

  • Introducción a los microservicios
  • Monolitos
  • Microservicios
  • Arquitecturas orientadas a servicio
  • Introducción a la seguridad de los microservicios
  • Comunicación de servicio
  • Acoplamiento ajustado
  • Complejidad técnica
  • Introducción a OAuth 2
  • Tokens de acceso
  • Token de actualización
  • Introducción a los tipos de acceso
  • Código de autorización
  • Implicito
  • Credenciales de contraseña
  • Credenciales del cliente
  • Introducción a los JWT (JSON Web Token)
  • Estructura de un token
  • Codificación JWT
  • Cabecera JWT
  • Carga JWT
  • Firma JWT
  • Soporte OAuth 2 en Spring Security
  • Recurso propio
  • Recurso del servidor
  • Autorización del servidor
  • Par de claves de token de acceso RSA JWT
  • Propiedades de configuración de recurso OAuth 2
  • Propiedades de configuración del cliente OAuth 2
  • Convertidor de token de acceso JWT
  • UserDetailsService
  • Ejecutando una aplicación de servidor OAuth 2
  • Peticiones del servidor
  • Peticiones de token
  • Microservicios del cliente
  • Configurando el cliente OAuth 2

Curso de Spring Security bonificado para Empresas a través de FUNDAE

Somos entidad organizadora de FUNDAE, todas nuestras formaciones se pueden bonificar hasta el 100%, sujeto a vuestro crédito disponible y a cumplir con todos los requisitos de realización establecidos por la Fundación Estatal para el Empleo.

 

Si desconoces el funcionamiento de las bonificaciones, ofrecemos el servicio de gestión en FUNDAE, consúltanos cualquier duda que te surja.

Descargar Guía FUNDAE
imagenFundae
iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient