Antes de empezar

1

Pasos para aprender Java Spring

2

¿Java sigue siendo gratuito?

3

Instalación de ambiente de desarrollo: Linux Ubuntu

4

Instalación de ambiente de desarrollo: macOS

5

Instalación de ambiente de desarrollo: Windows

Introducción a Spring boot

6

¿Qué es y qué usaremos de Spring?

7

Conocer qué es una aplicación autocontenida

8

Crear nuestra aplicación con Spring Initializr

9

Hola mundo con Spring Boot

10

Configurar Spring Boot

11

Crear la estructura del proyecto

Spring Data

12

¿Qué es JPA?

13

Conocer qué es Spring Data

14

Conectar la base de datos a nuestra aplicación

15

Mapear las tablas como clases

16

Crear Entity cuando su clave primaria es compuesta

17

Mapear relaciones entre clases

18

Usar la interface CrudRepository

19

Query Methods

Construyendo nuestra API

20

Implementar la anotación @Repository

21

¿Qué es el patrón Data Mapper y qué resuelve?

22

Orientar nuestra API al dominio con MapStruct

23

Orientar nuestro repositorio a términos del dominio

24

Inyección de dependencias

25

Implementar la anotación @Service

26

Implementar la anotación @RestController

27

Exponer nuestra API

Mejorando nuestra API

28

Controlar las respuestas HTTP

29

Crear el dominio de compras

30

Mapear el dominio de compras

31

Crear el repositorio de compras

32

Probando nuestros servicios de compras

33

Documentar nuestra API con Swagger

Spring Security

34

Configurar la seguridad de nuestra API con Spring Security

35

Generar un JWT

36

Autenticación con JWT

37

Autorización con JWT

Despliegue de nuestra aplicación

38

Desplegar nuestra API desde la ventana de comandos

39

Desplegar nuestra base de datos con Heroku

40

Desplegar nuestra API con Heroku

41

Conclusiones y despedida del curso

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Java Spring

Curso de Java Spring

Alejandro Ramírez

Alejandro Ramírez

Autenticación con JWT

36/41
Recursos

Aportes 8

Preguntas 10

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Para permitir la visualización de Swagger públicamente sin tener que estar autenticados en la aplicación pueden agregar el siguiente método en la clase SecurityConfig:

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/v2/api-docs", "/configuration/ui",
                "/swagger-resources/**", "/configuration/security",
                "/swagger-ui.html", "/webjars/**");
    }

Otra alternativa es agregar estas rutas 👆 al antMatchers("/**/authenticate", …) que escribimos en el método configure(HttpSecurity http) de esta clase que estás viendo.
 
Espero les sea útil! 🚀

si a alguien le aparece este error al hacer la petición en postman :
{
“timestamp”: “2021-03-21T14:36:17.154+00:00”,
“status”: 415,
“error”: “Unsupported Media Type”,
“message”: “”,
“path”: “/platzi-market/api/auth/authenticate”
}

deben agregar en la parte de headers, el header content-type con el valor de application/json

Me sale metodo not allowed

{
“timestamp”: “2021-01-25T23:08:50.366+00:00”,
“status”: 405,
“error”: “Method Not Allowed”,
“message”: “”,
“path”: “/platzi-market/api/auth/authenticate”
}

me sale el sigueinte error, alguien podria ayudarme

Field authenticationManager in “nombre de mi controlador” required a bean of type ‘org.springframework.security.authentication.AuthenticationManager’ that could not be found.

Action:

Consider defining a bean of type ‘org.springframework.security.authentication.AuthenticationManager’ in your configuration.

Si a alguien le llegase a salir este error “java.lang.IllegalArgumentException: secret key byte array cannot be null or empty.\r\n\tat io.jsonwebtoken.lang.Assert.notEmpty(Assert.java:204)\r\n\tat io.jsonwebtoken.impl…”

La solución es: En la clase “JWTUtil”, cambiar el valor de la constante “KEY”, por un valor que tengo al menos 8 carácteres. El error anterior ocurre por introducrir valores muy pequeños como clave.

no me quedo muy claro para que sirve esta linea de codigo

http:.csrf().disable()

Quiere decir que va a rechazar peticiones de algún otro dominio?

Me salia el siguiente error:

Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter

Lo que hice fue incluir

implementation 'javax.xml.bind:jaxb-api:2.3.1'

en build.gradle

pero y los roles? no esta explicando nada del flujo de autenticacion, ni como manipular el contenido del token… simplemente esta picando codigo sin explicar para qué…, y esta llendo en cada peticion contra la base de datos (supuestamente, pq tiene las credenciales quemadas en texto plano), cuando en teoria el jwt sirven exactamente para evitar eso… y para mas inri en lugar de hacer la autenticacion basica desde los headers, la hace desde el body… eso es una mala práctica. He salido mas perdido que cuando empecé el curso…