A autenticação de APIs desempenha um papel crucial no desenvolvimento de aplicações modernas. O Laravel Sanctum surge como uma solução elegante para simplificar o processo de autenticação em aplicações Laravel que necessitam de APIs seguras. Neste artigo, vamos explorar o Laravel Sanctum, entender como ele funciona e como pode aprimorar a segurança e a usabilidade das suas aplicações Laravel.
O que é Laravel Sanctum? Uma Visão Geral:
1. Autenticação Simplificada:
O Laravel Sanctum é um pacote oficial do Laravel projetado para simplificar a implementação de autenticação API, fornecendo uma abordagem mais leve e flexível, especialmente para aplicações web SPA (Single Page Application) e mobile.
2. Tokens de Acesso:
O Sanctum utiliza tokens de acesso para autenticar usuários, permitindo que eles acessem recursos protegidos de sua aplicação.
Instalação e Configuração: Descomplicando o Setup:
1. Instalação via Composer:
A instalação do Laravel Sanctum é rápida e simples, realizada via Composer.
composer require laravel/sanctum
2. Configuração:
Após a instalação, publique as configurações e execute as migrações para criar as tabelas necessárias no banco de dados.
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
3. Configuração Adicional (Opcional):
Personalize as configurações do Sanctum no arquivo config/sanctum.php conforme as necessidades específicas da sua aplicação.
Emissão de Tokens e Rotas Protegidas:
1. Emissão de Tokens:
O Sanctum oferece uma variedade de métodos para emitir tokens de acesso, incluindo tokens de sessão e tokens de API.
use Laravel\Sanctum\HasApiTokens;
class Usuario extends Authenticatable
{
use HasApiTokens, Notifiable;
}
2. Protegendo Rotas:
Utilize o middleware auth:sanctum para proteger rotas que requerem autenticação.
Route::middleware('auth:sanctum')->get('/recurso-protegido', function () {
// Lógica da rota protegida
});
Tokens de Sessão e Autenticação SPA:
1. Tokens de Sessão:
O Sanctum suporta tokens de sessão, permitindo que você use a mesma lógica de autenticação para aplicativos web tradicionais e SPAs.
2. Autenticação SPA:
Para autenticação SPA, o Sanctum oferece uma API leve e fácil de usar que simplifica a autenticação via JavaScript.
axios.post('/login', {
email: 'exemplo@email.com',
password: 'senha',
device_name: 'nome-do-dispositivo',
}).then(response => {
console.log(response.data);
});
Revogação de Tokens: Mantendo a Segurança:
1. Revogação Manual:
O Sanctum permite revogar tokens manualmente através de uma rota dedicada.
use Laravel\Sanctum\Sanctum;
Sanctum::revokeTokens($usuario);
2. Limpeza Automática (Opcional):
Configure a limpeza automática de tokens expirados no arquivo config/sanctum.php para manter o banco de dados organizado.
Verificação de Tokens e Middleware:
1. Middleware de Verificação:
Utilize o middleware EnsureFrontendRequestsAreStateful para verificar automaticamente a presença do cookie de sessão ao receber solicitações AJAX no Laravel.
1. Middleware de Verificação:
// Exemplo de uso do middleware no Kernel.php
'api' => [
EnsureFrontendRequestsAreStateful::class,
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
2. Verificação de Token no Frontend:
Ao fazer solicitações no frontend, inclua o token de acesso no cabeçalho para autenticação.
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
Proteção Contra CSRF: Segurança em Primeiro Lugar:
1. Configuração Automática:
O Sanctum realiza a configuração automática da proteção CSRF para garantir a segurança contra ataques CSRF.
2. Verificação CSRF no Frontend:
Ao realizar solicitações no frontend, o Sanctum inclui automaticamente o token CSRF no cabeçalho.
axios.defaults.headers.common['X-CSRF-TOKEN'] = document.head.querySelector('meta[name="csrf-token"]').content;
Conclusão:
O Laravel Sanctum emerge como uma ferramenta valiosa para simplificar e aprimorar a autenticação API em aplicações Laravel, especialmente aquelas que envolvem SPAs e aplicativos mobile. Ao integrar o Sanctum em seu projeto, você pode garantir uma autenticação segura e eficiente, mantendo a flexibilidade necessária para diferentes tipos de aplicativos. Experimente incorporar o Laravel Sanctum em suas próximas aplicações e aproveite seus benefícios para um processo de autenticação simplificado e seguro.