Laravel 8 — Custom Api Auth, login de usuario con API externa
Como dice el título, haremos una autenticación de usuarios utilizando una API externa. Esta implementación se basa en la documentación oficial, no tiene nada extra aparte del framework y el ejemplo es válido para autenticar tanto por API como otra fuente externa.
Además, es super rápido y fácil. La secuencia final será esta :
Documentación base
Siempre es necesario saber lo que estamos implementando
Guard 📚 https://laravel.com/docs/8.x/authentication#adding-custom-guards
UserProvider 📚 https://laravel.com/docs/8.x/authentication#adding-custom-user-providers
Código
TokenGuard
No es parte de framework, este es el nuevo Guard que le dirá al Auth de Laravel cómo obtener el usuario autenticado y usará el nuevo Provider
TokenUserProvider
El proveedor implementa la manera en cómo validamos las credenciales del usuario, aquí se puede aplicar la lógica que nosotros queramos para validar.
En este ejemplo se utiliza una API externa llamada SSO (single sign on)
AuthServiceProvider
Este Provider es parte de Laravel. Lo que se debe hacer es extender de Auth para agregar nuestro nuevo Driver.
En este ejemplo el nuevo driver se llama SSO
Config Auth
También es parte del framework, aquí dentro del arreglo de Guards debemos bautizar al nuestro, lo que importa es el driver, ese debe ser el mismo que usemos en AuthServiceProvider para extender Auth.
Rutas de la Api
Debemos utilizar el middleware auth:sso
que corresponde a auth:{driver}
para proteger las rutas.
Eso es todo, ahora con un cliente http puedes probar tu API.