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 Core + Boot + Data + Security

DISPONIBLE EN MODALIDAD:

Spring sigue siendo uno de los frameworks más usados por los desarrolladores. Aprende todo los que necesitas saber sobre este framework de código abierto JAVA.

Conoce todo lo que Spring nos puede ofrecer a través de Spring, Spring Boot, Spring Security y Spring Data.

iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient
Formación en Spring Core + Boot + Data + Security bonificable para empresas

¿A quién va dirigido?

Este curso va dirigido a programadores y equipos de trabajo que quieran mejorar su desarrollo en aplicaciones para Java con este framework.

Objetivos

  • Aprender a desarrollar aplicaciones usando el framework Spring
  • Crear aplicaciones REST con Spring Boot
  • Aprender a configurar la seguridad de las aplicaciones con Spring Security para configurar procesos de autenticación y autorización

¿Qué vas a aprender?

Spring sigue siendo uno de los frameworks más usados por los desarrolladores. Aprende todo los que necesitas saber sobre este framework de código abierto JAVA. Conoce todo lo que Spring nos puede ofrecer a través de Spring, Spring Boot, Spring Security y Spring Data.

Requisitos

  • Haber trabajado previamente con el lenguaje de programación Java o bien haber realizado aplicaciones con este lenguaje.
  • Contar con Java instalado JDK 11.
  • Contar con una máquina (Windows, Mac o Linux) con acceso a un usuario con permisos de instalación.
  • Contar con el IDE IntelliJ instalado y poder crear proyectos Spring con Maven.
  • Contar con Git y Docker Desktop instalados localmente en su máquina

Temario del curso

tema 1

Introducción a Spring

  • ¿Qué es Spring?
  • Aspectos básicos
  • Instalación
  • Puesta en marcha
  • Aplicación en Spring: Hola Mundo!
  • Módulos en Spring
tema 2

Inyección de dependencias

  • Introducción a la inversión de control
  • ¿Qué son los beans?
  • Configurando Beans
  • Bean Scopes
  • Scope XML based
  • Scope Non-XML based
  • Ciclo de vida de los beans
  • Trabajando con beans
tema 3

Programación orientada a Aspectos

  • Fundamentos de la POA
  • ¿Qué son los aspectos?
  • Trabajando con aspectos
  • Expresiones Pointcut
  • Advice
  • Introducción a las anotaciones
tema 4

Spring JDBC

  • JDBCTemplate
  • DataSource
  • SqlQuery
  • SqlUpdate
tema 5

Transacciones

  • ACID
  • Transaction Manager
  • Transacciones JDBC
  • Transacciones Hibernate
  • Transacciones JPA
  • Programando Transacciones en Spring
  • Niveles de Aislamiento
  • Modos de programación
  • Rollbacks
  • Transacciones de sólo lectura
tema 6

Spring Beans

  • Introducción al IoC
  • ¿Qué son los beans?
  • Configurando Beans
  • Bean Scopes
  • Scope XML based
  • Scope Non-XML based
  • Ciclo de vida de los beans
  • Trabajando con beans
tema 7

Introducción a Spring Boot

  • ¿Qué es Spring Boot?
  • Instalación
  • Creando un proyecto
  • Spring Boot Starters
  • Inyección de dependencias
tema 8

REST con Spring Boot

  • ¿Qué son los microservicios?
  • ¿Qué son las API Rest?
  • Arquitectura REST
  • CRUD en Spring Boot
  • API Rest con Swagger
  • Testing
tema 9

Mantenimiento en Spring

  • ¿Qué es el mantenimiento?
  • Documentación en Spring
  • ¿Cómo aplicar refactoring?
  • Buenas prácticas de refactoring
  • Testing en el mantenimiento
tema 10

Empezando con Spring Data JPA

  • El ecosistema de persistencia de Java
  • Vista de pajaro sobre Spring data JPS
  • Setup de Spring Data JPA
tema 11

Repositorios

  • Introducción a los repositorios
  • Derived Query Methods
  • Namespaces
  • Métodos de consulta
  • Métodos de consulta derivados
  • Métodos de guardado
  • Métodos de eliminación
  • Poniendo en práctica estos métodos
tema 12

Peticiones personalizadas con JPQL y SQL nativo

  • Usando @Query
  • @Query con parámetros
  • @Modifying
  • Devolviendo un objeto personalizado de una Query
tema 13

Paginación y ordenación

  • Ordenación
  • Ordenando con @Query
  • Paginación
  • Controles de Paginación
tema 14

Métodos alternativos de consulta y características avanzadas

  • Creando consultas con especificaciones
  • Query DLS
  • Métodos personalizados en repositórios
  • Transacciones
  • Eventos de dominio
  • Gráficos de entidad
tema 15

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 básica basada en roles
  • Autorización basada en expresiones
  • Mostrando la información de autenticación condicionalmente
  • Personalización de comportamiento después de login
tema 16

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 17

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 18

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 19

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 20

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 21

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 22

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 23

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 24

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 25

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
  • HeadersWriter
  • DelegatingRequestMatcherHeaderWriter
tema 26

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 27

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 Core + Boot + Data + 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