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.
| 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.
| 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.
| 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.
| 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
curl -ki -X POST https://<tenantId>/oauth2/preauth --data "eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJpc3Mi..." -H "Content-Type:application/jwt"