andradedaniel / jwt-auth-consumer
Pacote Laravel para validar JWTs em serviços consumidores
Package info
github.com/andradedaniel/jwt-auth-consumer
pkg:composer/andradedaniel/jwt-auth-consumer
Requires
- php: ^8.2
- firebase/php-jwt: ^7.0
- illuminate/auth: ^11.0|^12.0|^13.0
- illuminate/http: ^11.0|^12.0|^13.0
- illuminate/routing: ^11.0|^12.0|^13.0
- illuminate/support: ^11.0|^12.0|^13.0
Requires (Dev)
- laravel/pint: ^1.24.0
- orchestra/testbench: ^9.0|^10.0
- peckphp/peck: ^0.1.3
- pestphp/pest: ^4.1.0
- pestphp/pest-plugin-type-coverage: ^4.0.2
- phpstan/phpstan: ^2.1.26
- rector/rector: ^2.1.7
- symfony/var-dumper: ^7.3.3
README
Pacote Laravel para validar JWTs emitidos por um serviço central de autenticação e disponibilizar o usuário autenticado no contexto de aplicações consumidoras.
Compatibilidade: Laravel 11.x, 12.x e 13.x | PHP 8.2+
Instalação
Instale o pacote diretamente do Packagist via Composer (recomendado fixar a versão principal):
composer require andradedaniel/jwt-auth-consumer:^1.0
Publicação da configuração
php artisan vendor:publish --tag=config --provider="SpunetGestao\JwtAuthConsumer\JwtAuthConsumerServiceProvider"
Isso criará o arquivo config/jwt-auth-consumer.php.
Variáveis de ambiente
Adicione no .env do projeto:
JWT_SHARED_SECRET=segredo-compartilhado-com-pelo-menos-32-bytes
JWT_ALGO=HS256
JWT_LEEWAY=60
JWT_LEEWAY define, em segundos, a tolerância para diferenças de relógio entre emissores e consumidores do token (ajuda a evitar falhas de validação por pequenos desvios de tempo).
Com HS256, o JWT_SHARED_SECRET precisa ter pelo menos 32 bytes (256 bits). Segredos menores fazem a validação falhar com erro de chave curta demais (Provided key is too short).
Uso
Proteja rotas com o middleware fornecido:
Route::middleware('jwt.auth')->group(function () { Route::get('/relatorios', ReportController::class); });
Controle fino por permissões com o middleware access-control:
Route::get('/atendimento', AtendimentoController::class) ->middleware(['jwt.auth', 'access-control:ATENDIMENTO_CRIAR_PRESENCIAL|ATENDIMENTO_CRIAR_TELEFONICO']);
O middleware verifica se o usuário autenticado possui ao menos uma das permissões informadas (separadas por pipe).
Dentro dos controladores, o usuário autenticado está disponível:
$user = $request->user(); // instância de SpunetGestao\JwtAuthConsumer\Auth\JwtUser
Observações
- O pacote apenas valida e consome tokens JWT; ele não emite tokens.
- Os dados do usuário são derivados das claims do token e não são persistidos em banco.
- O emissor e os consumidores devem usar o mesmo segredo, com tamanho compatível com o algoritmo (mínimo de 32 bytes para
HS256).