Comunicación Segura entre Proyectos Laravel con JWT
Desbloquea el curso
Contrata un plan y consigue acceso completo o compra el curso por 20,00 € y accede a él para siempre
Crea tu cuenta¿Ya tienes una cuenta? Inicia sesión
JWT en Laravel
JWT es un estándar de la comunicación HTTP entre servidor y clientes, por ejemplo, es muy utilizado para la comunicación segura entre aplicaciones móviles y APIs. En Cursosdesarrolloweb hemos trabajado muchas veces con JWT, con Laravel y Symfony
En Laravel tenemos Laravel Passport, una herramienta que funciona muy bien para la autenticación API, pero puede no ser la solución si lo que buscamos es poder trabajar con múltiples sistemas de autenticación, JWT, API Tokens, Basic, por este motivo, en este curso quiero ofrecerte una solución completa y personalizada para atender cualquier caso que requiera de la comunicación y consumo de API con Laravel.
Este curso ofrece un enfoque diferente, no vamos a comunicar cliente y servidor como otras veces, sino que vamos a comunicar servidor y servidor, bueno, realmente será un cliente, pero no, me explico.
API, generando JWT en Laravel
El primer proyecto será una API con Laravel a la que añadiremos el sistema de autenticación JWT, básicamente los métodos de login y logout. El método de login retornará un access token válido durante 60 segundos (ideal para desarrollo), el método logout invalidará el token.
Cuando un token haya expirado, en lugar de utilizar la técnica de refresh token, simplemente crearemos uno nuevo y se lo retornaremos al cliente, es algo que funciona bien y es muy fácil de implementar.
Una vez cualquiera se identifique en la API, podrá consumir otros recursos, en este caso trabajaremos con una tabla de colores, retornando el nombre y sus representaciones hexadecimal y RGB. Para ello expondremos 3 endpoints adicionales que estarán protegidos por la autenticación JWT: obtener colores, obtener un color y crear color.
Este será el desarrollo de nuestra maravillosa API.
CLIENTE, comunicación segura con JWT
Este será un cliente de la API de Hexanet, pero podríamos crear muchos más clientes que podrían consumir esa API.
Debemos entender que todas las comunicaciones desde el cliente a la API las haremos haciendo uso de peticiones HTTP.
Lo primero que haremos será crear una arquitectura sólida que nos permita no sólo consumir un cliente como Hexanet, sino cualquier otro cliente, y no sólo con JWT, sino con cualquier otro sistema de autenticación. Para ello, almacenaremos en base de datos la configuración de cada cliente API con su nombre, URL y credenciales, incluyendo el JWT que obtengamos cada vez. También crearemos un contrato para los clientes que deban implementar la lógica de JWT, login, logout y tokenIsValid.
Una vez tengamos la configuración base de nuestro cliente, desarrollaremos cada nuevo cliente, en nuestro caso un servicio Hexanet, el cual tendrá la configuración HTTP necesaria para comunicarse con la API de Hexanet haciendo uso de las credenciales que nos han entregado.
Ya que vamos a trabajar con JWT, deberemos implementar el contrato JWT, login, logout y tookenIsValid. Esto lo podríamos extrapolar fácilmente a otros sistemas de autenticación, pero nuestro caso será JWT. Nuestro servicio Hexanet, además de hacer uso de la autenticación JWT, también tendrá métodos que consuman la API de Hexanet, getColors, getColor, y createColor.
Para cada tipo de endpoint: auth, color, guardaremos los posibles errores que aparezcan en logs personalizados diariamente durante 14 días, de esta forma podremos ver de forma ordenada si hemos tenidos errores en los últimos días e ir resolviendo posibles problemas en nuestro software.
Otra cosa interesante que añadiremos será un HealthCheck, que no es nada más y nada menos que una petición head a la API de Hexanet para saber si la API está funcionando, esto sería algo que podríamos consultar varias veces al día para saber si todo están en orden en la API que estamos consumiendo.
El cliente no ha finalizado, todavía queda mucho por hacer. El próximo paso es desarrollar un servicio que sea capaz de resolver el Provider (API) que deseamos consumir, en nuestro caso siempre será Hexanet, pero podríamos tener decenas, incluso miles :P. Para solucionar esto, crearemos un servicio al que llamaremos ApiProvider, el cual simplemente recibirá en el constructor el nombre del cliente. Con este dato, podremos resolver las credenciales y generar la instancia del servicio HTTP, en nuestro caso Hexanet, pero podría ser cualquier otro.
El paso siguiente será ver cómo consumir la API de Hexanet desde nuestro proyecto, y para seguir añadiendo nuevas herramientas a nuestro stack como desarrolladores Laravel, haremos uso de los comandos que nos ofrece, que son fáciles y potentes. El primer paso será añadir un nuevo directorio dentro de app/Console/Commands llamado Hexanet, aquí iremos dejando todos los comandos que deseemos utilizar, y algo más...
Para cada cliente, se me ocurre que en el directorio correspondiente de comandos, podemos crear un trait llamado WithProvider, el cual pueda ser utilizado por cada comando para resolver de forma automática el proveedor a utilizar, Hexanet por ejemplo :P.
Llegados a este punto, sólo nos quedará por desarrollar el resto de comandos para obtener los recursos de Hexanet de forma segura con JWT, esta será sin duda la parte más sencilla, pero también la que más ansiamos, sin duda es una de las metas del curso, pero para llegar hasta aquí primero debemos hacer muchas cosas que son realmente necesarias.
Esto es lo que vamos a estar desarrollando, 2 proyectos paso a paso para la Comunicación Segura entre Proyectos Laravel con JWT fácilmente extrapolable a otros sistemas de autenticación. Si te interesa este tema y quieres aprender a desarrollar este tipo de sistemas únicamente con lo que Laravel nos ofrece, no lo dudes, suscríbete a la plataforma y empieza el curso ahora, no te arrepentirás. ¡Nos vemos dentro!
Los planes de suscripción trimestral y anual incluyen soporte a través del foro del curso.
Si compras o has comprado el curso, también puedes hacer uso del soporte a través del foro del curso.
Las dudas que se planteen en el foro del curso serán respondidas en un plazo máximo de 24 horas laborables.
Las dudas planteadas deben estar relacionadas con el contenido del curso y no con desarrollos personalizados que no estén relacionados con el curso.
Acerca del autor
Desarrollador con 10 años de experiencia en web y móvil y formador con 7 años de experiencia.
Empecé en el mundo de la programación a raíz de un accidente de trabajo y me tuve que reinventar.
Soy autodidacta, me dedico de forma profesional a desarrollar software y cada día aprendo cosas nuevas.
Apasionado del backend, me encanta todo lo que tiene que ver con procesos y lógica.
Me encanta programar, pero todavía más ayudar a otras personas en su proceso de formación.
1 valoraciones
El mundo de la API no la veía tan fácil hasta que realice este curso