brenoroosevelt / oauth2-govbr
Cliente OAuth2 para Gov.br
Installs: 7 599
Dependents: 0
Suggesters: 0
Security: 0
Stars: 18
Watchers: 1
Forks: 3
Open Issues: 0
Requires
- php: ^7.1 || ^8
- league/oauth2-client: ^2
Requires (Dev)
- laminas/laminas-diactoros: @stable
- laminas/laminas-httphandlerrunner: @stable
- middlewares/utils: ^2 || ^3
- middlewares/whoops: @stable
- mockery/mockery: ^1
- phpstan/phpstan: ^0.12.90
- phpunit/phpunit: ^6 || ^9
- squizlabs/php_codesniffer: 3.5.*
README
Este pacote fornece suporte OAuth 2.0 para Gov.br usando a biblioteca cliente do League PHP.
Requisitos
Versões suportadas do PHP:
- PHP 8.2
- PHP 8.1
- PHP 8.0
- PHP 7.4
- PHP 7.3
- PHP 7.2
- PHP 7.1
Instalação
Via composer:
composer require brenoroosevelt/oauth2-govbr
Exemplos de Uso
Criando uma instância do provider para GovBr em ambiente de produção:
use BrenoRoosevelt\OAuth2\Client\GovBr; $govBr = new GovBr([ 'clientId' => 'XXXXXXXX', // Client ID fornecido pelo GovBr 'clientSecret' => 'YYYYYYYY', // Senha fornecida pelo provedor GovBr 'redirectUri' => "https://seu-app-dominio.com.br/seu-login", // Url de redirecionamento 'redirectUriLogout' => "https://seu-app-dominio.com.br/seu-logout" ]);
Atenção! Os parâmetros clientId
e clientSecret
acima são sigilosos, evite enviar esses valores para seu repositório git; prefira obtê-los usando getenv(...)
.
Obtendo a url de autorização:
$urlAutorizacao = $govBr->getAuthorizationUrl(); $state = $this->govBr->getState(); // redirecionar o usuário para a url
Obtendo o token de acesso (Access Token):
$authorizationCode = $_GET['code']; $accessToken = $govBr->getAccessToken( new AuthorizationCode(), ['code' => $authorizationCode] );
Obtendo mais informações do usuário:
$govBrUser = $govBr->getResourceOwner($accessToken); $govBrUser->getName(); $govBrUser->getCpf(); $govBrUser->getAvatarUrl(); $govBrUser->getProfile(); $govBrUser->getPhoneNumber(); $govBrUser->phoneNumberVerified(); $govBrUser->getEmail(); $govBrUser->emailVerified(); // Obtendo o avatar do usuário $avatar = $govBr->getAvatar($govBrUser); if ($avatar !== null) { $avatar->image(); $avatar->imageBase64(); $avatar->mimeType(); $avatar->toHtml(['width' => 60]); }
Obtendo a url de logout:
$urlLogout = $govBr->getLogoutUrl(); // redirecionar
Ambiente de Homologação
Por padrão, o ambiente será de produção, mas você pode escolher o ambiente de homologação (staging) solicitando uma instância da seguinte forma:
<?php $govBr = GovBr::staging([ 'clientId' => 'XXXXXXXX', // Client ID fornecido pelo GovBr 'clientSecret' => 'YYYYYYYY', // Senha fornecida pelo provedor GovBr 'redirectUri' => "https://seu-app-dominio.com.br/seu-login", // Url de redirecionamento 'redirectUriLogout' => "https://seu-app-dominio.com.br/seu-logout" ]);
Além do provider para Gov.br, junto com este pacote fornecemos um exemplo para o fluxo Authorization Code aqui. Diponibilizamos também um servidor (containar docker) para que você possar executar esse fluxo em um ambiente de homolocação usando suas configuraçoes. Para isso, basta seguir as instruções desse ROTEIRO.
Contribuindo
Para contribuir com esse projeto, por favor veja nossas diretrizes.
Segurança
Se você descobrir qualquer problema relacionado à segurança, envie um e-mail em vez de abrir uma issue.
Licença
Este projeto está licenciado sob os termos da licença MIT. Consulte o arquivo LICENSE para entender os direitos e limitações.