Pular para o conteúdo principal

Login Único - SSO

Login Gov.pi

🏁 Introdução

Todo usuário do sistema precisa de um Login e Senha que venha ser acessado de forma segura, onde o cidadão cadastrado seja ele mesmo, com seu devido CPF, e seu cadastro seja validado para evitar fraudes. A integração com o GOVBR traz essa segurança, com uma base de dados de 250 milhões de registros, incluindo brasileiros, estrangeiros e falecidos, utilizando a base cadastral de pessoas físicas da Receita Federal - CPF.

O Decreto nº 8.936, de 19 de dezembro de 2016, instituiu o mecanismo de acesso digital único, conhecido como Plataforma de Autenticação Digital do Cidadão ou Login Único. Essa iniciativa visa resolver problemas como duplicidade e inconsistência de informações, falta de integração e diversas formas de autenticação enfrentadas por cidadãos ao tentar acessar serviços públicos digitais.

A plataforma foi desenvolvida pelo Ministério da Economia (ME) em parceria com o Serpro, e tem como objetivo facilitar a identificação e autenticação dos cidadãos, garantindo uma governança mais eficiente e um controle de acesso unificado.

🔧 Integração com o Login Gov.pi - Como Funciona

O Login Gov.pi é baseado no Keycloak, uma ferramenta que faz a autenticação e autorização dos usuários. Através da integração com o Login Gov.pi, outros sistemas podem acessar os dados de um usuário logado, bem como seus grupos de acesso. A integração é feita pelo padrão OAuth2.0, da mesma forma que ocorre com o login do Google, Facebook, etc.

Passos para a Integração

Para que uma nova aplicação possa integrar com o Login Gov.pi, é necessário criar um client no Keycloak exclusivo para a aplicação. Cada aplicação possui um client exclusivo para cada ambiente: DEV, HOMOL e PROD.

Após a criação do client, deve-se implementar a integração na aplicação. Para isso, disponibilizamos um projeto de exemplo em ReactJS, mas outras tecnologias também podem ser utilizadas. O projeto de exemplo já vem com um client configurado, que pode ser utilizado para testes até que o client definitivo da aplicação seja criado.

Projeto de Exemplo

Para facilitar a integração com novas aplicações, disponibilizamos um projeto de exemplo em ReactJS. Outras tecnologias também podem ser utilizadas para integração.

Instalação do Projeto

Para instalar e executar o projeto de exemplo, siga os passos abaixo:

  1. Baixe o arquivo zip do projeto e descompacte.
  2. No terminal:
bun install
bun run dev

Dependências

  • Node.js ≥ 16.20.0 (sugestão: nvm install v16.20.0)
  • Bun Runtime: https://bun.sh
Como Funciona

O projeto contém uma página com AuthContext:

  • Não autenticado → redireciona para o Login Gov.pi.
  • Após login → retorna autenticado com dados disponíveis.
Variáveis de Ambiente
VITE_KEYCLOAK_URL=https://your-keycloak-url
VITE_KEYCLOAK_CLIENT_ID=your-client-id
VITE_KEYCLOAK_REALM=your-realm

Dentro do projeto de exemplo, no arquivo .env, algumas variáveis são utilizadas para realizar a integração. A única variável que precisa ser alterada é o client_id, que deve ser solicitada especificamente para a nova aplicação pelo email de suporte ou pelo GLPI.

Com o client_id de exemplo, o projeto já funciona normalmente e pode ser utilizado para testes até que o client definitivo seja criado.

URLs por Ambiente

  • DEV: URL do ambiente de desenvolvimento
  • PROD: URL do ambiente de produção

OBS: Entre em contato com o pessoal do ambiente de homologação para ter acesso à um cliente funcional.

Exemplo de Objeto userInfo

A lib keycloak-js já possui uma abstração para obter os dados do endpoint userInfo. Basta usar as propriedades existentes.

{
"sub": "12345678-1234-1234-1234-123456789012",
"email_verified": true,
"roles": [
"default-roles-pi",
"offline_access",
"uma_authorization",
"silver"
],
"groups": [],
"preferred_username": "12345678901",
"given_name": "JOÃO",
"veiculos": {},
"name": "JOÃO SILVA",
"cnh": {},
"dataNascimento": "01/01/1990",
"family_name": "SILVA",
"email": "joao.silva@example.com",
"nomeMae": "MARIA SILVA",
"nomeCompleto": "JOÃO SILVA"
}

Os dados retornados pelo userInfo dependem das informações cadastradas pelo usuário no Login Gov.pi. Alguns usuários podem ter mais ou menos informações.

📞 Suporte

Em caso de dúvidas ou problemas durante a integração, entre em contato com a equipe de suporte da etipi pelo email suporte.conecta@etipi.pi.gov.br ou pelo GLPI.