Para que a autenticação aconteça, todo o canal de comunicação deve ser realizado com o protocolo HTTPS e, não utilizar a tecnologia WebView no ambiente mobile, mas navegador nativo. 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.
Para configuração do ambiente local dos desenvolvedores deve-se considerar a criação de um domínio para o ambiente de desenvolvimento das soluções clientes, por exemplo, "local.minha_aplicacao.gov.br" (configurando nas máquinas dos desenvolvedores - hosts), evitando, desta forma, a necessidade de configuração de URLs de redirecionamento e logout fixadas em IPs dos desenvolvedores.
A utilização da autenticação do Login Único depende dos seguintes passos:
A chamada para autenticação deverá ocorrer pelo botão com o conteúdo Entrar com GOV.BR. Para o formato do botão, seguir as orientações do Design System de Governo .
Ao requisitar autenticação via Provedor, o mesmo verifica se o usuário está logado. Caso o usuário não esteja logado o provedor redireciona para a página de login.
A requisição é feita através de um GET para o endereço https://sso.staging.acesso.gov.br/authorize passando as seguintes informações:
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+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. |
code_challenge | Senha gerada pelo cliente para proteger o code da requisicao do Authorize. Seguir o padrão BASE64URL-ENCODE(SHA256(ASCII(Valor da Atributo do code_verifier a ser utilizado no /Token))). |
code_challenge_method | Será o método para proteger a senha enviada no parâmetro code_challenge. O padrão será "S256". |
Exemplo de requisição:
https://sso.staging.acesso.gov.br/authorize?response_type=code&client_id=ec4318d6-f797-4d65-b4f7-39a33bf4d544&scope=openid+email+profile&redirect_uri=http%3A%2F%2Fappcliente.com.br%2Fphpcliente%2Floginecidadao.Php&nonce=3ed8657fd74c&state=358578ce6728b%code_challenge=J7rD2y0WG26mzgvdEizXMOdDPbB_Z5wpPULzv1KmVEg&code_challenge_method=S256
Observações para Passo 3:
- Parâmetro STATE deve obrigatoriamente ser usado e deve ser validado no cliente (validado que foi previamente emitido pelo cliente)
- Parâmetros code_challenge e code_challenge_method devem obrigatoriamente ser usado evitando que a resposta do "authorize" possa ser utilizada por um terceiro agente. Detalhes na RFC PKCE
- O site Ajuda para geração do code_challenge orientará para geração do conteúdo do code_challenge.
Após a autorização, a requisição é retornada para a URL especificada no redirect_uri do serviço https://sso.staging.acesso.gov.br/authorize, enviando os parâmetros:
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 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 |
code_verifier | Senha sem criptografia enviada do parâmetro code_challenge presente no Passo 3 |
Exemplo de query
curl -X POST -d 'grant_type=authorization_code&code=007f89a9-9982-42c7-960b-b09ea2713f38.81c9c808-1509-438d-9649-eea7d8c63c6e.a4685ae1-46fc-413c-b370-84ab6067a9201&redirect_uri=http%3A%2F%2Fappcliente.com.br%2Fphpcliente%2Floginecidadao.Php'&code_verifier='LUnicoAplicacaoCodeVerifierTamanhoComMinimo' 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.)"
}
Observações para Passo 6:
- Tokens do Acesso gov.br devem ser preferencialmente armazenados no backend ou, na hipótese de necessidade de armazenamento no frontend, devem ser obrigatoriamente criptografados no backend;
- A tela da aplicação cliente que recebe o parâmetro code deve obrigatoriamente realizar um redirect para outra página
- A aplicação cliente deve ter sessão com mecanismo próprio, evitando múltiplas solicitações de autorização ao provedor de identidade do Acesso gov.br. O mecanismo próprio isolará a sessão da aplicação cliente de regras de negócio e segurança do Acesso gov.br (ou seja, o token do Acesso gov.br não deve ser utilizado), permitirá autonomia e controle próprios.
- Parâmetro code_verifier deverá ter o tamanho mínimo de 43 caracteres e tamanho máximo de 128 caracteres e deve obrigatoriamente ser usado evitando que a resposta do "token" possa ser utilizada por um terceiro agente. Detalhes na RFC PKCE
De posse das informações do json anterior, a aplicação consumidora está habilitada para consultar dados de recursos protegidos, que são as informações e método de acesso do usuário ou serviços externos do Login Único.
Antes de utilizar as informações do JSON anterior, de forma especifica os ACCESS_TOKEN e ID_TOKEN, para buscar informações referente ao método de acesso e cadastro básico do usuário, 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://sso.staging.acesso.gov.br/jwk. Para isso, verificar o método processToClaims dos Exemplos de Integração.
A utilização das informações do ACCESS_TOKEN e ID_TOKEN ocorrerá ao extrair do JSON codificado os seguintes parâmetros:
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 com detalhamento. Verificar nas observações para os detalhamentos.)"],
"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:
- Caso um novo método de autenticação seja adicionado, será listado no atributo AMR. As integrações devem contemplar futuras adições.
- O AMR apresentará o detalhamento do método de autenticação com as seguintes informações:
- passwd: Sem detalhamento;
- x509: Certificado de token A1 ou A3 (x509_token), Certificado de Nuvem NeoId (x509_neoid), Certificado de Nuvem SAFEID (x509_safeid) , Certificado de Nuvem BIRDID (x509_birdid), Certificado de Nuvem SERASA (x509_serasa), Certificado de Nuvem VIDASS (x509_vidaas), Certificado de Nuvem RemoteID (x509_remoteid);
- bank: Banco do Brasil (bank001), Agibank (bank121), BancoDeBrasilia (bank070), Banrisul (bank041), Bradesco (bank237), CaixaEconomica (bank104), Itau (bank341), Mercantil (bank389), Santander (bank033), Sicoob (bank756), Sicredi (bank748);
- app: Acesso por QR_CODE do aplicativo gov.br (app_qrcode)
- mfa: Acesso sobre segundo fator de autenticação (otp). Aparecerá caso a conta do cidadão esteja com segundo fator de autenticação ativado.
JSON do ID_TOKEN
{
"sub": "(CPF do usuário autenticado.)",
"amr": ["(Listagem dos fatores de autenticação do usuário com detalhamento. Verificar nas observações para os detalhamentos.)"],
"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.)",
"social_name": "(Nome Social cadastrado no Gov.br do usuário autenticado.Aparecerá apenas se existir no cadastro)",
"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:
- Os paramêtros email,phone_number,picture não são obrigatórios. Ambos podem estar preenchidos ou não.
- Caso um novo método de autenticação seja adicionado, será listado no atributo AMR. As integrações devem contemplar futuras adições.
- O AMR apresentará o detalhamento do método de autenticação com as seguintes informações:
- passwd: Sem detalhamento;
- x509: Certificado de token A1 ou A3 (x509_token), Certificado de Nuvem NeoId (x509_neoid), Certificado de Nuvem SAFEID (x509_safeid) , Certificado de Nuvem BIRDID (x509_birdid), Certificado de Nuvem SERASA (x509_serasa), Certificado de Nuvem VIDASS (x509_vidaas), Certificado de Nuvem RemoteID (x509_remoteid);
- bank: Banco do Brasil (bank001), Agibank (bank121), BancoDeBrasilia (bank070), Banrisul (bank041), Bradesco (bank237), CaixaEconomica (bank104), Itau (bank341), Mercantil (bank389), Santander (bank033), Sicoob (bank756), Sicredi (bank748);
- app: Acesso por QR_CODE do aplicativo gov.br (app_qrcode)
- mfa: Acesso sobre segundo fator de autenticação (otp). Aparecerá caso a conta do cidadão esteja com segundo fator de autenticação ativado.
Para solicitação do conteúdo da foto salva no cadastro do cidadão, deverá acessar, pelo método GET, o serviço https://sso.staging.acesso.gov.br/userinfo/picture e acrescentar o atributo Authorization ao header do HTTP da requisição:
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
Para serviços que precisem acessar de forma obrigatoria com os níveis prata ou ouro, poderão seguir os passos:
- Com usuário autenticado, deverá acessar, por meio do método GET ou POST, a URL https://confiabilidades.staging.acesso.gov.br/
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 |
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 |
- O resultado será o Catálogo apresentado com as configurações solicitadas. Após atendido as configurações, o Login Único devolverá o fluxo para aplicação por meio da Redirect URI adicionada na credencial, conforme Credencial de Teste para Login Único ou Credencial de Produção para Login Único.
Observações sobre as variáveis do serviço de catálogo
- Conteúdo para variável niveis : Será a informação do atributo id presente em cada nível no Resultado Esperado do Acesso ao Serviço de Confiabilidade Cadastral (Níveis)
- Tratamento do conteúdo para cada variável:
- Todos são obrigatórios, deve-se separá-los por vírgula. Exemplo (niveis=2,3)
- Apenas um é obrigatório, deve-se separar por barra invertida. Exemplo (niveis=(2/3)
Para verificar quais níveis da conta do cidadão está localizada, deverá acessar, pelo método GET, o serviço https://api.staging.acesso.gov.br/confiabilidades/v3/contas/cpf/niveis?response-type=ids
Parâmetros para requisição GET https://api.staging.acesso.gov.br/confiabilidades/v3/contas/cpf/niveis?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 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)
Para verificar quais selos de confiabilidade a conta do cidadão possui, deverá acessar, pelo método GET, o serviço https://api.staging.acesso.gov.br/confiabilidades/v3/contas/cpf/confiabilidades?response-type=ids
Parâmetros para requisição GET https://api.staging.acesso.gov.br/confiabilidades/v3/contas/cpf/confiabilidades?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)"
}
]
Verificar quais selos de confiabilidade estão disponíveis, acesse Resultado Esperado do Acesso ao Serviço de Confiabilidade Cadastral (Selos)
O objetivo do diagrama de sequência é apresentar, de forma visual, a ordem de implementação das chamadas para autenticação.
Verificar em cada passo os parâmetros necessários.
As categorias existentes no Login Único são:
[
{
"id": "1 (Bronze)",
"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 (Prata)",
"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 (Ouro)",
"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": "609 (agi_bank_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": "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": "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": "610 (itau_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": "624 (sicred_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": "626 (nubank_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": "627 (btg_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": "901 (cin_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)"
}
]
Para serviços que precisem acessar de forma obrigatoria com os níveis prata ou ouro, poderão seguir os passos:
- Com usuário autenticado, deverá acessar, por meio do método GET ou POST, a URL https://confiabilidades.staging.acesso.gov.br/
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 |
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 |
- O resultado será o Catálogo apresentado com as configurações solicitadas. Após atendido as configurações, o Login Único devolverá o fluxo para aplicação por meio da Redirect URI adicionada na credencial, conforme Credencial de Teste para Login Único ou Credencial de Produção para Login Único.
Observações sobre as variáveis do serviço de catálogo
- Conteúdo para variável niveis : Será a informação do atributo id presente em cada nível no Resultado Esperado do Acesso ao Serviço de Confiabilidade Cadastral (Níveis)
- Tratamento do conteúdo para cada variável:
- Todos são obrigatórios, deve-se separá-los por vírgula. Exemplo (niveis=2,3)
- Apenas um é obrigatório, deve-se separar por barra invertida. Exemplo (niveis=(2/3)
- Implementação obrigatória a fim de encerrar a sessão do usuário com o Login Único.
- Com usuário autenticado, deverá acessar, por meio do método GET ou POST, a URL: https://sso.staging.acesso.gov.br/logout. O acesso ao Log Out deverá ser pelo Front End da aplicação a ser integrada com Login Único.
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 na Credencial de Teste para Login Único ou Credencial de Produção para Login Único. |
Exemplo 1 de execução no front end em javascript
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();
Exemplo 2 de execução no front end em javascript
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:
- Na requisição de autenticação, adicionar o escopo “govbr_empresa“, conforme exemplo:
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
- Com o usuário autenticado, a aplicação deverá realizar uma requisição por meio do método GET a URL https://api.staging.acesso.gov.br/empresas/v2/empresas?filtrar-por-participante=**cpf** enviando as seguintes informações:
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). |
- O resultado em formato JSON é a lista de CNPJs do CPF autenticado, conforme o exemplo abaixo:
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)"
}
]
- Com o usuário autenticado, a aplicação cliente deverá acessar, por meio do método GET, a URL https://api.staging.acesso.gov.br/empresas/v2/empresas/cnpj/participantes/cpf enviando as seguintes informações:
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). |
- O resultado em formato JSON é o detalhamento do CNPJ do CPF autenticado, conforme o exemplo abaixo:
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)"
}
- Na requisição de autenticação, adicionar o escopo “govbr_recupera_certificadox509“, conforme exemplo:
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
- Com o usuário autenticado, a aplicação deverá realizar uma requisição por meio do método GET a URL https://sso.staging.acesso.gov.br/api/x509/info enviando as seguintes informações:
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 |
- O resultado em formato JSON é tipo de certificado da autenticação, conforme o exemplo abaixo:
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. )"
}