Data de elaboração | 01/09/2021 |
Responsável pelo estudo | Rafael Passos dos Santos (Assessor) |
Equipe do estudo | Gustavo Felix Gomes (Assessor)
Rafael Passos dos Santos (Assessor) André Honório de Andrade Silva (Tecnico) Emanuel Rufino Alcantara de Lima (Analista) Lucas de Souza e Sousa (Estagiario) Euriane Nogueira (Product Owner) |
Alvo | Portal do Cidadão |
Origem | Como integrar Portal do Cidadão com o gov.br |
Objetivo | Ter informações mais claras de como integrar Portal do Cidadão com a autenticação do gov.br, assim como saber se é possível buscarmos os dados do cidadão, e se buscar, quais são os dados, conforme a User Story: “Eu como vingadores, preciso realizar um estudo de caso de como integrar com o gov.br" presente na Sprint número 81 do time Vingadores. |
Documentação correlata | -/- |
Observações | Este estudo serve como um passo a passo de uma possivel forma de realizar a integração Portal do Cidadão com o gov.br |
Diante do Decreto n° 8.936, de 19 de dezembro de 2016, o mecanismo de acesso digital único foi concebido. o conceito da Plataforma de Autenticação Digital do Cidadão, o projeto Login Único, tendo, como destaque o mecanismo de acesso digital único.
Dentro deste contexto, podemos destacar as diversas dificuldades com múltiplas contas de acesso sob responsabilidade do cidadão e variados bancos de dados cadastrais, tais como a duplicidade e inconsistência de informações, falta de integração, dados dispersos e diversas formas de autenticação. Problemas enfrentados por cidadãos ao tentar consumir um serviço público digital oferecido pelo governo federal. Analisando essas dificuldades, o Ministério da Economia (ME), em parceria com o Serviço Federal de Processamento de Dados (Serpro), disponibilizou a plataforma central de autenticação digital do cidadão, o Login Único.
Essa é a nova proposta do Governo federal, para facilitar a identificação e autenticação do cidadão, privilegiando a governança e a convergência autoritativa, e finalmente o controle de acesso unificado. A Plataforma de Cidadania Digital chega para ampliar e simplificar o acesso dos cidadãos brasileiros aos serviços públicos digitais, inclusive por meio de dispositivos móveis.
Este documento é o elemento para orientar a integração da Plataforma de Autenticação Digital do Cidadão – Login Único a qualquer ambiente. A partir de agora, será feita uma revisão sobre a arquitetura de serviço e alguns conceitos utilizados pela Plataforma, além de uma explicação sobre procedimentos administrativos essenciais para autorizar o acesso à Plataforma.
Este documento contém as formas de chamadas a operações, parâmetros e métodos de integração, e, por último, os procedimentos para permitir a conectividade entre os ambientes de implantação.
Conceitos
São conjuntos de informações fornecidos a quem possui autorização.
Os escopos com atributos estão disponíveis no Login Único?
As funcionalidades necessárias para atender à integração
Solicitação de Configuração
Para utilização do sistema Login Único, há necessidade de liberar os ambientes para aplicação cliente possa utilizar. Essa liberação ocorre pelos passos:
Preenchimento do Plano de Integração. Leia atentamente as instruções de preenchimento que constam no próprio documento/
Geração da Chave PGP - A chave PGP é solicitada para transmissão das credenciais de forma segura. Informações sobre como administrar as chaves PGP para credenciais do Login Único.
Para encaminhamento das informações aos integrantes da Secretaria de Governança Digital (SGD) do Ministério da Economia (ME), deverá seguir as orientações:
A assinatura do documento deverá ser pelo Representante Legal do órgão ou entidade dona do serviço a ser integrado, e Representante Técnico. Ambos devem constar na tabela do item 3. O documento deve ter o formato “.doc”, “.pdf” ou “.odt”;
A chave púbica PGP deverá ser gerada pelo Representante Legal do órgão ou entidade dona do serviço a ser integrado, e Representante Técnico. Ambos devem constar na tabela do item 3;
Com recebimento do documento e da chave pública PGP, todos com correta completude das informações, a credencial de teste ou produção será gerada e encaminhada aos e-mails dos representantes descritos na tabela do item 3 deste documento;
O Assunto do e-mail de liberação de chaves terá o padrão: CHAVE DO AMBIENTE [nome do ambiente] – [Nome do Órgão/Entidade] – UF;
A chave de produção somente será emitida após comprovação da integração com sucesso ao ambiente de TESTE.
Para fins de comprovação, deve ser encaminhado para o e-mail com vídeo da integração em funcionamento, junto com o Plano de Integração preenchido com as URLs do ambiente de produção do órgão/entidade e chave pública PGP do Órgão/Entidade. ATENÇÃO: SÃO PERMITIDAS APENAS URLS com HTTPS NO AMBIENTE DE PRODUÇÃO.
O Órgão/Entidade DEVEavisar, por meio de email, que a integração está disponível para sociedade;
O endereço de envio encontra-se no Plano de Integração.
Alteração de Configuração
Para alterar as configurações da credencial, deverá seguir as orientações:
Enviar e-mail informando o CLIENT_ID no qual as alterações deverão ser aplicadas;
O Assunto do e-mail de alteração de chaves deve seguir o padrão: ALTERAÇÃO EM CHAVE DO AMBIENTE [nome do ambiente] – [client_id];
No corpo do e-mail de alteração, o responsável deve informar
Client_id | Identificação do Client_id que deseja alterar |
---|---|
URL de Retorno | URL Retorno deseja adicionar |
URL Lançador de Serviços | URL Lançador de Serviços deseja alterar |
URL de Logout | URL de Logout deseja adicionar |
Como criar um par de chaves PGP
O PGP (abreviação de Pretty Good Privacy, ou Muito Boa Privacidade) é um programa de criptografia de chave pública e privada altamente seguro e utilizado para proteção de conteúdo enviado por correio eletrônico.
Orientaremos como criar par de chaves PGP por meio do programa Gpg4win (versão windows), porém existem outras aplicativos permitem geração.
Sigam os passos para criação:
Como ler arquivo da credencial com chave PGP
Orientaremos como ler arquivo por meio do programa Gpg4win (versão windows), porém existem outros aplicativos que podem ser empregados para esta finalidade.
Sigam os passos para criação:
Passo-a-Passo para Integrar
Para que a autenticação aconteça, todo o canal de comunicação deve ser realizado com o protocolo HTTPS. Será feito um redirecionamento para uma URL de autorização do Login Único e, após a autenticação ser concluída, retornará um código de autenticação para a aplicação cliente com intuito de adquirir um ticket de acesso para os serviços protegidos.
A utilização da autenticação do Login Único depende dos seguintes passos:
Variavél | Descrição |
---|---|
response_type | Especifica para o provedor o tipo de autorização. Neste caso será code |
client_id | Chave de acesso, que identifica o serviço consumidor fornecido pelo Login Único para a aplicação cadastrada |
scope | Especifica os recursos que o serviço consumidor quer obter. Um ou mais escopos inseridos para a aplicação cadastrada. Informação a ser preenchida por padrão: openid+email+phone+profile+govbr_confiabilidades. |
redirect_uri | URI de retorno cadastrada para a aplicação cliente no formato URL Encode. Este parâmetro não pode conter caracteres especiais conforme consta na especificação auth 2.0 Redirection Endpoint |
nonce | Sequência de caracteres usado para associar uma sessão do serviço consumidor a um Token de ID e para atenuar os ataques de repetição. Pode ser um valor aleatório, mas que não seja de fácil dedução. Item obrigatório. |
state | Valor usado para manter o estado entre a solicitação e o retorno de chamada. Item obrigatório. |
Exemplo de requisição:
https://sso.staging.acesso.gov.br/authorize?response_type=code&client_id=ec4318d6-f797-4d65-b4f7-39a33bf4d544&scope=openid+email+phone+profile&redirect_uri=http%3A%2F%2Fappcliente.com.br%2Fphpcliente%2Floginecidadao.Php&nonce=3ed8657fd74c&state=358578ce6728b
Variavél | Descrição |
---|---|
code | Código de autenticação gerado pelo provedor. Será utilizado para obtenção do Token de Resposta. Possui tempo de expiração e só pode ser utilizado uma única vez. |
state | State passado anteriormente do https://sso.staging.acesso.gov.br/authorize que pode ser utilizado para controle da aplicação cliente. Pode correlacionar com o code gerado. O cliente consegue saber se o CODE veio de um state gerado por ele. |
Após autenticado, o provedor redireciona para a página de autorização. O usuário habilitará o consumidor no sistema para os escopos solicitados. Caso o usuário da solicitação autorize o acesso, é gerado um “ticket de acesso”, conforme demonstra na especificação OpenID Connect ;
Para obter o ticket de acesso, o consumidor deve fazer uma requisição POST para o endereço https://sso.staging.acesso.gov.br/token passando as seguintes informações:
Parâmetros do Header para requisição Post https://sso.staging.acesso.gov.br/token
Variavél | Descrição |
---|---|
Content-Type | Tipo do conteúdo da requisição que está sendo enviada. Nesse caso estamos enviando como um formulário |
Authorization | Informação codificada em Base64, no seguinte formato: CLIENT_ID:CLIENT_SECRET (senha de acesso do serviço consumidor)(utilizar codificador para Base64 site externo para gerar codificação). A palavra Basic deve está antes da informação. |
Exemplo de header:
Content-Type:application/x-www-form-urlencoded
Authorization: Basic
ZWM0MzE4ZDYtZjc5Ny00ZDY1LWI0ZjctMzlhMzNiZjRkNTQ0OkFJSDRoaXBfTUJYcVJkWEVQSVJkWkdBX2dRdjdWRWZqYlRFT2NWMHlFQll4aE1iYUJzS0xwSzRzdUVkSU5FcS1kNzlyYWpaZ3I0SGJuVUM2WlRXV1lJOA==
Parâmetros do Body para requisição Post https://sso.staging.acesso.gov.br/token
Variavél | Descrição |
---|---|
grant_type | Especifica para o provedor o tipo de autorização. Neste caso será authorization_code |
code | Código retornado pela requisição anterior (exemplo: Z85qv1) |
redirect_uri | URI de retorno cadastrada para a aplicação cliente no formato URL Encode. Este parâmetro não pode conter caracteres especiais conforme consta na especificação auth 2.0 Redirection Endpoint |
Exemplo de query
curl -X POST -d 'grant_type=authorization_code&code=Z85qv1&redirect_uri=http%3A%2F%2Fappcliente.com.br%2Fphpcliente%2Floginecidadao.Php' https://sso.staging.acesso.gov.br/token
O serviço retornará, em caso de sucesso, no formato JSON, as informações conforme exemplo:
{
"access_token": "(Token de acesso a recursos protegidos do autenticador, bem como serviços do Login Único.)",
"id_token": "(Token de autenticação com informações básicas do usuário.)",
"token_type": "(O tipo do token gerado. Padrão: Bearer)",
"expires_in": "(Tempo de vida do token em segundos.)"
}
JSON do ACCESS_TOKEN
{
"sub": "(CPF do usuário autenticado)",
"aud": "Client ID da aplicação onde o usuário se autenticou",
"scope": ["(Escopos autorizados pelo provedor de autenticação.)"],
"amr": ["(Listagem dos fatores de autenticação do usuário. Pode ser “passwd” se o mesmo logou fornecendo a senha, “x509” se o mesmo utilizou certificado digital ou certificado em nuvem, ou “bank” para indicar utilização de conta bancária para autenticar. Esse último seguirá com número de identificação do banco, conforme código de compensação do Bacen presente ao final da explicação.)"],
"iss": "(URL do provedor de autenticação que emitiu o token.)",
"exp": "(Data/hora de expiração do token)",
"iat": "(Data/hora em que o token foi emitido.)",
"jti": "(Identificador único do token, reconhecido internamente pelo provedor de autenticação.)",
"cnpj": "CNPJ vinculado ao usuário autenticado. Atributo será preenchido quando autenticação ocorrer por certificado digital de pessoal jurídica."
}
Observações para ACCESS_TOKEN:
JSON do ID_TOKEN
{
"sub": "(CPF do usuário autenticado.)",
"amr": ["(Listagem dos fatores de autenticação do usuário. Pode ser “passwd” se o mesmo logou fornecendo a senha, “x509” se o mesmo utilizou certificado digital ou certificado em nuvem, ou “bank” para indicar utilização de conta bancária para autenticar. Esse último seguirá com número de identificação do banco, conforme código de compensação do Bacen presente ao final da explicação.)"],
"picture": "(URL de acesso à foto do usuário cadastrada no Gov.br. A mesma é protegida e pode ser acessada passando o access token recebido.)",
"name": "(Nome cadastrado no Gov.br do usuário autenticado.)",
"phone_number_verified": "(Confirma se o telefone foi validado no cadastro do Gov.br. Poderá ter o valor "true" ou "false")",
"phone_number": "(Número de telefone cadastrado no Gov.br do usuário autenticado. Caso o atributo phone_number_verified do ID_TOKEN tiver o valor false, o atributo phone_number não virá no ID_TOKEN)",
"email_verified": "(Confirma se o email foi validado no cadastro do Gov.br. Poderá ter o valor "true" ou "false")",
"email": "(Endereço de e-mail cadastrado no Gov.br do usuário autenticado. Caso o atributo email_verified do ID_TOKEN tiver o valor false, o atributo email não virá no ID_TOKEN)",
"cnpj": "(CNPJ vinculado ao usuário autenticado. Atributo será preenchido quando autenticação ocorrer por certificado digital de pessoal jurídica.)"
}
Observações para ID_TOKEN:
Variavél | Descrição |
---|---|
Authorization | palavra Bearer e o ACCESS_TOKEN da requisição POST do https://sso.staging.acesso.gov.br/token |
O serviço retornará, em caso de sucesso a informação em formato Base64
Parâmetros para requisição GET https://api.staging.acesso.gov.br/confiabilidades/v3/contas/cpf/niveis?response-type=ids
VariavélDescriçãoAuthorizationpalavra Bearer e o ACCESS_TOKEN da requisição POST do https://sso.staging.acesso.gov.br/tokencpfCPF do cidadão (sem ponto, barra etc).
Variavél | Descrição |
---|---|
Authorization | palavra Bearer e o ACCESS_TOKEN da requisição POST do https://sso.staging.acesso.gov.br/token |
cpf | CPF do cidadão (sem ponto, barra etc). |
A resposta em caso de sucesso retorna sempre um array de objetos JSON no seguinte formato:
[
{
"id": "(Identificação para reconhecer o nível)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização do nível na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
}
]
Verificar quais níveis estão disponíveis, acesse Resultado Esperado do Acesso ao Serviço de Confiabilidade Cadastral (Níveis)
Parâmetros para requisição GET https://api.staging.acesso.gov.br/confiabilidades/v3/contas/cpf/categorias?response-type=ids
Variavél | Descrição |
---|---|
Authorization | palavra Bearer e o ACCESS_TOKEN da requisição POST do https://sso.staging.acesso.gov.br/token |
cpf | CPF do cidadão (sem ponto, barra etc). |
A resposta em caso de sucesso retorna sempre um array de objetos JSON no seguinte formato:
[
{
"id": "(Identificação para reconhecer a confiabilidade)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
}
]
As categorias existentes no Login Único são:
[
{
"id": "1 (conta_basica)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "2 (verificada)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "3 (comprovada)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
}
]
As categorias existentes no Login Único são:
[
{
"id": "101 (carrosel_perguntas_previdencia)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "102 (carrosel_perguntas)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "201 (servidor_publico)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "202 (biometria_facial)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "203 (balcao_presencial)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "204 (internet_banking)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "301 (biometria_individualizada)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": " 302 (certificado_digital)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da categoria na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
}
]
Os selos existentes no Login Único são:
[
{
"id": "101 (kba_previdencia)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "201 (cadastro_basico)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "301 (servidor_publico)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "401 (biovalid_facial)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "501 (balcao_sat_previdencia)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "502 (balcao_denatran)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "503 (balcao_correios)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "504 (balcao_cadastro_presencial_govbr)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "601 (balcao_nai_previdencia)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "602 (bb_internet_banking)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "603 (banrisul_internet_banking)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "604 (bradesco_internet_banking)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "605 (caixa_internet_banking)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "606 (brb_internet_banking)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "607 (sicoob_internet_banking)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "608 (santander_internet_banking)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "701 (tse_facial)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
},
{
"id": "801 (certificado_digital)",
"dataAtualizacao": "(Mostra a data e hora que ocorreu atualização da confiabilidade na conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
}
]
Parâmetros da Query para requisição GET https://confiabilidades.staging.acesso.gov.br/
Variavél | Descrição |
---|---|
client_id | Chave de acesso, que identifica o serviço consumidor fornecido pelo Login Único para a aplicação cadastrada |
niveis | Recurso de segurança da informação da identidade, que permitem flexibilidade para realização do acesso. Atributo opcional |
categorias | Permitem manutenção mais facilitada da utilização dos níveis e confiabilidades (selos) do Login Único. Atributo obrigatório |
confiabilidades | Consistem em orientar para qualificação das contas com a obtenção dos atributos autoritativos do cidadão a partir das bases oficias de governo, por meio das quais permitirão a utilização da credencial de acesso em sistemas internos dos clientes e serviços providos diretamente ao cidadão. Atributo obrigatório |
Observações sobre as variáveis do serviço de catálogo
Todos são obrigatórios, deve-se separá-los por vírgula. Exemplo (categorias=102,101)
Apenas um é obrigatório, deve-se separar por barra invertida. Exemplo (confiabilidades=(301/801)
Acesso ao Serviço de Log Out
Parâmetros da Query para requisição GET https://sso.staging.acesso.gov.br/logout
Variavél | Descrição |
---|---|
post_logout_redirect_uri | URL que direciona ao Login Único qual página deverá ser aberta quando o token for invalidado. A URL deverá ser previamente liberada por meio do preenchimento do campo URL de Log Out presente no Plano de Integração. |
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "https://sso.staging.acesso.gov.br/logout?post_logout_redirect_uri=https://www.minha-aplicacao.gov.br/retorno.html");
document.body.appendChild(form);
form.submit();
window.location.href='https://sso.staging.acesso.gov.br/logout?post_logout_redirect_uri=https://www.minha-aplicacao.gov.br/retorno.html';
O Login Único disponibiliza dois serviços para acesso a informações de Pessoa Jurídica. O primeiro apresenta todos os CNPJs cadastrados para um determinado usuário. O segundo, utiliza desse CNPJ para extrair informações cadastradas no Login Único para aquela pessoa e empresa.
Para acessar o serviço que disponibiliza os CNPJs vinculados a um determinado usuário, é necessário o seguinte:
Exemplo de requisição
https://sso.staging.acesso.gov.br/authorize?response_type=code&client_id=minha-aplicacao&scope=openid+email+phone+profile+govbr_empresa&redirect_uri=http%3A%2F%2Fappcliente.com.br%2Fphpcliente%2Floginecidadao.Php&nonce=3ed8657fd74c&state=358578ce6728b
Parâmetros para requisição GET https://api.staging.acesso.gov.br/empresas/v2/empresas?filtrar-por-participante=cpf
Variavél | Descrição |
---|---|
Authorization | palavra Bearer e o ACCESS_TOKEN da requisição POST do https://sso.staging.acesso.gov.br/token |
cpf | CPF do cidadão (sem ponto, barra etc). |
Exemplo de requisição
[
{
"cnpj": "(Número de CNPJ da empresa vinculada)",
"razaoSocial": "(Razão Social (Nome da empresa) cadastrada na Receita Federal)",
"dataCriacao": "(Mostra a data e hora da vinculação do CNPJ a conta do usuário. A mascará será YYYY-MM-DD HH:MM:SS)"
}
]
Parâmetros para requisição GET https://api.staging.acesso.gov.br/empresas/v2/empresas/cnpj/participantes/cpf
Variavél | Descrição |
---|---|
Authorization | palavra Bearer e o ACCESS_TOKEN da requisição POST do https://sso.staging.acesso.gov.br/token |
cpf | CPF do cidadão (sem ponto, barra etc). |
cnpj | CNPJ da empresa (sem ponto, barra etc). |
Exemplo de requisição
{
"cpf": "(Número do CPF que pode atuar com empresa)",
"atuacao": "(Papel do CPF na empresa na Receita Federal. O conteúdo será SOCIO, CONTADOR, REPRESENTANTE_LEGAL ou NAO_ATUANTE. O NAO_ATUANTE representa CPF possui certificado digital de pessoa jurídica, porém não possui um papel na empresa na base da Receita Federal. Se CPF for colaborador, atributo atuacao não aparecerá)",
"cadastrador": "(Identifica se o CPF pode realizar cadastro de colaboradores para CNPJ. O conteúdo false determinar que o CPF é um colaborador da empresa. O conteúdo true determina CPF é representante da empresa com certificado digital de pessoal jurídica)",
"cpfCadastrador": "(CPF responsável por realizar cadastro do Colaborador. Se CPF apresentar atributo cadastrador com conteúdo true, o atributo cpfCadastrador não aparecerá)",
"dataCriacao": "(Mostra a data e hora da vinculação do CPF ao CNPJ. A mascará será YYYY-MM-DD HH:MM:SS)",
"dataExpiracao": "(Mostra a data e hora que o CPF poderá atuar com CNPJ. A mascará será YYYY-MM-DD HH:MM:SS)"
}
Para que a revalidação aconteça, todo o canal de comunicação deve ser realizado com o protocolo HTTPS. Será feito um redirecionamento para URL de autorização especifica do Login Único e, após a revalidação ser concluída, retornará um código de autenticação para a aplicação cliente com intuito de adquirir um ticket de acesso para revalidação da senha e continuação do fluxo do sistema.
Esta estrutura precisará autorização específica a ser solicitada para Ministério da Economia.
Passos para processo:
Exemplo de requisição:
Variavél | Descrição |
---|---|
response_type | Especifica para o provedor o tipo de autorização. Neste caso será code |
client_id | Chave de acesso, que identifica o serviço consumidor fornecido pelo Login Único para a aplicação cadastrada |
scope | Informação ser preenchida: password-validation. |
redirect_uri | URL de retorno cadastrada para a aplicação cliente continuar o processo após a revalidação da senha no formato URL Encode. Este parâmetro não pode conter caracteres especiais conforme consta na especificação auth 2.0 Redirection Endpoint |
https://oauth.staging.acesso.gov.br/v1/authorize?response_type=code&client_id=ec4318d6-f797-4d65-b4f7-39a33bf4d544&redirect_uri=http%3A%2F%2Fappcliente.com.br%2Fphpcliente%2Floginecidadao.Php&scope=password-validationstate=exASJANS12sa
Variavél | Descrição |
---|---|
code | Código de autenticação gerado pelo provedor. Será utilizado para obtenção do Token de Resposta. Possui tempo de expiração de 2 minutos e só pode ser utilizado uma única vez. |
state | State passado anteriormente do https://oauth.staging.acesso.gov.br/v1/authorize que pode ser utilizado para controle da aplicação cliente. Pode correlacionar com o code gerado. |
Parâmetros do Header para requisição Post https://oauth.staging.acesso.gov.br/v1/token
Variavél | Descrição |
---|---|
Content-Type | Tipo do conteúdo da requisição que está sendo enviada. Nesse caso estamos enviando como um formulário (application/x-www-form-urlencoded) |
Authorization | Informação codificada em Base64, no seguinte formato: CLIENT_ID:CLIENT_SECRET (senha de acesso do serviço consumidor)(utilizar codificador para Base64 site externo para gerar codificação). A palavra Basic deve está antes da informação. |
Exemplo de header:
Content-Type:application/x-www-form-urlencoded
Authorization: Basic
ZWM0MzE4ZDYtZjc5Ny00ZDY1LWI0ZjctMzlhMzNiZjRkNTQ0OkFJSDRoaXBfTUJYcVJkWEVQSVJkWkdBX2dRdjdWRWZqYlRFT2NWMHlFQll4aE1iYUJzS0xwSzRzdUVkSU5FcS1kNzlyYWpaZ3I0SGJuVUM2WlRXV1lJOA==
Variavél | Descrição |
---|---|
grant_type | Especifica para o provedor o tipo de autorização. Neste caso será authorization_code |
code | Código retornado pela requisição anterior (exemplo: 8bfac143-c4ca-daf-8ea8-517f0d93db7a) |
redirect_uri | URI de retorno cadastrada para a aplicação cliente no formato URL Encode. Este parâmetro não pode conter caracteres especiais conforme consta na especificação auth 2.0 Redirection Endpoint |
state | Valor usado para manter o estado entre a solicitação e o retorno de chamada. Item não obrigatório. |
Exemplo de query
https://oauth.staging.acesso.gov.br/v1/token?grant_type=authorization_code&code=8bfac143-c4ca-daf-8ea8-517f0d93db7a&redirect_uri=http%3A%2F%2Fappcliente.com.br%2Fphpcliente%2Floginecidadao.Php&client_id=ec4318d6-f797-4d65-b4f7-39a33bf4d544
{
"access_token": "(Token de acesso a recursos protegidos do autenticador, bem como serviços do Login Único.)",
"token_type": "(O tipo do token gerado. Padrão: Bearer)",
"expires_in": "(Tempo de vida do token em segundos.)"
}
De posse das informações do json anterior, a aplicação consumidora está habilitada para concluir revalidação da senha.
Antes de utilizar as informações do JSON anterior, de forma especifica o ACCESS_TOKEN, para revalidação da senha, há necessidade da aplicação consumidora validar se as informações foram geradas pelos serviços do Login Único. Esta validação ocorrerá por meio da consulta da chave pública disponível no serviço https://oauth.staging.acesso.gov.br/v1/jwks. Para isso, verificar o método processToClaims dos Exemplos de Integração.
Verificado o access token, a aplicação cliente consegue, através do atributo sub, saber qual usuário confirmou sua identidade gov.br com sucesso e continuar o processo no sistema integrado.
Exemplo de requisição
https://sso.staging.acesso.gov.br/authorize?response_type=code&client_id=minha-aplicacao&scope=openid+email+phone+profile+govbr_recupera_certificadox509&redirect_uri=http%3A%2F%2Fappcliente.com.br%2Fphpcliente%2Floginecidadao.Php&nonce=3ed8657fd74c&state=358578ce6728b
Parâmetros para requisição GET https://sso.staging.acesso.gov.br/api/x509/info
Variavél | Descrição |
---|---|
Authorization | palavra Bearer e o ACCESS_TOKEN da requisição POST do https://sso.staging.acesso.gov.br/token |
Exemplo de requisição
[
{
"provider":"(Indicará qual o provedor disponibilizará o certificado. Aparecerá para certificado em nuvem)",
"amr":["(Lista de forma de certificados autenticados. Padrão é x509)"],
"certificate":"(Demonstra o nome do cerfificado da autenticação)",
"type":"(Informa qual tipo de certificado utilizado para autenticação. O contéudo será <device> para certificados A1 e A3 e <cloud> para indicar certificado em núvem)"
}
]
Os acessos aos serviços do Login Único ocorrem por meio de chamadas de URLs e as respostas são códigos presentes conforme padrão do protocolo http por meio do retorno JSON, conforme exemplo:
{
"error": "(Código HTTP do erro)",
"erro_description": "(Descrição detalhada do erro ocorrido. )"
}
Ministério da Economia – Secretaria de Governo Digital (ME/SGD)
O Cadastro Base do Cidadão - CBC foi instituído pelo Decreto 10.046/2019 e é a base de referência de cadastros de pessoas físicas para todos os órgãos da Administração Direta, Autárquica e Fundacional. Em sua primeira versão, o CBC utiliza a base cadastral de pessoas físicas da Receita Federal - CPF.
Estão inscritos os brasileiros e aqueles estrangeiros que possuam alguma relação fiscal com a RFB, para fins de identificação dos contribuintes. Essa base conta hoje com cerca de 250 milhões de registros (considerando brasileiros, estrangeiros e falecidos)
A Secretaria de Governo Digital (SGD), enquanto Gestora a Plataforma de Interoperabilidade instituída pelo Decreto 10.046/2019, oferece gratuitamente o acesso à API do CBC para os órgãos e entidades integrantes do SISP (Administração Direta, Autárquica e Fundacional Federal).
Caso sua organização não pertença ao SISP, os dados cadastrais do CPF podem ser obtidos alternativamente pela solução Infoconv, também catalogada neste Portal.
Os órgãos ou entidades do SISP que desejem utilizar a API por meio do contrato centralizado disponibilizado pela SGD, sem custo para o órgão ou entidade, devem:
https://www.gov.br/pt-br/servicos/solicitar-adesao-para-acesso-ao-cadastro-base-do-cidadao
Dados buscados dos Cidadãos
Serviço de Consultas On-line para obtenção dos dados cadastrais do cidadão.
Campos Retornados
Nome | Conteúdo |
---|---|
CPF | CPF do cidadão |
Nome | Nome do cidadão - Se estiver vazio, neste caso, a situação cadastral constará como “3. suspensa” |
NomeSocial | Nome social do cidadão |
Obs: Esse campo só é preenchido para pessoas travestis e transsexuais que solicitam a inclusão por meio de formulário específico. Portanto se não for o caso, o campo estará vazio. | |
Se estiver preenchido, deve ser por esse campo que o cidadão deverá ser chamado. | |
SituacaoCadastral | 0. Regular - quando não há inconsistência cadastral e não constar omissão de DIRPF; |
Obs.: excepcionalmente, pode ocorrer de existir um CPF regular com inconsistência ainda não detectada ou tratada. | |
2. Suspensa - quando há inconsistência de ordem cadastral; | |
3 - Titular Falecido - quando há data de óbito vinculada ao CPF; | |
4. Pendente de Regularização - quando há omissão de DIRPF em um dos últimos 5 exercícios; | |
5. Cancelada por Multiplicidade - quando há mais de uma inscrição no CPF para a mesma pessoa; nesse caso, elege-se um para permanecer ativo e os demais são vinculados a ele; | |
8. Nula - quando constatada a fraude. | |
9. Cancelada de Ofício - ato de ofício, no interesse da administração tributária ou determinação judicial. | |
Cada serviço público deverá definir qual situação cadastral será aceita. | |
ResidenteExterior | N - Não; S - Sim |
O endereço não fica vazio (ele é preenchido com dados do endereço no exterior) e o CEP informado sempre será 70.000-000. | |
CodigoPaisExterior | Código do país se residente no exterior (tabela própria da Receita) |
NomePaisExterior | Nome do país se residente no exterior (tabela própria da Receita) |
NomeMae | Nome da mãe do cidadão - pode estar vazio, neste caso, a situação cadastral constará como “3. suspensa” |
DataNascimento | DDMMAAAA - pode estar vazio, neste caso, a situação cadastral constará como “3. suspensa” |
Sexo | 1 - Masculino; 2 - Feminino 3 - Não Informado |
NaturezaOcupacao | Código da natureza da ocupação |
NomeNaturezaOcupacao | Nome da natureza da ocupação (tabela própria da Receita) |
OcupacaoPrincipal | Código da ocupação principal (tabela própria da Receita) |
NomeOcupacaoPrincipal | Nome da ocupação principal (tabela própria da Receita) |
ExercicioOcupacao | Ano do exercício da ocupação (tabela própria da Receita) |
Exercício a que se referem os códigos natureza da ocupação e código da ocupação principal | |
NomeUnidadeAdministrativa | Nome da unidade administrativa (tabela própria da Receita) |
TipoLogradouro | Tipo do logradouro |
Logradouro | Ex: Rua A |
NumeroLogradouro | Ex: 123 |
Complemento | Ex: CONJ 132 |
Bairro | Ex: Álvaro Weyne |
Cep | Ex: 70000000 |
UF | Ex: CE |
CodigoMunicipio | Ex: 1234 |
Trata-se de código de tabela da RFB, a tabela TOM (órgãos e municípios) Dessa tabela deriva a jurisdição tributária do contribuinte. | |
Municipio | Ex: Fortaleza |
DDD | Ex: 85 |
Telefone | Ex: 95585862 |
UnidadeAdministrativa | Ex: 806030 |
Este campo se refere a unidade administrativa da Receita o qual o contribuinte deve se dirigir para tratar assuntos fiscais | |
AnoObito | AAAA |
Está integrado com os cartórios, mas não possuem a informação de dados legados. Deve ser feito batimento com o SIRC. | |
Estrangeiro | N - Não; S - Sim |
DataAtualização | DDMMAAAA |
DataInscricao | DDMMAAAA |
CodPaisNacionalidade | Código do país onde o cidadão nasceu (conforme tabela da RFB) |
NomePaisNacionalidade | Nome do país onde o cidadão nasceu (conforme tabela da RFB) |
CodigoMunicipioNaturalidade | Código do município onde o cidadão nasceu (conforme tabela da RFB) |
NomeMunicipioNaturalidade | Nome do município onde o cidadão nasceu (conforme tabela da RFB) |
UFMunicipioNaturalidade | Sigla da UF do município onde o cidadão nasceu (conforme tabela da RFB) |
OBS: Atualmente existem CPFs com nome, nome da mãe ou data de nascimento vazios. CPFs nessa situação constarão na situação cadastral como “3. Suspenso”.
Possíveis problemas
Diante da integração com o gov.br ser algo novo pelo time Vingadores, pode ser que durante o desenvolvimento da implementação venha aparecer possíveis problemas, os quais durante a realização desse SPIKE, não foram identificados, fora isso, ate o momento, não a nem um possível problema.
Complexidade de cada funcionalidade
Realização da Autenticação - 21 pontos
A utilização da autenticação do Login Único depende dos treze passos citados a cima
E necessário remover o Sauron e ajustar as funcionalidades existente para o GOV.BR
Acesso ao serviço de Catálogo de Confiabilidades (Selos) - 5 pontos
Acesso ao Serviço de Log Out - 5 pontos
Acesso ao Serviço de Revalidação de Senha - 5 pontos
Acesso ao Serviço de Recuperação do Tipo de Certificado - 3 pontos
Total: 44 pontos
Valor agregado
Com a implementação da autenticação com o gov.br o Cidadão irar acessar o sistema de forma mais segura, em vista da existência do CBC - Cadastro Base do Cidadão, para que nem uma pessoa se passe por outra, levando em conta que essa base conta hoje tem cerca de 250 milhões de registros (considerando brasileiros, estrangeiros e falecidos), de modo que em sua primeira versão, o CBC utiliza a base cadastral de pessoas físicas da Receita Federal - CPF.
Diante disso, tornasse possível a implementação, em vista que no presente estudo contém as formas de chamadas a operações, parâmetros e métodos de integração, assim como os dados buscados do cidadão, e, por último, os procedimentos para permitir a conectividade entre os ambientes de implantação.
https://manual-roteiro-integracao-login-unico.servicos.gov.br/pt/stable/index.html
Plano de Integração: https://manual-roteiro-integracao-login-unico.servicos.gov.br/pt/stable/arquivos/Modelo_PlanodeIntegracao_LOGINUNICO_Versao-4.doc
https://dsgov.estaleiro.serpro.gov.br/components/signin?tab=desenvolvedor
https://www.gov.br/conecta/catalogo/apis/cadastro-base-do-cidadao-cbc-cpf
https://www.gov.br/pt-br/servicos/solicitar-adesao-para-acesso-ao-cadastro-base-do-cidadao