Integración Spring Boot 3, Keycloak, Oauth2: Lleva la seguridad a otro nivel

Sdílet
Vložit
  • čas přidán 5. 08. 2024
  • Descubre la combinación imbatible de Spring Boot y Keycloak y lleva la seguridad de tus aplicaciones al siguiente nivel. Aprende a construir una aplicación completa y segura, gestionando la autenticación, autorización y protección de recursos. ¡No te pierdas esta oportunidad de fortalecer tus aplicaciones con Spring Boot y Keycloak!
    ▶️ Repositorio de GitHub con el código fuente:
    github.com/UnProgramadorNaceO...
    ▶️ Enlace al JSON de configuracion OpendID:
    localhost:9090/realms/[REALM-NAME]/.well-known/openid-configuration/
    🔔 Redes sociales 🔔
    🔶Facebook:
    profile.php?...
    🔶Instagram:
    / unprogramadornaceofficial
    🔶 Sígueme en LinkedIn: www.linkedin.com/comm/mynetwork/discovery-see-all?usecase=PEOPLE_FOLLOWS&followMember=unprogramadornace
    🔶 Contacto:
    unprogramadornace@gmail.com
    ⭐Donaciones⭐
    paypal.me/unprogramadornace?c...
    🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
    Si este video ha sido de ayuda para ti, por favor ayudame tú a mí con un poderoso like al video y suscribiéndote al canal para seguir creando más contenido como este.
    🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
    📚Temario:
    00:00 Introducción
    01:37 Descargar e iniciar Keycloak
    05:35 Cambiar puerto de Keycloak
    07:23 Configurar Keycloak (Clientes, usuarios, roles, permisos)
    29:44 Obtener un JWT con Keycloak
    36:23 Crear aplicacion en Spring Boot
    38:42 Configurar Banner de Spring Boot
    39:35 Configurar Spring Security
    43:42 Crear controlador de prueba
    45:05 Configurar application.properties
    49:20 Crear restriccion de roles sobre los endpoints
    01:20:40 Crear, Actualizar, Eliminar, Buscar usuarios de Keycloak con Spring Boot
    02:06:10 Crear controlador para CRUD en Keycloak
    02:13:23 Testear toda nuestra aplicacion con POSTMAN
    No olvides que un programador en Spring Boot y Keycloak, nace programando en Spring Boot y Keycloak. Práctica todo lo que puedas que la meta está a la vuelta de la esquina, solo debes ir por ella.
    Si tienes alguna pregunta no dudes en escribirla en los comentarios.
    Saludos!
    #spring #springboot #keycloak #springsecurity #security #maven

