clicko-informatica-sistemas-passport-laravel

Si eres lector de nuestro blog seguro que ya conoces Laravel, nuestro framework de PHP preferido para crear nuestras aplicaciones y servicios webs. En este blog voy a poner en práctica y a explicar un poco el uso de Laravel Passport, que no es más que un paquete de Laravel (oficial) para integrar fácilmente un servidor OAuth 2 a tu aplicación para la autorización de forma limitada de un TERCERO a un recurso HTTP.  Si aún no conoces el protocolo Oauth2, pásate por esta entrada

Tradicionalmente, instalar y configurar un paquete de OAuth 2, o implementarlo manualmente, ha sido siempre un verdadero dolor de cabeza. Pero por suerte Taylor Otwell, creador de Laravel, preparó para la versión de Laravel 5.3, un paquete independiente que permite integrar rápidamente las funcionalidades de OAuth en nuestra aplicación con una implementación completa del protocolo OAuth2 para su aplicación en Laravel en cuestión de minutos.

Laravel ya facilita la autenticación mediante los formularios de inicio de sesión tradicionales, pero ¿qué pasa con las API? Las API normalmente usan tokens para autenticar a los usuarios y no mantienen el estado de la sesión entre las solicitudes. Aquí es donde entra en acción Laravel Passport.

Integrando Laravel Passport en nuestra aplicación

Para empezar, Passport es un paquete externo al core del framework, por lo que debemos requerirlo con Composer:

composer require laravel/Passport

Una vez que ha terminado de instalarse, debemos agregarlo a nuestro archivo app.php como un ServiceProvider:

Laravel\Passport\PassportServiceProvider::class,

Ahora ya podremos realizar la migración, que contiene las tablas necesarias para generar clientes, tokens y demás.

php artisan migrate

Luego, tenemos que utilizar el siguiente comando para que Passport genere dos claves RSA que utilizará para encriptar nuestros tokens, y además creará dos clientes nuevos, uno para Personal Access Tokens y otro para Password Grants.

php artisan passport:install

Si vamos a crear tokens para aplicaciones propias (first-party), hasta aquí está bien, pero si queremos realizar algo parecido a, por ejemplo Github, donde nuestros usuarios pueden registrar aplicaciones y que esas aplicaciones se conecten con la nuestra, necesitamos generar clientes nuevos asociados con esos usuarios.

Para que los usuarios de tu aplicación puedan solicitar tokens, tienes que agregarle el Trait HasApiTokens al Model para que quede así:

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

Después, tenemos que agregar a nuestro AuthServiceProvider el siguiente método para registrar las rutas de Passport:

public function boot()
{
     $this->registerPolicies();
     Passport::routes();
}

Por último, tenemos que determinar en nuestro archivo session.php que utilizaremos el driver de Passport para las sesiones de nuestro API:

'api' => [
       'driver' => 'passport',
       'provider' => 'users',
],

Con eso ya queda configurado nuestro servidor para recibir peticiones de acceso a aplicaciones con OAuth2 y entregar tokens de acceso a estas.

Passport además propone una implementación opcional de frontend en Vue.js con componentes que permiten visualizar, consumir y generar clientes OAuth. Puedes utilizarlas o puedes crear tus propias vistas que conecten con el backend.

Con esto el equipo de programación de CLiCKO hemos terminado la primera parte. En las próximas publicaciones añadiremos funcionalidades y veremos como consumir datos de nuestra API protegida con Laravel Passport y el protocolo Oauth2.

Facebook
Facebook
Twitter
Visit Us
LinkedIn