PHPackages                             salexcarvalho/govbr-auth - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. salexcarvalho/govbr-auth

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

salexcarvalho/govbr-auth
========================

Pacote Laravel para autenticação Gov.br (OIDC)

v1.3.0(1y ago)02MITPHPPHP &gt;=7.4CI failing

Since May 7Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/salexcarvalho/GovBR_Auth)[ Packagist](https://packagist.org/packages/salexcarvalho/govbr-auth)[ RSS](/packages/salexcarvalho-govbr-auth/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (5)Used By (0)

GovBR Auth
==========

[](#govbr-auth)

[![Latest Version on Packagist](https://camo.githubusercontent.com/fafde059e5fb7c038ba1535ab314ba1c3af113565a0f279ee4c4290d589ee26c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f73616c657863617276616c686f2f676f7662722d617574682e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/salexcarvalho/govbr-auth)[![PHP Version](https://camo.githubusercontent.com/ad723b05ecaa3590072394a219c459a36559a19f6722ae4cd6ba26091db3123d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f73616c657863617276616c686f2f676f7662722d617574682e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/salexcarvalho/govbr-auth)[![Laravel](https://camo.githubusercontent.com/345def82e3743271d0333ef9624a5b25977f9fbe7ed41f3f8d35feb9f9e65607/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d382e782d2d31322e782d4646324432303f7374796c653d666c61742d737175617265266c6f676f3d6c61726176656c)](https://laravel.com)[![Tests](https://camo.githubusercontent.com/04615a8c888d88dd518f79f5356c9092bfb85a649adebdc55718fedfdec772e0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f73616c657863617276616c686f2f476f7642525f417574682f74657374732e796d6c3f6c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/salexcarvalho/GovBR_Auth/actions)[![License](https://camo.githubusercontent.com/ff591732ae6e880649e19eee5d29e48598e63e177a46e803b51e3f5f99693648/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f73616c657863617276616c686f2f476f7642525f417574683f7374796c653d666c61742d737175617265)](LICENSE)

Pacote Laravel para autenticação com o **[Gov.br](https://www.gov.br/pt-br/servicos/entrar-no-gov.br)** via protocolo **OpenID Connect (OIDC)**. Integre o login unificado do governo federal brasileiro em qualquer aplicação Laravel em minutos.

---

Sumário
-------

[](#sumário)

- [Requisitos](#-requisitos)
- [Instalação](#-instala%C3%A7%C3%A3o)
- [Configuração](#-configura%C3%A7%C3%A3o)
- [Rotas disponíveis](#-rotas-dispon%C3%ADveis)
- [Protegendo rotas](#-protegendo-rotas)
- [Modelo de usuário personalizado](#-modelo-de-usu%C3%A1rio-personalizado)
- [Tratamento de erros](#-tratamento-de-erros)
- [Fluxo de autenticação](#-fluxo-de-autentica%C3%A7%C3%A3o)
- [Testes](#-testes)
- [Contribuição](#-contribui%C3%A7%C3%A3o)
- [Changelog](#-changelog)
- [Licença](#-licen%C3%A7a)

---

📦 Requisitos
------------

[](#-requisitos)

DependênciaVersão mínimaPHP7.4Laravel8.x, 9.x, 10.x, 11.x ou 12.xExtensão OpenSSLqualquerGuzzleHTTP^7.0firebase/php-jwt^6.0---

🚀 Instalação
------------

[](#-instalação)

```
composer require salexcarvalho/govbr-auth
```

Publique o arquivo de configuração:

```
php artisan vendor:publish --tag=govbr-config
```

---

🔧 Configuração
--------------

[](#-configuração)

Defina as variáveis no seu `.env`:

```
GOVBR_CLIENT_ID=seu-client-id
GOVBR_CLIENT_SECRET=seu-client-secret
GOVBR_REDIRECT_URI=https://seu-dominio.com/auth/govbr/callback

# Endpoints do SSO Gov.br (produção)
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
```

> **Staging (homologação):** substitua `sso.acesso.gov.br` por `sso.staging.acesso.gov.br`.

Para obter credenciais, acesse o [Portal do Desenvolvedor Gov.br](https://www.gov.br/conecta/catalogo/).

---

🚧 Rotas disponíveis
-------------------

[](#-rotas-disponíveis)

O pacote registra automaticamente as seguintes rotas:

MétodoURINomeDescrição`GET``/auth/govbr/redirect``govbr.login`Redireciona o usuário para o portal Gov.br`GET``/auth/govbr/callback``govbr.callback`Recebe o código de autorização e autentica`POST``/auth/govbr/logout``govbr.logout`Encerra a sessão Gov.brInicie o login com:

```
Entrar com Gov.br
```

---

🛡️ Protegendo rotas
-------------------

[](#️-protegendo-rotas)

Use o middleware `govbr.auth` para restringir acesso a usuários autenticados via Gov.br:

```
Route::middleware('govbr.auth')->group(function () {
    Route::get('/dashboard', DashboardController::class);
});
```

---

👤 Modelo de usuário personalizado
---------------------------------

[](#-modelo-de-usuário-personalizado)

Por padrão, o pacote usa o modelo definido em `auth.providers.users.model`. Para sobrescrever, defina em `config/govbr.php` (ou via `.env`):

```
GOVBR_USER_MODEL=App\Models\Servidor
```

O modelo deve ter uma coluna `govbr_sub` (chave do usuário no Gov.br) e aceitar `name` e `email` como atributos preenchíveis:

```
// migration
$table->string('govbr_sub')->unique()->nullable();

// Model
protected $fillable = ['name', 'email', 'govbr_sub'];
```

---

⚠️ Tratamento de erros
----------------------

[](#️-tratamento-de-erros)

O pacote lança `GovBrAuthException` em situações de erro. Registre um handler no seu `app/Exceptions/Handler.php` para apresentar uma resposta amigável ao usuário:

```
use Salexcarvalho\GovBrAuth\Exceptions\GovBrAuthException;

public function register(): void
{
    $this->renderable(function (GovBrAuthException $e) {
        return redirect()->route('login')
            ->withErrors(['govbr' => 'Não foi possível autenticar via Gov.br. Tente novamente.']);
    });
}
```

Situações que disparam a exceção:

SituaçãoMensagemRecusa de autorização pelo usuário`Erro de autorização Gov.br: access_denied`Parâmetro `state` inválido (CSRF)`Parâmetro state inválido.`Código de autorização ausente`Código de autorização não recebido.`Falha de rede no endpoint de token`Falha ao comunicar com o endpoint de token do Gov.br``id_token` ausente na resposta`Resposta do token inválida: id_token ausente.`JWT inválido ou expirado`Falha na validação do id_token`---

🔄 Fluxo de autenticação
-----------------------

[](#-fluxo-de-autenticação)

 ```
sequenceDiagram
    participant U as Usuário
    participant A as Aplicação Laravel
    participant G as Gov.br SSO

    U->>A: GET /auth/govbr/redirect
    A->>A: Gera state aleatório e armazena na sessão
    A-->>U: 302 → Gov.br (?state=...&client_id=...)
    U->>G: Autentica com CPF/senha ou certificado
    G-->>U: 302 → /auth/govbr/callback?code=...&state=...
    U->>A: GET /auth/govbr/callback
    A->>A: Valida state (proteção CSRF)
    A->>G: POST /token (troca code por tokens)
    G-->>A: id_token + access_token
    A->>G: GET /jwk (chaves públicas — cache 24h)
    G-->>A: JWKs
    A->>A: Valida assinatura JWT (RS256)
    A->>A: Cria ou atualiza User local
    A-->>U: 302 → / (autenticado)
```

      Loading ---

🧪 Testes
--------

[](#-testes)

```
composer test
```

Para gerar relatório de cobertura:

```
composer test:coverage
```

---

🤝 Contribuição
--------------

[](#-contribuição)

Contribuições são bem-vindas! Por favor, leia o [CONTRIBUTING.md](CONTRIBUTING.md) antes de abrir um Pull Request.

1. Faça um fork do repositório
2. Crie sua branch: `git checkout -b feature/minha-feature`
3. Commit: `git commit -m 'feat: adiciona minha feature'`
4. Push: `git push origin feature/minha-feature`
5. Abra um Pull Request

---

📋 Changelog
-----------

[](#-changelog)

Veja o [CHANGELOG.md](CHANGELOG.md) para o histórico de mudanças.

---

📝 Licença
---------

[](#-licença)

MIT — veja o arquivo [LICENSE](LICENSE) para mais detalhes.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance73

Regular maintenance activity

Popularity2

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

370d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f29de7bc9154085151043d6d9174401ee780bc93e9c00379613754b3f1e42be9?d=identicon)[salexcarvalho](/maintainers/salexcarvalho)

---

Top Contributors

[![salexcarvalho](https://avatars.githubusercontent.com/u/65230046?v=4)](https://github.com/salexcarvalho "salexcarvalho (9 commits)")

### Embed Badge

![Health badge](/badges/salexcarvalho-govbr-auth/health.svg)

```
[![Health](https://phpackages.com/badges/salexcarvalho-govbr-auth/health.svg)](https://phpackages.com/packages/salexcarvalho-govbr-auth)
```

###  Alternatives

[google/auth

Google Auth Library for PHP

1.4k272.7M162](/packages/google-auth)[josiasmontag/laravel-recaptchav3

Recaptcha V3 for Laravel package

2641.6M2](/packages/josiasmontag-laravel-recaptchav3)[ellaisys/aws-cognito

AWS Cognito package that allows Auth and other related features using the AWS SDK for PHP

120220.7k1](/packages/ellaisys-aws-cognito)[rahul900day/laravel-captcha

Different types of Captcha implementation for Laravel Application.

10715.9k](/packages/rahul900day-laravel-captcha)[clerkinc/backend-php

2755.0k](/packages/clerkinc-backend-php)[kinde-oss/kinde-auth-php

Kinde PHP SDK for authentication

2369.5k3](/packages/kinde-oss-kinde-auth-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