Komentáře • 157

  • @sbsalvador
    @sbsalvador Před 15 dny

    Eres el mejor canal de youtube. Te mereces mi sueldo de practicante xd

  • @leonlederhos5108
    @leonlederhos5108 Před 25 dny +1

    la pucha que estaba largo y super completo, muchas gracias por toda la dedicacion que le metiste

  • @BryanDev-uv9cs
    @BryanDev-uv9cs Před 7 měsíci +7

    en los 2 primeros minutos se ve la dedicación y empeño a crear este material de aprendizaje, muchas gracias!!

  • @andresenriquez1376
    @andresenriquez1376 Před měsícem

    excelente taller de keycloak, se agradece el esfuerzo no es fácil enseñar, talleres como este simplifica la curva de aprendizaje para que posteriormente podamos sacarle provecho la documentacion de keycloak y poner en practica gracias

  • @LeoRomerockblues
    @LeoRomerockblues Před měsícem

    Con vez más fascinado con Spring Boot y las infinitas aplicaciones que se puede lograr. Muchas gracias de nuevo Santy por tus conocimientos que nos compartes! 👏👏

  • @ronaldgarciavazquez8232
    @ronaldgarciavazquez8232 Před rokem +5

    Como siempre, sin siquiera verlo agradezco tu esfuerzo, material garantizado en tu canal. Saludos

  • @user-vh7cl1yr9t
    @user-vh7cl1yr9t Před rokem

    Mil gracias, ya estoy esperando el próximo video

  • @fedebrid6382
    @fedebrid6382 Před rokem

    Que grande, una joyita este canal!

  • @victorballarin4218
    @victorballarin4218 Před rokem

    Muy bien explicado todo, te mereces ese like y esa sub, gracias y mucho ánimo para continuar con ello!

  • @user-nk6zl6jo4j
    @user-nk6zl6jo4j Před 11 měsíci

    Muchas gracias, excelente tutorial!

  • @maximilianolencina8150
    @maximilianolencina8150 Před rokem +1

    Sos un genio! Gracias por este excelente contenido

  • @Naimadmdp
    @Naimadmdp Před rokem +1

    Muy bueno muchas gracias por compartir tu conocimiento 🎉

  • @Lgsalgados
    @Lgsalgados Před 5 měsíci

    Éxitos con tu contenido, saludos desde Ecuador.

  • @jagmig15
    @jagmig15 Před 4 měsíci

    Excelente video, te agradezco por tremendo aporte. Sigue así.

  • @leonardobarrera988
    @leonardobarrera988 Před rokem

    Recien termino de ver el de JWT y me encuentro con este video. Muchas gracias por tan grande aporte!

  • @jbbzzi
    @jbbzzi Před 7 měsíci

    Gracias, excelente de calidad tu contenido. Por favor continua con mas videos! Gracias!

  • @V966Cobano
    @V966Cobano Před 5 měsíci +2

    Eres sin duda uno de los mejores explicando Keycloak y JWT en CZcams, muchas gracias! Podrías hacer para próximos vídeos los controladores para Spring Boot pero de grupos de usuarios y de asignación de roles??

    • @unprogramadornace
      @unprogramadornace  Před 5 měsíci +1

      Muchas gracias por tu comentario. Tendré en cuenta tu sugerencia.
      ¡Saludos!

  • @agusmaster16
    @agusmaster16 Před 4 měsíci

    ¡Muy buen video!
    Me ha servido de mucha utilidad.
    ¡Saludos y sigue así!

  • @ryctdark
    @ryctdark Před 3 měsíci

    Que buen video, mil gracias

  • @alejodev
    @alejodev Před 2 měsíci

    Con esto es que voy a subir de nivel, gracias buen hombre.

  • @cesarleon1892
    @cesarleon1892 Před rokem

    Excelente contenido gracias por tu aporte a la comunidad saludos desde Pereira Colombia 👍

  • @jcapax161277
    @jcapax161277 Před 6 měsíci

    Muchísimas gracias!!!

  • @sarmientoluis89
    @sarmientoluis89 Před 9 měsíci

    buenas noches saludos y exitos por compartir tus conocimientos sigue a delante

  • @kleisernairobi6561
    @kleisernairobi6561 Před 6 měsíci

    Caí de paraqueda na sua aula. Ganhou meu like. Parabéns!

  • @Romer-Alvarez
    @Romer-Alvarez Před rokem

    ¡Que buen vídeo!

  • @fedejava
    @fedejava Před 7 měsíci

    Excelente video de principio a fin. Tenés mi like y suscripción. Muchas gracias.

  • @marcelomartinez-ky9py
    @marcelomartinez-ky9py Před 8 měsíci

    Excelente video !!! me encanto ! gracias por compartir

  • @letoniel006
    @letoniel006 Před 5 měsíci

    Excelente contenido.

  • @hectorvargas4375
    @hectorvargas4375 Před 8 měsíci

    muchas gracias por tus videos me has ayudado mucho con tu videos, ojala sigas adelante

    • @unprogramadornace
      @unprogramadornace  Před 8 měsíci

      Me alegra que mis videos sean de utilidad para ti.
      ¡Saludos!

  • @ricardobravo6925
    @ricardobravo6925 Před 9 měsíci

    Buen video, justamente lo que necesitaba para comprender mas afondo la administración de usuario con un endpoint desde spring boot, super gracias

    • @unprogramadornace
      @unprogramadornace  Před 9 měsíci

      Hola, muchas gracias por tu comentario. Me alegra que el curso te haya servido.
      ¡Saludos!

  • @josuealejandromedinaguerre7010

    Jijuemare, de los mejores vídeos y profesores que he podido encontrar en youtube.

  • @CeratiGilmour
    @CeratiGilmour Před rokem

    Tan fino? muy buen video Doc.

  • @samiralvaradocamayo5312

    Excelente video bro, me liaste de una.

  • @jsomozad
    @jsomozad Před rokem

    he visto la serie de 3 videos entera y es estupenda... un gran trabajo muchas gracias

    • @unprogramadornace
      @unprogramadornace  Před rokem

      Gracias a ti por tu comentario.
      ¡Saludos!

    • @RicardoToledoB
      @RicardoToledoB Před 11 měsíci

      Sería buen incorporar una serie de videos para subir tu app a un vps configurar el servidor e inclusive tu servidor de dominio ...

  • @rickhunter8216
    @rickhunter8216 Před rokem +1

    BUEN TUTORIAL TIO NACE.

  • @brayanruizmarreros2107

    Buenisimo video, bien merecido el like y el subscribe

  • @springs2581
    @springs2581 Před rokem +1

    Gracias

  • @elkinlimasrojas1294
    @elkinlimasrojas1294 Před 11 měsíci

    Gracias que buena explicación

  • @marcelonicolasvillalba4695
    @marcelonicolasvillalba4695 Před 2 měsíci

    muchas gracias por el video. Muy bien explicado, te mereces mi primer comentario de youtube

  • @sebastiantorres439
    @sebastiantorres439 Před 2 měsíci

    Me sorprende el excelente tutoríal que acabo de ver. De verdad de total calidad, muchas gracias, el mejor tutorial para aprender keycloak.

  • @eliorivas
    @eliorivas Před 11 měsíci

    Excelente!!

  • @sebastianignaciosantillan2454

    Aquí dejando un súper like

  • @efrainhernandez393
    @efrainhernandez393 Před rokem

    Eres un genio Master!! que buen aporte, podrias dar une ejemplo creando el auth-server desde cero?, es decir sin usar KeyCloak, esto pensando que solo se pueden instala aplicaciones en un servidor y no la herramientas ya creadas...
    Gran aporte !!
    Saludos

  • @christianrivera2414
    @christianrivera2414 Před 11 měsíci

    Muy buen video, si te apetece hacer videos del tema, algo sobre OpenShift estaría bueno, me suscribo 😌

  • @mi_guel_ang
    @mi_guel_ang Před rokem

    Excelente explicación y video , me gustaría saber si podría haber un futuro video de implementar estos servicios ya desde el lado del cliente con JavaScript por ejemplo en React, seria interesante ver esa integración y como se le da el manejo a estos tokens y autorizaciones.

  • @HectorMiguelVenturaCercado
    @HectorMiguelVenturaCercado Před 11 měsíci +1

    Excelente video, me gustaría que hagas de stream

  • @BryanRivero-bz3oy
    @BryanRivero-bz3oy Před 8 měsíci

    Excelente video, me gustaría que hagas de stream, ya que explicas muy bien y se entiende todo.

    • @unprogramadornace
      @unprogramadornace  Před 8 měsíci

      Hola, muchas gracias por comentar. Voy a tener en cuenta su sugerencia.
      Saludos.

  • @josuealejandromedinaguerre7010

    La guía de streams también estaría genial.

  • @hikigg
    @hikigg Před 5 měsíci

    Estoy trabajando en una empresa donde estoy aprendiendo Spring Boot, me encanta muchísimo todo el contenido que realizas, lo estoy implementando montón, tengo que crear un aplicativo implementando microservicios, y tu contenido me ha ayudado demasiado, por favor sigue subiendo mas sobre Spring Boot.

    • @unprogramadornace
      @unprogramadornace  Před 5 měsíci

      Hola, le alegro que mi contenido te haya ayudado a entender un poco mejor esta arquitectura. Gracias por tomarte el tiempo de comentar.
      ¡Saludos!

  • @jennycontreras-qx3wv
    @jennycontreras-qx3wv Před měsícem

    Muy buen video 👌🏻, pero el flujo que utiliza esta mas alineado con un servidor de recursos, es decir, la app de spring boot, la cual es un poco diferente al flujo normal de OAuth2.
    En este caso la app de spring boot actual como servidor de recursos, no como un cliente. La aplicación trabaja esperando que el usuario tenga un token siempre, esta forma puede ser util cuando se tiene mucha confianza al usuario, pero nones tan segura.
    Como deberia ser:
    Cuando la app de spring necesite autenticar un usuario, esta deberia dirigirlo a keycloak o a otro servidor de autenticación.
    Luego de la autenticación exitosa la app de spring deberia recibir y manerar un codigo de autorización dado por keycloak u otro servidor.
    La app de spring deberia intercambiar el código de autorización por un token (que es lo que hace usted cuando lo solicita en postman)
    Usar el token de acceso para dar permiso y acceder a la app segun los roles que ha establecido.
    Así debería ser, lamentablemente aún no he encontrado un canal que lo explique así pero en keycloak, solo he encontrado como hacerlo con los servidores propios de Spring boot 😩

  • @DJGabeangel
    @DJGabeangel Před 4 měsíci +1

    Por favor seria muy bueno hagas un tutorial de streams y un tutorial donde unas lo que diste con microservicios (eureka Discovery, server config, Gateway, spring security y keycloak). La idea seria mas que nada una guia de como setear el gateway y los microservicios, para limitar el acceso a los cada microservicio con spring security y que solo se pueda acceder los controladores por el gateway

    • @unprogramadornace
      @unprogramadornace  Před 4 měsíci

      Hola, lo tendré en cuenta. No olvides suscribirte al canal y dar like a los vídeos. Esa es la motivación para trabajar en nuevos videos.
      ¡Saludos!

  • @henryperez8849
    @henryperez8849 Před rokem +1

    Maestro si fuera posible crear una guía completa de strings estaría fabuloso

  • @jorgealvarez5248
    @jorgealvarez5248 Před 11 měsíci

    Muchas gracias por el video, te debo por lo menos una cerveza

    • @unprogramadornace
      @unprogramadornace  Před 11 měsíci

      Muchas gracias crack!
      Salud por esa cerveza. 🍺
      ¡Saludos!

    • @jorgealvarez5248
      @jorgealvarez5248 Před 11 měsíci

      @@unprogramadornace hay alguna forma de desarrollar un endpoint con KeycloakBuilder en el API que desarrollaste, para poder hacer login sin usar directamente el servicio expuesto por Keycloak?

    • @unprogramadornace
      @unprogramadornace  Před 11 měsíci

      @@jorgealvarez5248 Hola, no se para que querrías hacer eso, la escencia de Keycloak es designarle la seguridad para que él sea quien la administre, si quieres crear un endpoint sin usar el servicio de Keycloak no deberías usar KeycloakBuilder, sino crearlo de la forma tradicional con Spring.
      ¡Saludos!

  • @wilfredalvarez4646
    @wilfredalvarez4646 Před měsícem

    Excelente video, te ganaste un suscriptor, solo tengo una duda y es como puedo hacer para que los usuarios creados en el Realm adicional al master puedan inicar sesion en KeyCloak, saludos

  • @rogercondorilarico3323
    @rogercondorilarico3323 Před 3 měsíci

    Si pudieras en próximo video como realizar la autenticación con openApi swagger

  • @user-jp3zm9rs5c
    @user-jp3zm9rs5c Před 10 měsíci +2

    Muy bueno el video. Muchas gracias. Tengo una consulta para quien me pueda responder. Al cerrar el servidor, intento terminarlo con Ctrl + C, pero no funciona, y después cuando intento volver a levantarlo me da error, y la única forma de conseguirlo es borrando los archivos generados en la carpeta data. ¿Hay alguna forma de conseguirlo? Porque entiendo que al borrar los archivos de la carpeta data, me toca empezar de nuevo. Gracias si alguien me puede ayudar

    • @unprogramadornace
      @unprogramadornace  Před 10 měsíci +1

      Hola, la verdad nunca me ha pasado. Espero que alguien sepa darte una respuesta. Saludos.

    • @user-jp3zm9rs5c
      @user-jp3zm9rs5c Před 10 měsíci +2

      @@unprogramadornace Hola de nuevo, justo ahora acabo de encontrar una solución, al menos suficiente para levantar el servidor de keycloak sin eliminar nada. Recordemos que el error me surge después de que no cerrara correctamente con ctrl + c, y por tanto tener que cerrar la propia ventana para matar el proceso.
      kc.bat start-dev --db-pool-initial-size 10
      Si alguien tiene solución mejor no dejéis de comentar.
      Gracias

    • @puchu15
      @puchu15 Před 7 měsíci

      Mil gracias, me pasó lo mismo y ni reiniciando el PC me iniciaba otra vez.

  • @OscarGarcia-up3ph
    @OscarGarcia-up3ph Před 2 měsíci

    Que tal bro, muchas gracias por tu video, ¿hay manera de tener una explicación completa de todo Keycloak en general? me gusta tu manera de explicar las cosas porque con la documentación ando medio perdido

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci

      Hola, gracias por tu comentario. La verdad veo dificil ese video, pero tal vez lo haga a futuro.
      ¡Saludos!

  • @jesusedu
    @jesusedu Před 9 měsíci

    Muchas gracias por compartir tu conocimiento se agradece excelente video, una duda keycloak es Open source puedo tener la cantidad de usuarios y terms que quiera?

    • @unprogramadornace
      @unprogramadornace  Před 9 měsíci +1

      Hola, si. Keycloak es una tecnología de código abierto. Entonces puedes tener la cantidad de usuarios que quieras.
      ¡Saludos!

  • @jonhrodriguez6568
    @jonhrodriguez6568 Před 6 měsíci

    Cuando dijiste llevarlo a otro es por qué es otro nivel 😂 apenas ando dominando Spring security y JWT XD

  • @efrainhernandez393
    @efrainhernandez393 Před 2 měsíci

    Hola de nuevo, una duda, como configurarías la parte de "issuer-uri" para el TEST PHASE? esto pensando que en un CI se "dockeriza" la imagen del resource server y ese docker (que esta en el server de github) no llega al keycloak ??
    Saludos !

    • @unprogramadornace
      @unprogramadornace  Před 2 měsíci +1

      Hola, ese tema es bastante extenso y es complicado explicartelo en un comentario, lo que yo haria para los test es unas testContainers para que en mis pruebas yo pueda apuntar a un servicio real dockerizado solo en la parte de pruebas, podria ser una opcion. Pero este caso es de puro analisis y revision de cual seria la mejor opcion.
      ¡Saludos!

  • @FranklinMyIn
    @FranklinMyIn Před 5 měsíci

    Increible como tu canal puede llevar a un Jr a un nivel avanzado con tus videos. Excelente contenido.

    • @unprogramadornace
      @unprogramadornace  Před 5 měsíci

      Me alegra que el vídeo haya Sido de tu agrado.
      Muchas gracias por comentar.
      ¡Saludos!

  • @JuanJoseSierraOrtega
    @JuanJoseSierraOrtega Před 4 měsíci

    profe que recomiendas mas, estaba viendo el video de autenticacion con spring secutiry pero siento que es mucho mas complicado crear la autenticacion manual, y con keyclock siento que es mas facil manejarla, pero no se cual puede ser mejor si la autenticacion manual o esta que es mas rapida

    • @unprogramadornace
      @unprogramadornace  Před 4 měsíci

      Hola, tu observación es bastante interesante, con respecto a ello te comento lo siguiente:
      Si no quieres preocuparte de la seguridad en tu aplicación, puedes usar software de terceros en este caso Keycloak, pero si tú mismo quieres encargarte de la seguridad en tu aplicación puedes configurarlo manualmente.
      Ambas formas están bien y son correctas, todo depende de tu aplicación.
      ¡Saludos!

  • @leonschm
    @leonschm Před 4 měsíci

    Felicitaciones , quería usar Keycloak para ayudarme a implementar el proyecto, seguí tus pasos y está funcionando, muy bien, ahora la pregunta que me queda es cómo puedo validar el vencimiento del token jwt, alguna idea.

    • @unprogramadornace
      @unprogramadornace  Před 4 měsíci

      Esto puedes configurarlo en Spring Security, pero el proceso lleva un poco de configuración y me es imposible explicartelo en un comentario. Creo que tendrás que googlear un poco.
      ¡Saludos!

  • @Romer-Alvarez
    @Romer-Alvarez Před rokem

    Podrías hacer uno de AWS Cognito ? Me gusta como explicas

    • @unprogramadornace
      @unprogramadornace  Před rokem

      Hola, poco a poco iré agregando más contenido al canal. Próximamente comenzaré a abordar gemas de AWS.
      ¡Saludos!

  • @andresgroveralbinochambi4589
    @andresgroveralbinochambi4589 Před 10 měsíci

    Excelente material, te agradezco mucho. Sin embargo, en mi caso, repliqué lo hecho en el video, pero con una version de Spring Boot 3.1.4; hasta la parte de prueb sin configurar el Jwt en la clase SpringSecurityConfig bien, sin problemas. Cuando coloco el @PreAuthorize simplemente no funciona, me sale Error 403 en ambos casos con los usuarios admin y user, pero cuando se quitan esas anotaciones vuelve a la normalidad, ya probé tambien quitanto una por una cada anotación. Veré realmente cual es el problema porque es poco usual que se den esos errores. Seguí el tutorial hasta justamente la parte de probar las API's con las anotaciones. Solamente quise indicar ello, gracias por compartir tus conocimientos!

    • @unprogramadornace
      @unprogramadornace  Před 10 měsíci

      Hola, gracias por comentar. De hecho ese es el problema de trabajar con versiones tan recientes, de una versión a otra te cambian cosas, configuraciones y demás, tal vez eso sea lo que te sucedió.
      De igual modo me parece excelente que te haya sido de utilidad el vídeo.
      ¡Saludos Crack!

    • @JohanEsteban
      @JohanEsteban Před 4 měsíci +1

      Hola, sí funciona.
      Recuerda que el nombre del rol debe ser tal como se asignó al client: @PreAuthorize("hasRole('admin_client_role')"), ya que Spring Boot los gestiona con la preposición ROLE, lo cual implementó @unprogramadornace en el método que extrae los recursos de los roles.

    • @andresgroveralbinochambi4589
      @andresgroveralbinochambi4589 Před 4 měsíci

      @@JohanEsteban , voy a revisarlo nuevamente. Gracias por tu comentario

    • @Carloshdv
      @Carloshdv Před měsícem

      Soluciono el problema de @PreAuthorize?? A mí también me da ese problema... Si lo resolvió , cuenteme que hizo

    • @Carloshdv
      @Carloshdv Před měsícem

      Amigo te recomiendo a que hagas una depuración y seguimiento del código de la clase Converter , en el método convert y extractResourceRoles haz un código que te permita saber si realmente esta funcionando correctamente, ya sea imprimir en consola las Autrhorities y los map y collection para ver si toman los valores que le corresponde. En mi caso pasaba que jwt.auth.converter.resource-id en el application.properties tenia un _ en vez de un signo menos - . allí debes de poner el nombre del cliente no del realm, además asegúrate que en la clase Provider cada constante estática este bien escrita.
      Yo luego de ponerme a depurar cuidadosamente me di cuenta que realmente si funciona lo que me pasaba es que no se cargaban los roles , sino , en mi caso, se cargaban unos scopes, y solo por tener un pequeñito error tipográfico.

  • @Code-Logan
    @Code-Logan Před 11 měsíci

    Excelente video me gustaria usar un cliente como angular.

    • @Code-Logan
      @Code-Logan Před 11 měsíci

      Me gustaría saber si puedes dar una clase personalizada para implementar el uso desde un cliente como angular

  • @agustinibarrola8931
    @agustinibarrola8931 Před rokem +1

    Guardado para verlo, ya termine los de security y el de apirest, tengo una duda es necesario concurrencia para las consultas de base de datos harás algún video explicando eso? Desde ya muchas gracias por todos los videos

    • @unprogramadornace
      @unprogramadornace  Před rokem +1

      Hola, no es necesario concurrencia para bases de datos debido a que jpa usa un Singleton para hacer consultas entonces siempre usa el mismo objeto para hacer consultas, además jpa no está diseñado para funcionar con hilos entonces puede ser considerado como mala práctica.
      ¡Saludos!

    • @agustinibarrola8931
      @agustinibarrola8931 Před rokem

      @@unprogramadornace gracias por la respuesta vengo del mundo de node y es totalmente distinto y me confundo con algunos conceptos como promesas en javascript y etc

    • @unprogramadornace
      @unprogramadornace  Před rokem +1

      @@agustinibarrola8931 Es cierto, node està diseñado para ser No bloqueante por defecto y eso hace que Node sea muy rapido, en Spring Boot es està basado en Servlets y trabaja con peticiones bloqueantes. Sin embargo Spring boot tiene un modulo llamado Spring Webflux el cual utiliza programacion reactiva asi que podemos trabajar con peticiones no bloqueantes, exactamente como lo hace node pero eso es otro tema.
      ¡Saludos!

    • @agustinibarrola8931
      @agustinibarrola8931 Před rokem

      @@unprogramadornace harás algo de webflux más adelante?

    • @unprogramadornace
      @unprogramadornace  Před rokem +1

      @@agustinibarrola8931 Podría ser, será un tema que abordaremos más adelante.

  • @mateoarenaschaverra2477
    @mateoarenaschaverra2477 Před 6 měsíci

    Primero que todo muchas gracias por el exelente video, felicitaciones por tu trabajo!!! Tengo un problema segui paso a paso la guia del video, pero cuando estoy tratando de consumir ya los servicios creados para cosultar los usuario de keycloak desde el api, obtengo un error 401 Unauthoraized, cuando hago la peticion directamente al keycloak si me trae la lista de usuarios correctamente pero cuando hago la peticion desde el api obtengo el error de autorizacion. Agradezco la ayuda!!!

    • @unprogramadornace
      @unprogramadornace  Před 6 měsíci

      Hola, 401 significa falta de autorización. Quiere decir que no has otorgado los permisos necesarios desde keycloak. Usualmente si seguiste todo al pie de la letra tendría que funcionar, pero si no funciona, significa que algo quedó mal hecho o hay algo que no se hizo. Te recomiendo verificar la parte en dónde otorgamos los permisos desde keycloak para conceder el acceso.
      Espero que eso te ayude y puedas encontrar la solución.
      ¡Saludos!

  • @JuanMatiasBrochero
    @JuanMatiasBrochero Před 4 měsíci

    muchas gracias ´por el tutorial, me sirvio.
    te queria consultar como podria hacer para el token sea de manera automatica, ya que voy a utilizar la autenticacion y autorizacion con un app de angular, desde ya muchas gracias y espero tu pronta respuesta. saludos

    • @unprogramadornace
      @unprogramadornace  Před 4 měsíci

      Hola, no entiendo muy bien a qué te refieres cuando dices que el tiene sea de forma si automática, podrías ser más específico por favor.
      ¡Saludos!

  • @juanpablocorreatarazona8801
    @juanpablocorreatarazona8801 Před 8 měsíci

    Que buen video bro, una preguntica, al agregar el token a mis peticiones me lanza error 431 por que la peticion es muy grande a causa del token, como podria solucionarlo?

    • @unprogramadornace
      @unprogramadornace  Před 8 měsíci

      Hola, nunca me ha pasado ese error entonces no sabría decirte, estoy seguro de que se puede solucionar pero en este caso deberías buscar en Google a ver si a alguien más le ha pasado.
      ¡Saludos!

  • @JurgenMolina
    @JurgenMolina Před 8 měsíci +2

    Falto crear un login personalizado

    • @JurgenMolina
      @JurgenMolina Před 8 měsíci

      Puedes hacerlo en react ? por favor para guiarme

  • @davidabelillanishuaraca7530
    @davidabelillanishuaraca7530 Před 4 měsíci

    primeramente muy buen video, muy bien explicado. al integrarlo en un proyecto con Angular, al hacer el login para obtener el token con keycloak me sale este error
    'has been blocked by CORS policy'.
    Seria de gran ayuda si sabes algo. Saludos

    • @unprogramadornace
      @unprogramadornace  Před 4 měsíci +1

      Hola, debes crear la configuración de los CORS en Spring Security, busca una implementación de CorsFilter, con eso lo solucionas.
      ¡Saludos!

    • @davidabelillanishuaraca7530
      @davidabelillanishuaraca7530 Před 4 měsíci

      @@unprogramadornace okey muchas gracias

  • @user-jp3zm9rs5c
    @user-jp3zm9rs5c Před 10 měsíci

    Una lástima, en el 2:20:00 aprox. 500 por postman y 401 en consola. He revisado múltiples veces la configuración en keycloak, y es exactamente igual al video. La verdad es que es difícil entender la mecánica de roles y permisos, al haber Master y el Realm que creamos, y por otro lado admin_cli y el cliente que creamos. Agradecería si alguien me puede ayudar, aunque entiendo que por aquí complicado. Es como si en el video se explicara una cosa, pero luego realmente sea otra distinta.
    En el vídeo, es el admin_cli del master el que tiene el role admin con los roles asociados, mientras que por código se supone que estamos usando el realm spring-boot-realm-dev, donde el admin-cli no tiene roles

    • @unprogramadornace
      @unprogramadornace  Před 10 měsíci +2

      Hola, usualmente 401 significa que te falta otorgar algún permiso. Por otro lado configuramos el admin_cli porque keycloak lo usa por debajo para poder funcionar y eso debe configurarse en máster, así lo decidieron los creadores de Keycloak entonces por eso se hace así. Lo que puedo aconsejarte es que trates de buscar la documentación o googlear como puedes configurar los permisos en keycloak para que puedas entender cómo funcionan y hacerlo.
      ¡Saludos!

  • @marlonvelez5240
    @marlonvelez5240 Před 5 měsíci

    Podrias por favor enseñar a como integar Keycloack para iniciar sesion con google. Pero que no se use el login de keycloak sino uno hecho en Angular.

    • @unprogramadornace
      @unprogramadornace  Před 4 měsíci +2

      Hola, nunca he integrado Keycloak con Google, sería una gran idea intentarlo, me lo voy a pensar.
      ¡Saludos!

    • @marlonvelez5240
      @marlonvelez5240 Před 4 měsíci

      @@unprogramadornace Seria genial, tambien me preguntaba si no es mucha molestia, como se puede usar authorization code para obtener el token y si es posible usar un login hecho en Angular para esto.

  • @Lashistoriasdelilith
    @Lashistoriasdelilith Před 8 měsíci

    el enlace JSON no me funciona, ¿qué puedo hacer?

    • @unprogramadornace
      @unprogramadornace  Před 8 měsíci +1

      Hola, puede ocurrir por diferentes motivos, uno de los más comunes es que la configuración del Keycloak sea incorrecta, en ese caso te recomendaría verificarla nuevamente.
      ¡Saludos!

    • @Lashistoriasdelilith
      @Lashistoriasdelilith Před 8 měsíci

      @@unprogramadornacebueno, gracias por responder.

    • @unprogramadornace
      @unprogramadornace  Před 8 měsíci

      @@Lashistoriasdelilith Espero que puedas solucionarlo.

  • @enrique9872
    @enrique9872 Před 7 měsíci

    Muy buen video, mi pregunta es como usariamos esto con microservicios

    • @unprogramadornace
      @unprogramadornace  Před 7 měsíci +1

      Hola, en microservicios la seguridad se maneja en el Gateway o puerta de enlace, allí puedes decidir si manejas toda la seguridad desde tu misma aplicación o utilizas un servicio como Keycloak.
      ¡Saludos!

    • @enrique9872
      @enrique9872 Před 7 měsíci

      @@unprogramadornace y como tendría que hacer toda esa configuración para que pueda poner el keyckoak en el gateway y se puede administrar en todos los microservicios que esten acoplados

    • @unprogramadornace
      @unprogramadornace  Před 7 měsíci +1

      @@enrique9872 Hola, es complicado explicarte en un comentario porque ese tema da para un curso completo. Lo que puedo decirte es que la seguridad se maneja en el gateway y el gateway es quien conecta con keycloak, ninguno de los otros microservicios debe la manejar seguridad debido a que el gateway es quien garantiza eso.
      ¡Saludos!

    • @enrique9872
      @enrique9872 Před 7 měsíci

      @@unprogramadornace has un curso de eso por favor, creo que seria un gran aporte para tu canal por que aplicando el crud en keyckoak y la seguridad no hay mucha información

  • @Carloshdv
    @Carloshdv Před měsícem

    Por que no funciona la anotación @PreAuthorize ??? Descargue el proyecto de Github y los ejecute tal cual, configure keycloak (clientes, realm, usuarios y demas ) asi como en el video, he revisado todo y no se porque no funciona 😬😔😩.... Alguien?

    • @unprogramadornace
      @unprogramadornace  Před měsícem +1

      Hola, para trabajar con las anotaciones de Spring debes cumplir algunas condiciones:
      1) Habilitar el soporte de las anotaciones con @EnableMethodSecurity
      2) No puedes usar las anotaciones Al mismo tiempo de la configuracion del HttpSecurity en el SecurityConfig, debes elegir uno solo. Si usas anotaciones no debes usar requestMatchers.
      Espero que eso te ayude a resolverlo. Es El error mas comun.
      ¡Saludos!

    • @Carloshdv
      @Carloshdv Před měsícem

      @@unprogramadornace Entiendo, pero es que no lo he modificado en nada, lo descargue desde su repositorio de github y así mismo lo ejecute, lo unico que le cambie fueron lo nombres de los roles en la anotacion @PreAuthorize(....) y las URIs en el application.properties. Tengo la misma version de java, la cual es la 17, la misma version de spring boot que es la 3.1.1 y no entiendo porque. Probe la clase Provider individualmente y funciona, al igual que la clase de servicio que se encarga de gestionar los usuarios dentro de Keycloak .....

    • @Carloshdv
      @Carloshdv Před měsícem

      @@unprogramadornace eso fue la primera vez que lo ejecute. Luego probe poniendo los roles del Realm en vez de los roles del cliente y nada. Voy a probar quitando las anotaciones y configurar las rutas y roles desde el SecurityFilterChain a ver si funciona...

    • @Carloshdv
      @Carloshdv Před měsícem

      @@unprogramadornace Ya encontré el problema, solo era un signo - pues debido a que el realm y el cliente tiene casi el mismo nombre, solo diferenciándose por unos (-)y ( _) lo que hacia que los roles no se cargaran de forma correcta, lo que se cargaba eran los scopes . ajajaja

  • @JurgenMolina
    @JurgenMolina Před 8 měsíci

    Bro se puede hacer un metodo que realice el login?

    • @unprogramadornace
      @unprogramadornace  Před 8 měsíci

      Hola, desde luego que si. Todo lo que quieras hacer se puede hacer por medio de la programación.
      ¡Saludos!

    • @JurgenMolina
      @JurgenMolina Před 8 měsíci

      @@unprogramadornace 🥺 no tendrás por ahí una guía ?

    • @unprogramadornace
      @unprogramadornace  Před 8 měsíci

      @@JurgenMolina Lastimosamente no. Estas son cosas que se suelen resolver con conocimiento del Framework o googleando ya que son cosas bien específicas.
      ¡Saludos!

  • @deepdiamond945
    @deepdiamond945 Před 9 měsíci

    Esta seguridad se puede integrar a jwt?

    • @unprogramadornace
      @unprogramadornace  Před 9 měsíci

      Si te fijas bien estamos usando JWT en el proyecto.
      ¡Saludos!

    • @user-dj3gr6od2z
      @user-dj3gr6od2z Před 9 měsíci

      ​@@unprogramadornace Si pero el problema es que en mi api ya tengo lo que me enseñaste en el video de jwtSecurityfilterchain , y mi aplicacion me genera un token para el login de jwt , y otro para el login de keycloak, y cuando quiero entrar a los endpoint de hello , mi seguridad choca con la otra , y me dice que el token no es correcto . Se puede tener las dos configuraciones tanto la del video de impementar spring security jwttt y oauth juntos? y como hago para que me reconozca el token de oauth el TestController ? basicamente me da este error 2023-11-08T11:06:08.288-03:00 ERROR 26288 --- [nio-8080-exec-1] c.t.TB.security.jwt.JwtUtils : Token invalido, error: The parsed JWT indicates it was signed with the 'RS256' signature algorithm, but the provided javax.crypto.spec.SecretKeySpec key may not be used to verify RS256 signatures. Because the specified key reflects a specific and expected algorithm, and the JWT does not reflect this algorithm, it is likely that the JWT was not expected and therefore should not be trusted. Another possibility is that the parser was provided the incorrect signature verification key, but this cannot be assumed for security reasons.
      gracias

    • @unprogramadornace
      @unprogramadornace  Před 9 měsíci

      @@user-dj3gr6od2z La verdad nunca lo he trabajado de esa manera, usualmente se le delega toda la seguridad a Keycloak o se implementa por si sola en el proyecto. Nunca lo he trabajado en conjunto. En ese caso no podría ayudarte.
      ¡Saludos!

    • @deepdiamond945
      @deepdiamond945 Před 9 měsíci

      Claro mi idea es que primero verifique la secret key de jwt y si falla que valla a la de oauth . Muchas gracias

  • @franciscooliva4352
    @franciscooliva4352 Před 6 měsíci

    vine buscando cobre y encontré oro

  • @Diemendozac
    @Diemendozac Před 9 měsíci

    Soy de Colombia también. Me gustaría donar por Nequi

    • @unprogramadornace
      @unprogramadornace  Před 9 měsíci

      Hola, muchas gracias por tu comentario.
      En la descripción de todos los vídeos de mi canal siempre hay un email de contacto. Si gustas puedes enviarme un email para contactarme.
      ¡Saludos!

  • @JohanEsteban
    @JohanEsteban Před 4 měsíci

    Hola parcero, muy buen video tutorial. Gracias.
    Había implementado Keycloak en Docker bajo stage de PROD, y este lleva certificado de SSL y por ende no me funcionaba desde Spring Boot si no se le indica la configuración con el respectivo certificado. Posteriormente implementé Keycloak en stage dev y este me funciona perfecto.
    @unprogramadornace ¿Alguna vez haz desplegado Keycloak en PROD usando SSL?

    • @unprogramadornace
      @unprogramadornace  Před 4 měsíci

      Hola, desearía poder ayudarte, pero no he tenido que manejar SSL con keycloak. Creo que tendrás que googlear la forma de implementarlo.
      Espero puedas solucionarlo.
      ¡Saludos!

  • @jonathanruizsilva
    @jonathanruizsilva Před 9 měsíci +1

    si les tira este error java.lang.NoSuchMethodError: 'org.jboss.resteasy.spi.ResteasyProviderFactory
    yo lo solucione removiendo esta dependencia 'org.jboss.resteasy:resteasy-jaxrs:3.15.6.Final'
    Espero les sirva saludos.

    • @marcelomedina93
      @marcelomedina93 Před 2 měsíci

      Me sirvio gracias

    • @Carloshdv
      @Carloshdv Před měsícem

      Al quitar esa dependencia, también quito la parte donde se usaba, es decir, en el método getRealmResource()???