Laravel Sanctum vs. Laravel Passport: Qual Escolher para sua API?
Laravel Sanctum vs. Laravel Passport: Qual Escolher para sua API?

Laravel Sanctum vs Laravel Passport: Qual usar para sua API

Ao desenvolver uma API com Laravel, surge a dúvida: Laravel Sanctum ou Laravel Passport? Ambos são soluções poderosas para autenticação, mas atendem a necessidades diferentes. Neste artigo, vamos explorar as características de cada um para ajudá-lo a escolher a melhor opção para o seu projeto.


1. O que é Laravel Sanctum?

Laravel Sanctum é uma solução leve para autenticação de APIs e Single Page Applications (SPAs). Ele fornece autenticação via tokens pessoais e cookies de sessão, sendo ideal para:

  • APIs simples sem OAuth;
  • Aplicações frontend que consomem uma API Laravel;
  • Autenticação baseada em cookies para SPAs;
  • Proteção de rotas para usuários autenticados;
  • Controle de permissões simplificado.

Como instalar o Laravel Sanctum

composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate

Adicione o middleware ao Kernel.php:

protected $middlewareGroups = [
    'api' => [
        \App\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
        'throttle:api',
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],
];

No modelo User.php, adicione:

use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable {
    use HasApiTokens, Notifiable;
}

Agora, podemos gerar tokens:

$token = $user->createToken('TokenName')->plainTextToken;

2. O que é Laravel Passport?

Laravel Passport é uma implementação completa do OAuth2, ideal para aplicações que precisam de autenticação robusta e integração com terceiros.

Ele é indicado para:

  • Aplicações que exigem OAuth 2.0;
  • APIs públicas ou de grande escala;
  • Autenticação via JWT;
  • Controle avançado de escopos e permissões de usuário.

Como instalar o Laravel Passport

composer require laravel/passport
php artisan migrate
php artisan passport:install

Registre o Passport::routes() no AuthServiceProvider.php:

use Laravel\Passport\Passport;
public function boot()
{
    Passport::routes();
}

No modelo User.php, adicione:

use Laravel\Passport\HasApiTokens;
class User extends Authenticatable {
    use HasApiTokens, Notifiable;
}

Agora, para autenticação via OAuth:

POST /oauth/token

3. Comparação: Sanctum vs. Passport

RecursoLaravel SanctumLaravel Passport
Autenticação via Token Pessoal✅ Sim✅ Sim
Autenticação via OAuth 2.0❌ Não✅ Sim
Ideal para APIs Simples✅ Sim❌ Não
Integração com Terceiros❌ Não✅ Sim
Autenticação via Cookies✅ Sim❌ Não
Uso de JWT❌ Não✅ Sim
Controle Avançado de Escopos❌ Não✅ Sim

4. Quando usar cada um?

Use Laravel Sanctum se:

  • Sua API será consumida por um frontend próprio (React, Vue, etc.).
  • Você precisa de autenticação baseada em tokens simples.
  • Quer uma solução leve e rápida.
  • Não precisa de OAuth 2.0.

Use Laravel Passport se:

  • Sua API será acessada por terceiros.
  • Precisa de OAuth 2.0 e controle avançado de permissões.
  • Quer suporte a autenticação JWT.
  • Sua aplicação exige escopos e tokens de longa duração.

5. Conclusão e Próximos Passos

A escolha entre Sanctum e Passport depende das necessidades da sua aplicação. Se precisa de uma autenticação simples e eficiente, vá de Sanctum. Se precisa de OAuth e autenticação avançada, escolha Passport.

🔍 Quer aprender mais sobre segurança e autenticação em Laravel? Explore nossa biblioteca de conteúdos e domine o desenvolvimento de APIs seguras e escaláveis.

📢 Agora é sua vez! Qual solução você prefere usar em seus projetos Laravel? Deixe um comentário abaixo ou compartilhe este artigo com sua equipe!