Skip to main content

Qué es Passport

Laravel Passport es el paquete oficial para hacer que una aplicación Laravel funcione como servidor de autorización OAuth2. Se utiliza en integraciones con aplicaciones de terceros y en APIs que requieren el flujo OAuth2 estricto.

Passport vs Sanctum

Si necesitas obligatoriamente OAuth2, elige Passport. Si tu objetivo es una autenticación con tokens de API sencilla o autenticación SPA/móvil, elige Sanctum.
Cuando construyas un servidor MCP al que accedan clientes de IA, oficialmente se recomienda usar Passport. Los clientes MCP habitualmente asumen autenticación con OAuth.

Instalación

La recomendación oficial en Laravel 13 es install:api --passport.
Si vas a introducirlo manualmente en un proyecto existente, también puedes configurarlo con los siguientes comandos.
En el primer despliegue puede que solo necesites generar las claves.

Configuración

Modelo User

Añade el trait HasApiTokens y la interfaz OAuthenticatable al modelo User.

Guard de auth

En el guard api de config/auth.php usa el driver passport.

Configuración del service provider

En el boot() de AppServiceProvider puedes definir los scopes y la caducidad de los tokens.

Gestión de clientes

Cliente para authorization code grant

Este cliente se usa en el flujo estándar de OAuth2 con pantalla de consentimiento del usuario.

Cliente para client credentials grant

En endpoints de comunicación máquina a máquina, utiliza el middleware EnsureClientIsResourceOwner.

Gestión de tokens

Asignar scopes

Comprobar scopes

Revocar

Proteger rutas de API

Añade auth:api a las APIs que quieras proteger con tokens de acceso de usuario.
Para las rutas con client credentials grant no uses auth:api, sino EnsureClientIsResourceOwner.

Personal Access Token

Sin usar el flujo completo de OAuth2, es apto para casos en los que el propio usuario emite un token de API.
Si tu uso principal son los Personal Access Tokens, la propia documentación oficial de Laravel recomienda valorar Sanctum.

Enlaces relacionados

Última modificación el 2 de agosto de 2026