Criar a solicitação pré-autorizada

Use essas informações para criar uma solicitação JWT pré-autorizada, que será utilizada no fluxo de código pré-autorizado.

Tipo de concessão de código pré-autorizado

O tipo de concessão de código pré-autorizado é introduzido como parte da especificação “ OpenID ” para a emissão de credenciais verificáveis (VCI). Este fluxo foi projetado para transferir a sessão do usuário do Emissor de Credenciais para o aplicativo Carteira.

O fluxo começa quando um usuário se autentica junto ao Emissor de Credenciais. Em seguida, o usuário faz uma solicitação para obter uma credencial. Essa solicitação aciona a geração do código de transferência de sessão, que é o pre-authorized_code. Para evitar o uso indevido do código por usuários não autorizados, é possível gerar um código de transação e enviá-lo ao usuário por e-mail ou SMS. O Emissor da Credencial, então, apresenta isso pre-authorized_code como parte da Oferta de Credencial e pode exibi-lo na forma de código QR.

O usuário, agora por meio do aplicativo Wallet, escaneia o código QR. Se for necessário inserir um código de transação, o aplicativo Wallet solicita que o usuário insira o código de transação. Em seguida, o pre-authorized_code (e o código da transação) são apresentados ao servidor de autorização.

O servidor de autorização valida a solicitação e a troca por um token de acesso. O aplicativo Wallet, então, usa o token de acesso para buscar a credencial solicitada pelo usuário.

Reivindicações da carga útil da solicitação pré-autorizada

A carga útil da solicitação pré-autorizada deve conter as seguintes reivindicações.

Tabela 1. Reivindicações da MUST
Nome da reclamação Descrição Valores válidos
iss Identificador único do emissor da credencial que emitiu o JWT URI válido do emissor da credencial.
sub Identificador de assunto principal O identificador exclusivo de um usuário.
exp Tempo de expiração do JWT O número de segundos de 1970-01-01T0:0:0Z, conforme medido em UTC.
Observação: O prazo de validade do JWT não pode ser superior a 3.600 segundos a partir do momento atual.
jti Identificador JWT Uma sequência opaca gerado aleatoriamente.

A carga útil da solicitação pré-autorizada pode conter as seguintes reivindicações.

Tabela 2. Alegações de MAY
Nome da reclamação Descrição Valores válidos
aud O emissor do servidor de autorização foi publicado em um endpoint bem conhecido. URI válido do emissor da credencial.
sub_type Tipo de identificador do assunto principal. Pode ser “uid”, “username” ou 'externalId'. O valor padrão é “uid”.
Região Região do sujeito principal O domínio de origem da identidade ao qual o sub pertence.
iat Horário de criação do JWT O número de segundos de 1970-01-01T0:0:0Z, conforme medido em UTC.
Observação: A data de criação do JWT não pode estar a mais de 3.600 segundos no passado.
tx_code A substituição das configurações pré-autorizadas pelo emissor da credencial. Um objeto JSON contendo as reivindicações descritas na tabela de reivindicações do código de transação.
estado_do_emissor Um valor opaco para vincular o contexto do emissor da credencial ao token de acesso gerado. Qualquer sequência. Também pode ser um JWT.

A tx_code solicitação só entra em vigor quando essa substituição for permitida nas configurações pré-autorizadas. Nesse modo, quando a tx_code solicitação é apresentada, é gerado um código de transação. As tabelas de códigos de transação descrevem as possíveis opções de substituição.

Tabela 3. Reclamações relacionadas a códigos de transação
Nome da reclamação Descrição Valor válido
modo_de_entrada Determine o conjunto de caracteres do código de transação. “numérico” (apenas números) ou “texto” (alfanumérico)
comprimento Determine o comprimento do código da transação. Um valor numérico entre 4 e 10
Descrição A mensagem que o aplicativo de carteira deve exibir ao usuário final. qualquer cadeia
Canal Descreva como fornecer o código de transação ao usuário final. Um objeto JSON contendo as reivindicações descritas na Tabela 4 abaixo.

Estão disponíveis três canais para o envio do código da transação: e-mail, SMS ou outros meios determinados pelo emissor da credencial. Na última opção, o servidor de autorização simplesmente retorna o código da transação ao emissor da credencial.

Tabela 4. Alegações do canal
Nome da reclamação Descrição Valor válido
type Tipo de canal para fornecer o código da transação ao usuário final. “e-mail”, “SMS” ou “emissor”
valor Endereço de e-mail do usuário final (para type = e-mail) ou número de telefone (para tipo = sms). Endereço de e-mail ou número de telefone válido.

Exemplo de carga útil de solicitação pré-autorizada

{
  "iss": "https://www.credential-issuer.com",
  "sub": "user@idsource.com",
  "sub_type": "username",
  "aud": "https://sometenant.ice.com/oauth2",
  "exp": 1324298520,
  "jti": "araiov8werli2awerlj",
  "tx_code": {
    "input_mode": "text",
    "length": 6,
    "description": "Please provide this transaction code:",
    "channel": {
       "type": "email",
       "value": "bob@ibm.com"
    },
  },
  "issuer_state": "sa82jpawfagnns"
}

Algoritmos suportados

A solicitação JWT pré-autorizada pode ser assinada usando qualquer um destes algoritmos: RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384 e PS512.

Este JWT é validado com base no URI JWKS do emissor da credencial. Certifique-se de que o JWT assinado inclua o kid cabeçalho para identificar de forma exclusiva a chave utilizada, pois o URI do JWKS pode publicar várias chaves. A configuração do URI JWKS do emissor de credenciais é feita nas configurações de federação. Certifique-se de que o identificador do emissor corresponda à iss declaração contida na carga útil da solicitação.

Exemplo de solicitação

Após a criação do JWT de solicitação pré-autorizada, é possível enviar uma solicitação ao endpoint de pré-autorização para gerar o código de pré-autorização.
 curl -ki -X POST https://<tenantId>/oauth2/preauth --data "eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJpc3Mi..." -H "Content-Type:application/jwt"