salexcarvalho / govbr-auth
Pacote Laravel para autenticação Gov.br (OIDC)
v1.3.0
2025-05-07 17:15 UTC
Requires
- php: >=7.4
- firebase/php-jwt: ^6.0
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0|^12.0
README
Pacote Laravel para autenticação via Gov.br usando OIDC (OpenID Connect).
📦 Requisitos
- PHP >= 7.4
- Laravel ^8.0 | ^9.0 | ^10.0
- Extensão OpenSSL ativada (para JWT)
- GuzzleHTTP
- Firebase PHP-JWT
🚀 Instalação
-
Adicione o repositório (caso esteja usando local via path) no
composer.json
da sua aplicação:"repositories": [ { "type": "path", "url": "vendor/salexcarvalho/govbr-auth" } ], "require": { "salexcarvalho/govbr-auth": "*" }
-
Execute:
composer require salexcarvalho/govbr-auth
-
Publique as configurações:
php artisan vendor:publish --tag=govbr-config
🔧 Configuração
Após publicar, edite o arquivo config/govbr.php
ou defina as variáveis no seu .env
:
GOVBR_CLIENT_ID= GOVBR_CLIENT_SECRET= GOVBR_REDIRECT_URI=https://seu-dominio.com/auth/govbr/callback GOVBR_AUTHZ_ENDPOINT=https://sso.acesso.gov.br/authorize GOVBR_TOKEN_ENDPOINT=https://sso.acesso.gov.br/token GOVBR_JWK_ENDPOINT=https://sso.acesso.gov.br/jwk
🚧 Rotas
O pacote carrega automaticamente as rotas no prefixo auth/govbr
. Você terá:
Método | URI | Nome da Rota | Descrição |
---|---|---|---|
GET | /auth/govbr/redirect |
govbr.login |
Redireciona para login Gov.br |
GET | /auth/govbr/callback |
govbr.callback |
Callback do Gov.br após autorização |
POST | /auth/govbr/logout |
govbr.logout |
Logout da sessão Gov.br |
🛡️ Protegendo Rotas
Para proteger rotas usando a sessão Gov.br, aplique o middleware:
Route::middleware('govbr.auth')->group(function () { Route::get('/dashboard', function () { // Acesso apenas para usuários autenticados via Gov.br }); });
🔄 Fluxo de Autenticação
- Usuário acessa
/auth/govbr/redirect
. - É redirecionado ao portal Gov.br para login.
- Após login, Gov.br retorna para
/auth/govbr/callback
com umcode
. - O pacote troca o
code
porid_token
eaccess_token
, valida o JWT via JWK e retorna as claims. - Cria/atualiza o usuário local e realiza
Auth::login($user)
.
🤝 Contribuição
- Dê um fork no repositório.
- Crie uma branch com a feature:
git checkout -b feature/nova-funcionalidade
. - Faça commit das suas alterações:
git commit -m 'Adiciona nova funcionalidade'
. - Envie para a branch:
git push origin feature/nova-funcionalidade
. - Abra um Pull Request.
📝 Licença
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.