6.4.5. Detalhamento de Serviços de Confiança Obrigatórios
6.4.5.1. Serviços de Autorização
6.4.5.1.1. Código de Autorização (Authorizaon Code Request)
Serviço para obter do tular a autorização de uso da sua chave privada.
Caso o tular possua mais de um cerficado, o PSC deverá apresentá-los para que o tular faça a escolha no mesmo contexto de aplicação em que transitarem os fatores de
autencação.
a) Solicitação
Path : <URI-base>/oauth/authorize;
Método HTTPS: GET;
Parâmetros da requisição: concatenados após o Path como parâmetros hp query, usando o formato "applicaon/x-www-form-urlencoded":
response_type: obrigatório, valor "code";
client_id: obrigatório, deve conter a identificação da aplicação;
redirect_uri: opcional, deve ter a URI para redirecionar o usuário de volta para a aplicação de origem. A URI deve estar na lista de URI's autorizadas para a aplicação. Deve ser
URL ENCODED. Se não informado, será considerada a primeira URI cadastrada para a aplicação;
state: opcional, é retornado sem modificações para aplicação de origem;
Recomendado. Um valor opaco usado pela aplicação para manter o estado entre a requisição e a resposta. O serviço de autorização incluirá este valor ao redirecionar o módulo
do usuário de volta ao endereço da aplicação. Este parâmetro deverá ser usado para prevenir ataques de falsificação de requisições entre sites (cross-site request forgery).
lifetime: opcional, indica o tempo de vida desejado para o token a ser gerado. Inteiro, em segundos;
scope: opcional, se não informado, será considerado "single_signature".
(ver lista de escopos abaixo). Possíveis valores para o parâmetro:
single_signature: token que permite a assinatura de apenas um conteúdo (hash), sendo invalidado apos a sua utilização;
multi_signature: token que permite a assinatura de multiplos hashes em uma única requisicao, sendo invalidado apos a sua utilização;
signature_session: token de sessão OAuth que permite várias assinaturas em várias chamadas a API, desde que o token esteja dentro do prazo de validade ou que não tenha sido
revogado pela aplicação ou pelo usuário.
code_challenge: obrigatório, ver RFC 7636
code_challenge_method: obrigatório, valor “S256” (ver RFC 7636).
login_hint: opcional, valor de CPF ou CNPJ a ser informado como filtro para seleção do certificado a ser utilizado.
b) Resposta da Requisição de Código de Autorização:
Se o usuário autorizar a solicitação, o PSC emite um código de autorização com tempo de validade curto e retorna para aplicação cliente com uma URI de redirecionamento contendo
parâmetros no componente hp query, usando o formato "applicaon/x-www-form-urlencoded":
code: obrigatório, código de autorização gerado pelo PSC, a ser usado na solicitação do token de acesso;
state: obrigatório caso tenha sido informado na requisição, deverá conter o que foi enviado na requisição.
Se o usuário não autorizar a solicitação, o PSC retorna para aplicação cliente através de sua redirect_uri os seguintes parâmetros via hp query, usando o formato "applicaon/x-www-
form-urlencoded":
error: obrigatório, com o valor “user_denied”;
state: obrigatório caso tenha sido informado na requisição, deverá conter o que foi enviado na requisição.
6.4.5.1.2. Token de Acesso
Após a obtenção de código de autorização, o token de acesso deve ser solicitado com parâmetros no formato "applicaon/x-www-form-urlencoded".
a) Solicitação
Path : <URI-base>/oauth/token;
Método HTTPS: POST;
Parâmetros da requisição: formato "applicaon/x-www-form-urlencoded"
grant_type: obrigatório, valor "authorization_code";
client_id: obrigatório, deve conter a identificação da aplicação;
client_secret: obrigatório, deve conter o segredo associado à aplicação;
code: obrigatório, deve conter código de autorização retornado do Serviço Código de Autorização;
redirect_uri: opcional, deve ser igual ao informado no Serviço Código de Autorização;
code_verifier: obrigatório, correspondendo a code_challenge enviado na Requisição de Código de Autorização, ver RFC 7636.
Exemplo:
POST {.../oauth/token} HTTP/1.1
Host: {servidor do PSC}
Content-Type: applicaon/x-www-form-urlencoded
grant_type=authorizaon_code
&client_id=MyApplicaonId
&client_secret=123qwe
&code=09b30f74d40a7fece1a26cccc97746c364e61022
&redirect_uri=hps://idg.receita.fazenda.gov.br
&code_verifier={Verifier}
b) Resposta da Requisição de Token de Acesso:
Se a requisição é valida e autorizada o PSC emite um token de acesso e retorna a requisição com sucesso, via HTTP Status Code 200.
Parâmetros de retorno: formato "applicaon/json;charset=UTF-8"
access_token: obrigatório, valor do token de acesso;
token_type: obrigatório, valor "Bearer";
expires_in: obrigatório, valor inteiro com validade do token em segundos.Para acesso a objeto de pessoas sicas não deve ultrapassar (7 dias), sendo que para pessoas
jurídicas este limite será de (30 dias);
scope: opcional, deve ser informado se o escopo retornado for diferente do solicitado pela aplicação;
authorized_ideficaon_type: obrigatório, deverá conter “CPF” ou “CNPJ”
authorized_ideficaon: obrigatório, valor correspondendo ao CPF ou CNPJ associado ao tular do cerficado.
Exemplo:
HTTP/1.1 200 OK
SEI/ITI - 0314558 - Instrução Normativa https://sei.iti.gov.br/sei/controlador.php?acao=documento_imprimir_...