te ame como explicas, estab ahaciendo un curso en udemy de java spring la ultima seccion del curso era implementar spring security pero el profesor en este caso dejo bastante que desear ya que ni el demostraba saber sobre la configuracion, gracias por explicar tan bien y por existir jajajjaja
La explicación es perfecta, entiendo todo fácilmente... Te felicito, pero más felicito al que logre dar con tus videos porque habrá encontrado un gran tesoro. Muchas gracias por compartir tus conocimientos.
Mis felicitaciones, incluso aprendí de robote cosas que ignoraba se podían hacer. Muy bien explicado y mejor aún por compartir el código. Like bien ganado.
Genial tu video Ivana. Estaría re bueno ver el tema de agregar esto a un microservicio gateway para redireccionar las solicitudes, así solo está en el gateway y no en cada microservicio de negocio. Felicitaciones de nuevo!
La explicación magistral, una sugerencia, no sé como se haga, seria segmentar el video por partes de tal minuto a tal minuto, para el que necesite sólo una parte en concreto jeje.
Muchisimas gracias ! De verdad que ha sido de gran ayuda . En google nada mas que te salen puras guias malas y nadie explica nada al detalle y la documentación oficial no es muy clara. De verdad , muchas gracias❤
Muchas gracias de verdad esta muy bueno como se genera un token, muy bien explicado de forma teórica y practica, sencillo de entender, eres toda una capa. Seria bueno que también hagas una parte en el frontend con react o angular. Eh visto que tiene pocos videos, sigue subiendo más si es que tienes tiempo, porque la verdad que si aprendi mucho.
Excelente video, la explicación muy clara, en el tutorial se desactivaron el tema de sesiones, te agradeceríamos si puedes crear un video explicando ese tema y utilizándolo por ejemplo que un usuario no pueda hacer login más de una vez en diferentes partes o desde otro navegador, para temas de seguridad. muchas gracias.
Felicitaciones! Excelente contenido para la comunidad proporcionando información valiosa a detalle. Me has permitido ampliar mis conocimientos. Deseo que tu canal crezca. Manito arriba para mas videos de calidad y excelencia. Saludos
Excelente video muy muy bien explicado! Deje unos comentarios en el repo por que con las nuevas actualización de las librerías se deprecaron algunos métodos!
Buenisimo esta clase ivana muchisimas gracias, ahora si esto lo tengo que hacer solo me mato jsajsaja, pero ahora para adelante y a aprender cada clase y metodo 💪💪
También me interesa ver el tema de Roles en rutas pues me he encontrado cambios en la 3.1.2 de spring boot que no me esta filtrando/funcionando por roles
Excelente video! Me ayudó un montón para entender de manera simple y corta los temas. Sería genial para próximos videos un ejemplo de como integrar con un login dado por el front. Saludos!!
Wuauu! Ojala hubiese tenido este video en 2022 cuando estaba haciendo mi proyecto final, cómo has aprendido tanto de java + sb? Me sorprende ver tanto conocimiento, ojala un dia pueda tener todos esos conocimientos jeje gracias por el tuto
Hola @AbigorLuna, muy buena pregunta!! Dado que la dependencia del servicio o repositorio es obligatoria, la inyección por medio del constructor utilizando la anotación @RequiredArgsConstructor de Lombok y private final es la más recomendada porque: - las dependencias se vuelven inmutables después de la creación del objeto, lo que hace un código de más calidad ya que aumenta la seguridad de los subprocesos y reduce posibles efectos secundarios, - facilita las pruebas unitarias - declara explícitamente las dependencias requeridas. Es importante agregar que, Spring Boot recomienda la inyección por constructor por sobre las inyecciones de dependencias por campos (a menos que éstas sean muchas). Espero haber respondido a tu pregunta. Abrazo!
Excelente video! Espero ansioso más videos con esta calidad. Mi única duda es, si comento el AuthenticationProvider tanto como Bean y del securityFilterChain, JwtAuthenticationFilter usa su propio userDetailsService y AuthService su propio PasswordEncoder. Tanto registro, login y acceso al endpoint protegido funcionan igual. Spring configura un AuthenticationProvider por defecto al no haber asignado el DaoAuthenticationProvider? Entiendo que, algun provider tiene que ejecutar authenticate() para realizar el login y obtener el token.
Hola Matías, si Spring Security tiene una configuración por defecto, pero podemos adaptarla según nuestras necesidades o al mecanismo que necesitemos. Saludos,
@@robertodev2002 No te preocupes, ya lo he solucionado, tenia mal puesto algunos paquetes. Ahora el problema es que me sale este error al iniciar sesión: io.jsonwebtoken.ExpiredJwtException: JWT expired Algunas veces funciona y otras, he intentado ponerle más tiempo a la expiración del token, pero no le conseguido, tengo que intentar que cuando inicie sesión, elimine el token antiguo o algo así del estilo
He aprendido mucho con tus videos muchas gracias, tienes una buena enseñanza entre teoria y practica. Me gustaría que si pudieras hacer un video similar a Angular con React y el login seria de mucha ayuda, Gracias.
Consulta cuando rompo el token como tu lo haces en el minuto 1:05:53 no me da la respuesta 403 me da un error 500 que dice: JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted. Ese problema esta en el JwtService o en el archivo SecurityConfig? Saludos.
Puede ser que esto no funcione en vercion de spring-boot 3.2.3, Porque segui todos los pasos menos eso y literalmente ya en el minuto 11.04, lo de dejar publico los endpoint auht/** no me funciona o no se que pasa ya que todos los endpoint de aho me tiran 401Unauthorized, y si pego la direcion en un navegador esto sin saber pero me carga un login que jamas cree en localhost:8080/login me redireciona ahi
No enconcotre otro video en ingles que usa una vercion mas nueva y sercana a la 3.2.3 y ese agrego un monton de cosas mas y ahi me andubo pero no completamente ya que enves de devolverme los errores 403 me tiraban 401 @@_DaarkClown
Hola @damianveragonzalez3560 y @_DaarkClown, actualicé ese mismo proyecto a la versión 3.2.4 de spring boot y sigue funcionando sin problemas. Habría que ver el proyecto que están trabajando... Intenten revisar que está pasando mediante el log. Para ello, agreguen la siguiente línea en el application.properties: logging.level.org.springframework.security=TRACE
Me envía nulo a la base de datos. :c Además, al implementar UserDetails en la clase User me genera únicamente un método llamado "getUsername", agregué los métodos del video manualmente y el IDE me dice que son redundantes, da lo mismo si los dejo o si los comento.
no soy de comentar pero me gustan tus videos, son buenos y explicas las cosas de manera calmada y clara. si quisiera ver para autenticar roles y de acuerdo al rol me lleve algún lugar, un dashboard o algo asi. Gracias
Una pregunta me sale esto pero tengo el codigo igual,que puede ser? Parameter 1 of constructor in com.example.appWeb.config.SecurityConfig required a bean of type 'org.springframework.security.authentication.AuthenticationProvider' that could not be found.
Felicidades por el video, Profe!. Pero tengo una consulta, en el minuto 16:46 explica que el filtro del jwt valida si el token es nulo y si lo es, continua con el ciclo de authenticación, no debería terminar el ciclo de vida y tirar un error?.
No tengo conocimiento previo de Spring Security, pero me imagino que los filtros en si no darán paso al menos que uno setee la autenticación en el contexto de seguridad, que es lo que hace en caso de haber un token válido
Hola muy buen video me esta sirviendo de gran ayuda pero en la ruta del login ingresa al controlador pero no al servicio porque en postman me sale el 403 le he dado mil vueltas a mi codigo siguiendo el tuyo y no me sale hay alguna forma de contactarte para que me ayudes ?? Gracias
Hola Ivana. Gracias por el contenido. Quedé varado en la clase AuthService. En el register no me reconoce el builder y no entiendo el motivo. Cuando digito User user = User.builder() , no me reconoce el método.
Yo tambien ando en esas no me reconoce el .builder() en esa misma clase ademas en la clase User cuando se generan los metodos de la interface userdetails se me generan dos metodos mas el de getUsername y el getPassword y pues en esas ando
Hola! Dos puntos para revisar: 1- Revisen tener la anotacion @Builder en la clase User. 2- Verifiquen que la imporación a la clase User sea la que usteden crearon y no la de Spring Security. Abrazo! Ivana
La parte del Registro estaba teniendo un errorcuando intentaba crear el nuevo registro de que no encontraba la tabla "user_seq" asi es que use la propiedad en el application.properties: spring.jpa.properties.hibernate.hbm2ddl.auto=create para que genere las tablas necesarias automaticamente cuando corres el proyecto. Espero les sirva. Saludos y Excelente material para los que estamos un poco oxidados en SpringSecurity. Gracias.
Me alegro que te haya sido de utilidad el vídeo!! Ahora estoy trabajando en otro vídeo donde muestro como conectar una aplicación de angular con la api rest desarrollada en este video. Voy agendando sus preferencias para próximos videos. Abrazo!
@@irojascorsico sería increíble es justo lo que necesito para mi proyecto! Ya tengo toda la parte de angular, el front con angular y diseño se me da bastante bien pero estaba pillado en el back con la actualización de security, ya solo necesito filtrar por roles pero creo que lo estoy consiguiendo gracias a ti, muchas gracias espero con impaciencia el próximo video :D
Hola!! Cada video puedes verlo independientemente de los anteriores según el nivel de conocimientos que tengas . Hay contenidos que fueron desarrollados previamente por eso la sugerencia (si no se hace muy extenso el video). Si estás comenzando, te sugiro ver las listas de reproducción que están en orden de prioridad. Saludos, Ivana
Ivana cómo saben ustedes qué clases, interfaces y métodos deben usar dónde está el manual que indique qué hace cada clase, por qué se usa, para qué se usa de donde sacan ese criterio para sabe qué clase es conveniente usar, eso lo da la experiencia o en donde puedo ver la arquitectura y la funcionalidad de cada clase de spring security, de jwt, de hibernate etc?
Hola Henry, es muy buena pregunta!! Lamentablemente no hay un manual que explique esto al detalle dado que tenemos muchísimas formas de definir la arquitectura. Esta que les presento en el video es una forma de implementación. ¿Qué criterio me permite tomar decisiones sobre cuál es conveniente o no? Esto depende del dominio del problema, la tecnología, los conocimientos en relación a patrones de diseño, la experiencia, etc.
El libro Spring Security in Action, Second Edition Laurentiu Spilca, explica todo a detalle, como funciona Spring Security, la arquitectura, que es lo que hace cada uno de los métodos que mencionas, por ejemplo la clase User recomienda el libro recomienda usar dos clases en lugar de una, para no mezclar responsabilidades. Si entiendes esas bases, el video lo entiendes muy bien como un resumen.
Buenas, a partir de esta aplicacion estoy intentando hacer una ruta solo para role ADMIN, he creado la ruta y es accesible desde postman, ademas he añadido el role al token ya que no figuraba, y estoy intentando con .requestMatchers("/api/v1/demo2").hasRole("ADMIN") justo antes del .requestMatchers("/auth/**").permitAll() pero me devuelve un 403, alguna idea?
@@irojascorsico buenas, ya encontré la solución, lo dejo por aquí por si a alguien le sirve: El problema es que cuando hace la comprobación lo hace como "ROLE_ADMIN" por lo que podemos cambiar la clase Role con ROLE_ADMIN y ROLE_USER (y todo lo que está relacionado para que compile bien). La otra solución es usar el filtro de otra forma: .requestMatchers("/api/v1/demo2").hasAuthority(Role.ADMIN.name()) Muchas gracias por responder, estaré atento a su canal, éste video y el siguiente son muy buenos.
Hola tengo una consulta, en vez de utilizar el string builder para crear el objeto de tipo User en el servicio, puedo crear un paquete mapping y una clase UserMapping, donde pueda mapear esos objetos? muy bueno tu contenido por cierto
Hola, muy buen video, tengo una pregunta. ¿Con qué finalidad se crea un token al registrar un usuario ? ¿No debería ser solamente cuando inicial sesión?
Eso lo entiendo. Lo que digo es, un token cuando se registra el usuario, con qué fin? El token debería generarse cuando uno se loguea. O bueno, no sé jaja, esa es mi inquietud .
Hola @giordypavelhenaomontes9924, en el video estoy devolviendo el token al realizar el registro a fines del ejemplo nada más. Coincido contigo que no es una práctica recomendada dado que es preferible devolver el token luego de que el usuario inició sesión. Abrazo!
Excelente video, claro consiso y fácil, quisiera saber cuán conplicado sería implementar el refresh token, espero puedas hacer una actualización sobre eso
Hola, quisiera saber cual es tu configuracion/extensiones que tienes en vs code para porgramar con spring, ya que hay algunas cosas que no se me importan correctamente, tengo que que a intellij IDEA para hacerlo, esperia y me puedas ayudar, gracias
Hola! Te comento, las extensiones que tengo isntaladas en vscode son las siguientes: Spring Boot Extension Pack, Spring Boot Tools, Spring Boot Dashboard, Project Manager for Java y Maven for Java.
Buenas, en el metodo de securityFilterChain de la clase de SecurityConfig quise poner ".antMatchers("/admin/**").hasRole("ADMIN")" para poder conseder permisos de administrador justo debajo del ".antMatchers("/auth/**").permitAll()" y no funciona
Hola quería hacer una consulta si me pueden ayudar en el JwtAuthenticationFilter minuto 23 me marca missing no null annotation para HttpServletRequest HttpServletResponse y FilterChain y el IDE me dice que haga un @SupressWarning saludos
Profe que conviene hacer cuando un proyecto tiene otra versión y quiero cambiarla? Y después si tengo problemas para correr la aplicación Hay guías para verificar las conexiones? Muchas gracias por responder Saludos
O sea que cuando el usuriario se registra tambien se genera el token? eso no deberia ser para autenticarse en el login nada mas y para cada solicitud posterior?
@@irojascorsico Muchas gracias Ivana por tomarte la molestia de respponderme, la verdad admirable todo lo que sabes, hay que ser crack para hacer lo qu evos haces!
@@theedwardgd7928 Si, claro. Cuando se registra podemos darle acceso permitiendo la autenticación automática. Dependerá del problema. Sin embargo, en mi opinión lo ideal es: si el registro fue exitoso redirigirlo al inicio de sesión para que se autentique. Abrazo!
Excelente video todo fue muy claro, una duda, estoy haciendo un proyecto en el cual habran varias entidades aproximadamente como 10, cómo me recomiendas organizar el proyecto con una paquete por entidad (como en el video) o organizarlo con las paquete (Modelos, Controladores, Repositorios)?
Yo siempre recomiendo paquetes por entidad dado que te podrás concentrar en eld esarrollo individual sin la encesidad de tener mmuchos paquetes abiertos.
te ame como explicas, estab ahaciendo un curso en udemy de java spring la ultima seccion del curso era implementar spring security pero el profesor en este caso dejo bastante que desear ya que ni el demostraba saber sobre la configuracion, gracias por explicar tan bien y por existir jajajjaja
Hay muchos conceptos que no entendía en muchos tutoriales, tiran código sin explicar, Gracias.
Eres realmente buena explicando, mis agradecimientos y felicitaciones por tener tan claras las ideas y una línea clara de lo que intentas transmitir
La explicación es perfecta, entiendo todo fácilmente... Te felicito, pero más felicito al que logre dar con tus videos porque habrá encontrado un gran tesoro. Muchas gracias por compartir tus conocimientos.
Mis felicitaciones, incluso aprendí de robote cosas que ignoraba se podían hacer. Muy bien explicado y mejor aún por compartir el código. Like bien ganado.
Este video me a salvado tenia el error de 401 hace dias es el primer video que me explique paso a paso para que me vuelva a funcionar
Genial!! Abrazo!
A mi me sale :/. Podrias decirme como lo solucionaste?
Llevo 10 min y me encanta como explicas, espero los otros 50 no defrauden! Thanks for sharing
GOD!!!!!
Te ganaste un suscriptor y un lugarcito de mi corazon. Al fin alguien explica sin decir que pone esto aca y alla sin contexto.
Genia.
@elgriego6288 Me alegro mucho!! Abrazo!
porfin un video que explica paso a paso y el porque de las funciones, gracias muy bueno
Super bien explicado, sobretodo siendo un tema tan difícil. Muchísimas gracias!!
Me quedé sin palabras. Uno de los mejores canales que he visitado.
Genial tu video Ivana. Estaría re bueno ver el tema de agregar esto a un microservicio gateway para redireccionar las solicitudes, así solo está en el gateway y no en cada microservicio de negocio. Felicitaciones de nuevo!
IVanna de veras que muchas gracias por compartirnos todo tu conocimiento tan bien explicado. Saludos desde Colombia
Hola, muchas gracias
La explicación magistral, una sugerencia, no sé como se haga, seria segmentar el video por partes de tal minuto a tal minuto, para el que necesite sólo una parte en concreto jeje.
Muchisimas gracias ! De verdad que ha sido de gran ayuda . En google nada mas que te salen puras guias malas y nadie explica nada al detalle y la documentación oficial no es muy clara. De verdad , muchas gracias❤
Gracias por tus comentarios @sebastiane.r.4195 . Justamente por esa razón es que comencé a producir estos videos. Abrazo!
Qué buena explicación, de verdad muchas gracias! Fue el único tutorial que logré entender a full.
Muchas gracias de verdad esta muy bueno como se genera un token, muy bien explicado de forma teórica y practica, sencillo de entender, eres toda una capa. Seria bueno que también hagas una parte en el frontend con react o angular. Eh visto que tiene pocos videos, sigue subiendo más si es que tienes tiempo, porque la verdad que si aprendi mucho.
Excelente video, la explicación muy clara, en el tutorial se desactivaron el tema de sesiones, te agradeceríamos si puedes crear un video explicando ese tema y utilizándolo por ejemplo que un usuario no pueda hacer login más de una vez en diferentes partes o desde otro navegador, para temas de seguridad. muchas gracias.
Ivana me acabas de salvar la vida! Estuve peleando con esto como por dos meses. Mil Gracias!!!
Excelente!
Muchas gracias por el excelente contenido, sobre todo por la claridad en tus explicaciones que ayudan un montón en digerir el contenido. Saludos.
Muchísimas gracias @ghera196!!
Felicitaciones! Excelente contenido para la comunidad proporcionando información valiosa a detalle. Me has permitido ampliar mis conocimientos. Deseo que tu canal crezca. Manito arriba para mas videos de calidad y excelencia. Saludos
¡Excelente video! Estoy implementando una aplicación de microservicios, y este contenido me ha servido muchísimo.
Gracias por el video, muy bien explicado y con bonitos diagramas, de lo mejor que he visto en mucho tiempo
Nuevamente, muchas gracias Ivana!
Saludos desde Chile.
Excelente video muy muy bien explicado! Deje unos comentarios en el repo por que con las nuevas actualización de las librerías se deprecaron algunos métodos!
Muchas gracias Ivana por compartir esto, me salvó la tarea :)
Me alegro mucho!! Abrazo
Hola Ivana, muchas gracias por este contenido. Espero te encuentres bien :)
Igualmente!
Muchas gracias Ivana, me has ayudado mucho con este video. Te agradezco un monton.
Excelente, sin desperdicio!!! Muchas Gracias!
Una genia total la verdad, no cualquiera lo puede hacer con tanta calidad eh!
Buenisimo esta clase ivana muchisimas gracias, ahora si esto lo tengo que hacer solo me mato jsajsaja, pero ahora para adelante y a aprender cada clase y metodo 💪💪
Muchas Gracias por este tutorial, que Buena explicacion y que voz tan hermosa Saludos desde Colombia
Hola, muchas gracias
Hola magnifico video, esperando la continuidad con los roles y protegiendo las rutas, Muchas Gracias
También me interesa ver el tema de Roles en rutas pues me he encontrado cambios en la 3.1.2 de spring boot que no me esta filtrando/funcionando por roles
Excelente video! Me ayudó un montón para entender de manera simple y corta los temas. Sería genial para próximos videos un ejemplo de como integrar con un login dado por el front. Saludos!!
Hola Fabricio, ese será el próximo video. Saludos!
@@irojascorsicoexcelente tutorial, aquí un nuevo suscriptor.
GRACIAS, como me sacaste de una aprieto, muy buen video.
muy bien explicado... Aunque springboot no lo pone facil muchos clases para llegar al resultado
Cierto!
Ivana eres lo máximo, excelente tutorial
Estaba esperando este video!, sigue así por favor, esto es contenido de calidad!
Wuauu! Ojala hubiese tenido este video en 2022 cuando estaba haciendo mi proyecto final, cómo has aprendido tanto de java + sb? Me sorprende ver tanto conocimiento, ojala un dia pueda tener todos esos conocimientos jeje gracias por el tuto
Encantado como explica con tanto detalle
GRACIAS DE VERDAD, LLEVO DESDE LA MAÑANA SIGUIENDO TU VIDEO Y FINALMENTE ME RESULTÓ MIL MIL GRACIAS
Excelente!
Muy bien explicado, felicitaciones!.
GRACIAS A TU VIDEO YA MISMO ACABO LA TESIS, SALUDOS
Éxitos!!
Muchas gracias por éste contenido, ésto sí es contenido de calidad. De verdad muchas gracias!!!
Muchas gracias por el video Ivana! Me sirvió!
Excelente video y explicación me saco de muchos vacíos que tenia sobre el tema . Esperando tu próximo video 👍
muy bueno el video, cada paso detallado, excelente
Mil, pero mil gracias Maestra.
Porque no usas las etiquetas @Autowire cuando utilizas el servicio y el repositorio??
Hola @AbigorLuna, muy buena pregunta!! Dado que la dependencia del servicio o repositorio es obligatoria, la inyección por medio del constructor utilizando la anotación @RequiredArgsConstructor de Lombok y private final es la más recomendada porque:
- las dependencias se vuelven inmutables después de la creación del objeto, lo que hace un código de más calidad ya que aumenta la seguridad de los subprocesos y reduce posibles efectos secundarios,
- facilita las pruebas unitarias
- declara explícitamente las dependencias requeridas.
Es importante agregar que, Spring Boot recomienda la inyección por constructor por sobre las inyecciones de dependencias por campos (a menos que éstas sean muchas).
Espero haber respondido a tu pregunta. Abrazo!
Muchas gracias por el video Profe!!! Me socó muchisimas dudas. Saludos cordiales.
Muy buena explicación, felicitaciones y muchas gracias por tu contenido
Excelente video, muchas gracias y saludos desde Santiago de chile
Excelente video, todo muy bien explicado
Explicación 10/10. Muchas gracias por el video.
Me gusta como explicas, podrias por favor hacer un video con la arquitectura hexagonal en spring boot, gracias .
Excelente video! Espero ansioso más videos con esta calidad. Mi única duda es, si comento el AuthenticationProvider tanto como Bean y del securityFilterChain, JwtAuthenticationFilter usa su propio userDetailsService y AuthService su propio PasswordEncoder. Tanto registro, login y acceso al endpoint protegido funcionan igual. Spring configura un AuthenticationProvider por defecto al no haber asignado el DaoAuthenticationProvider? Entiendo que, algun provider tiene que ejecutar authenticate() para realizar el login y obtener el token.
Hola Matías, si Spring Security tiene una configuración por defecto, pero podemos adaptarla según nuestras necesidades o al mecanismo que necesitemos. Saludos,
Gran video, felicidades y gracias. 👍
Hola, no sé porque, pero ponga la URL que ponga, siempre me sale 401 Unauthorized
Puede ser porque te habrás equivocado de nombre en alguna variable, por ejemplo yo en vez de colocar "configuration" puse "configurable".
@@robertodev2002 No te preocupes, ya lo he solucionado, tenia mal puesto algunos paquetes. Ahora el problema es que me sale este error al iniciar sesión:
io.jsonwebtoken.ExpiredJwtException: JWT expired
Algunas veces funciona y otras, he intentado ponerle más tiempo a la expiración del token, pero no le conseguido, tengo que intentar que cuando inicie sesión, elimine el token antiguo o algo así del estilo
@@jules2426 Que paquetes tenias mal puestos? Tengo el mismo problema 401 Unauthorized al hacer register o cualquier otra cosa
@@rodrigo-maidana yo tenia unos paquetes que eran com.backend y com.bakend, por eso me daba el error
Muy buen video! Te destacas en esto, gracias
He aprendido mucho con tus videos muchas gracias, tienes una buena enseñanza entre teoria y practica.
Me gustaría que si pudieras hacer un video similar a Angular con React y el login seria de mucha ayuda, Gracias.
Gracias por este video, me ha ayudamo muchisimo. Como debemos hacer el logout cuando el spring security está en la API ?
muchas gracias me ha salvado tu video, son muy buenos
Este video me ha servido demasiado, infinitas gracias
Consulta cuando rompo el token como tu lo haces en el minuto 1:05:53 no me da la respuesta 403 me da un error 500 que dice:
JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted.
Ese problema esta en el JwtService o en el archivo SecurityConfig?
Saludos.
Muchisiisismas gracias... , excelente video
Puede ser que esto no funcione en vercion de spring-boot 3.2.3, Porque segui todos los pasos menos eso y literalmente ya en el minuto 11.04, lo de dejar publico los endpoint auht/** no me funciona o no se que pasa ya que todos los endpoint de aho me tiran 401Unauthorized, y si pego la direcion en un navegador esto sin saber pero me carga un login que jamas cree en localhost:8080/login me redireciona ahi
No me funciona tampoco, ya encontraste una solucion?
No enconcotre otro video en ingles que usa una vercion mas nueva y sercana a la 3.2.3 y ese agrego un monton de cosas mas y ahi me andubo pero no completamente ya que enves de devolverme los errores 403 me tiraban 401 @@_DaarkClown
@@damianveragonzalez3560 me podes enviar el link?
Hola @damianveragonzalez3560 y @_DaarkClown, actualicé ese mismo proyecto a la versión 3.2.4 de spring boot y sigue funcionando sin problemas. Habría que ver el proyecto que están trabajando... Intenten revisar que está pasando mediante el log. Para ello, agreguen la siguiente línea en el application.properties: logging.level.org.springframework.security=TRACE
@@irojascorsico Sale que el token csrf no se deshabilita
Tengo una pregunta, como variara la configuracion en caso de no usar Lombok, y enves de ello usar MyBatis???
Excelente material de estudio!!!!
Gracias por comentar
Me envía nulo a la base de datos. :c Además, al implementar UserDetails en la clase User me genera únicamente un método llamado "getUsername", agregué los métodos del video manualmente y el IDE me dice que son redundantes, da lo mismo si los dejo o si los comento.
no soy de comentar pero me gustan tus videos, son buenos y explicas las cosas de manera calmada y clara. si quisiera ver para autenticar roles y de acuerdo al rol me lleve algún lugar, un dashboard o algo asi. Gracias
Agendo un video que lo explique.
Excelente explicación de inicio a fin
Hola, muchas gracias
que bien explicas!! Buenisimo tu contenido
Muy buena explicando me ayudaste bastante, un abrazo!
Una pregunta me sale esto pero tengo el codigo igual,que puede ser? Parameter 1 of constructor in com.example.appWeb.config.SecurityConfig required a bean of type 'org.springframework.security.authentication.AuthenticationProvider' that could not be found.
Felicidades por el video, Profe!. Pero tengo una consulta, en el minuto 16:46 explica que el filtro del jwt valida si el token es nulo y si lo es, continua con el ciclo de authenticación, no debería terminar el ciclo de vida y tirar un error?.
No tengo conocimiento previo de Spring Security, pero me imagino que los filtros en si no darán paso al menos que uno setee la autenticación en el contexto de seguridad, que es lo que hace en caso de haber un token válido
muy bueno. me re sirvió. muchiiiisimas gracias. :)
pregunta de donde sacaste el link que pusiste en el POST?
¿Porque los atributos de la entidad User no tienen el modificador private?
Hola muy buen video me esta sirviendo de gran ayuda pero en la ruta del login ingresa al controlador pero no al servicio porque en postman me sale el 403 le he dado mil vueltas a mi codigo siguiendo el tuyo y no me sale hay alguna forma de contactarte para que me ayudes ?? Gracias
Lograste resolverlo?
Hola Ivana. Gracias por el contenido. Quedé varado en la clase AuthService. En el register no me reconoce el builder y no entiendo el motivo. Cuando digito User user = User.builder() , no me reconoce el método.
Yo tambien ando en esas no me reconoce el .builder() en esa misma clase ademas en la clase User cuando se generan los metodos de la interface userdetails se me generan dos metodos mas el de getUsername y el getPassword y pues en esas ando
Hola! Dos puntos para revisar:
1- Revisen tener la anotacion @Builder en la clase User.
2- Verifiquen que la imporación a la clase User sea la que usteden crearon y no la de Spring Security.
Abrazo!
Ivana
@@santiagobarreralopez1754 hola, tengo las mismas novedades que exponen los dos. Si lograron solucionarlo y si es así cómo lo hicieron? Gracias!
Yo ya revisé lo que sugiere @irojascorsico
Pero sigo con la novedad
La parte del Registro estaba teniendo un errorcuando intentaba crear el nuevo registro de que no encontraba la tabla "user_seq" asi es que use la propiedad en el application.properties:
spring.jpa.properties.hibernate.hbm2ddl.auto=create para que genere las tablas necesarias automaticamente cuando corres el proyecto. Espero les sirva. Saludos y Excelente material para los que estamos un poco oxidados en SpringSecurity. Gracias.
Muy buen video me sacó de apuros, pero necesito la continuación para usar diferentes roles y filtrar por rol por favor :D
Me alegro que te haya sido de utilidad el vídeo!! Ahora estoy trabajando en otro vídeo donde muestro como conectar una aplicación de angular con la api rest desarrollada en este video. Voy agendando sus preferencias para próximos videos. Abrazo!
@@irojascorsico sería increíble es justo lo que necesito para mi proyecto! Ya tengo toda la parte de angular, el front con angular y diseño se me da bastante bien pero estaba pillado en el back con la actualización de security, ya solo necesito filtrar por roles pero creo que lo estoy consiguiendo gracias a ti, muchas gracias espero con impaciencia el próximo video :D
👍@@irojascorsico
Hola, excelente video. Quería preguntarte si tenés uno donde expliqués la autenticación con un ldap
estoy mega confundido, veo este video y sugieres ver el anterior, luego veo el otro y sugieres otro, ¿cual es el orden?
Hola!! Cada video puedes verlo independientemente de los anteriores según el nivel de conocimientos que tengas . Hay contenidos que fueron desarrollados previamente por eso la sugerencia (si no se hace muy extenso el video). Si estás comenzando, te sugiro ver las listas de reproducción que están en orden de prioridad.
Saludos,
Ivana
Uff, que bien explicado! Felicitaciones, me suscribo
Muchísimas gracias @JesusDiaz-tt1pw. Abrazo!
Ivana cómo saben ustedes qué clases, interfaces y métodos deben usar dónde está el manual que indique qué hace cada clase, por qué se usa, para qué se usa de donde sacan ese criterio para sabe qué clase es conveniente usar, eso lo da la experiencia o en donde puedo ver la arquitectura y la funcionalidad de cada clase de spring security, de jwt, de hibernate etc?
Hola Henry, es muy buena pregunta!! Lamentablemente no hay un manual que explique esto al detalle dado que tenemos muchísimas formas de definir la arquitectura. Esta que les presento en el video es una forma de implementación. ¿Qué criterio me permite tomar decisiones sobre cuál es conveniente o no? Esto depende del dominio del problema, la tecnología, los conocimientos en relación a patrones de diseño, la experiencia, etc.
El libro Spring Security in Action, Second Edition Laurentiu Spilca, explica todo a detalle, como funciona Spring Security, la arquitectura, que es lo que hace cada uno de los métodos que mencionas, por ejemplo la clase User recomienda el libro recomienda usar dos clases en lugar de una, para no mezclar responsabilidades. Si entiendes esas bases, el video lo entiendes muy bien como un resumen.
Hola Ivana, de que trata el video oculto ?
es posible teneracceo a este ?
Buenas, a partir de esta aplicacion estoy intentando hacer una ruta solo para role ADMIN, he creado la ruta y es accesible desde postman, ademas he añadido el role al token ya que no figuraba, y estoy intentando con
.requestMatchers("/api/v1/demo2").hasRole("ADMIN")
justo antes del
.requestMatchers("/auth/**").permitAll()
pero me devuelve un 403, alguna idea?
@AtonicSeven, evidentemente estás teniendo problemas de permisos. Revisaste el log?
@@irojascorsico buenas, ya encontré la solución, lo dejo por aquí por si a alguien le sirve:
El problema es que cuando hace la comprobación lo hace como "ROLE_ADMIN" por lo que podemos cambiar la clase Role con ROLE_ADMIN y ROLE_USER (y todo lo que está relacionado para que compile bien).
La otra solución es usar el filtro de otra forma: .requestMatchers("/api/v1/demo2").hasAuthority(Role.ADMIN.name())
Muchas gracias por responder, estaré atento a su canal, éste video y el siguiente son muy buenos.
@@AtonicSevenGenial!! Gracias por compartir cómo lo resolviste. Abrazo!
Hola tengo una consulta, en vez de utilizar el string builder para crear el objeto de tipo User en el servicio, puedo crear un paquete mapping y una clase UserMapping, donde pueda mapear esos objetos?
muy bueno tu contenido por cierto
Hola! Entiendo que no debería haber ningún problema. Esta es una forma de trabajar pero existen más. Abrazo!
51:26 llegue hasta este momento y me dio un error de dependencia circular en la clase SecurityConfig. No se en que parte la cague.
Ups, que pena. Si es de ayuda, dejé el código que fui escribiendo en un repo de github. Por ahí, puedes comparar y ver qué paso...
Hola, muy buen video, tengo una pregunta. ¿Con qué finalidad se crea un token al registrar un usuario ? ¿No debería ser solamente cuando inicial sesión?
Eso lo entiendo. Lo que digo es, un token cuando se registra el usuario, con qué fin? El token debería generarse cuando uno se loguea. O bueno, no sé jaja, esa es mi inquietud .
Hola @giordypavelhenaomontes9924, en el video estoy devolviendo el token al realizar el registro a fines del ejemplo nada más. Coincido contigo que no es una práctica recomendada dado que es preferible devolver el token luego de que el usuario inició sesión.
Abrazo!
@@giordypavelhenaomontes9924Si me preguntaba lo mismo jaja al final solo lo cambie por un "Usuario creado" xd
Excelente video, claro consiso y fácil, quisiera saber cuán conplicado sería implementar el refresh token, espero puedas hacer una actualización sobre eso
Hola! Lo agendaré como contenido para un próximo video.
Hola, quisiera saber cual es tu configuracion/extensiones que tienes en vs code para porgramar con spring, ya que hay algunas cosas que no se me importan correctamente, tengo que que a intellij IDEA para hacerlo, esperia y me puedas ayudar, gracias
Hola! Te comento, las extensiones que tengo isntaladas en vscode son las siguientes: Spring Boot Extension Pack, Spring Boot Tools, Spring Boot Dashboard, Project Manager for Java y Maven for Java.
Buenas, en el metodo de securityFilterChain de la clase de SecurityConfig quise poner ".antMatchers("/admin/**").hasRole("ADMIN")" para poder conseder permisos de administrador justo debajo del ".antMatchers("/auth/**").permitAll()" y no funciona
Proximamente realizaré un video con los roles para ayudarlos. Abrazo
Hola quería hacer una consulta si me pueden ayudar en el JwtAuthenticationFilter minuto 23 me marca missing no null annotation para HttpServletRequest HttpServletResponse y FilterChain y el IDE me dice que haga un @SupressWarning
saludos
Hola @maximilianogabrielkolbl8040, con qué version de spring boot creaste el proyecto?
Profe que conviene hacer cuando un proyecto tiene otra versión y quiero cambiarla?
Y después si tengo problemas para correr la aplicación
Hay guías para verificar las conexiones?
Muchas gracias por responder
Saludos
Buenísimo, muchas gracias!
Como puedo usar el get claims para decodificar el token
Saludos atento a videos curso o un paso a paso de spring boot java microservicios
Perfecto
O sea que cuando el usuriario se registra tambien se genera el token? eso no deberia ser para autenticarse en el login nada mas y para cada solicitud posterior?
Hola Walter, si lo ideal es que se genere el token solo cuando el usuario se autentique. Saludos, Ivana
@@irojascorsico Muchas gracias Ivana por tomarte la molestia de respponderme, la verdad admirable todo lo que sabes, hay que ser crack para hacer lo qu evos haces!
El token en el registro se podría usar para que cuando el usuario se registre se autentique automáticamente.
@@theedwardgd7928 Si, claro. Cuando se registra podemos darle acceso permitiendo la autenticación automática. Dependerá del problema. Sin embargo, en mi opinión lo ideal es: si el registro fue exitoso redirigirlo al inicio de sesión para que se autentique. Abrazo!
Excelente video todo fue muy claro, una duda, estoy haciendo un proyecto en el cual habran varias entidades aproximadamente como 10, cómo me recomiendas organizar el proyecto con una paquete por entidad (como en el video) o organizarlo con las paquete (Modelos, Controladores, Repositorios)?
Yo siempre recomiendo paquetes por entidad dado que te podrás concentrar en eld esarrollo individual sin la encesidad de tener mmuchos paquetes abiertos.
Acuerdo con Sergio!