Token da Transação
Os tokens de transação são tokens especializados, com validade limitada OAuth 2.0, projetados para fornecer autorização segura para a comunicação entre serviços dentro de um domínio de confiança. Com base no rascunho da especificação da IETF ( draft-ietf-oauth-transaction-tokens ), esses tokens são JWTs assinados que contêm informações imutáveis de contexto e autorização para transações específicas.
Sobre os tokens de transação
tctxContexto de transação imutável : A declaração (contexto de transação) contém informações específicas da transação que não podem ser modificadas ao longo da cadeia de chamadas, impedindo a adulteração de parâmetros.- Rastreabilidade completa : Cada token de transação inclui um identificador único de transação (
txnclaim) que permite o rastreamento de ponta a ponta em todos os serviços envolvidos no processamento de uma solicitação. - Autorização de carga de trabalho : A
req_wlreivindicação (carga de trabalho do solicitante) mantém uma cadeia de todas as cargas de trabalho que processaram a transação, permitindo decisões precisas de autorização com base no caminho da chamada. - Preservação do contexto : Quando um token de transação é utilizado como token de referência em trocas de tokens subsequentes (tokens de substituição), o contexto e o identificador da transação são preservados, garantindo a consistência em todo o fluxo de trabalho.
Configurando o token de transação em IBM Verify
- Para clientes da STS
- Acesse o Console de Administração e selecione . Clique em “Adicionar cliente STS ”.
- Na etapa “Configurações de troca de token ”, selecione “Token de transação” no menu suspenso “Token solicitado ”.Observação: os tokens de transação também podem ser configurados como token de sujeito ou token de ator, dependendo do seu caso de uso.
- Na etapa “Configurações do token solicitado ”, você encontrará uma opção para configurar o contexto da transação. Este campo aceita uma expressão CELx cujo resultado é mapeado diretamente para a
tctxreivindicação no token de transação resultante. A expressão deve resultar em um objeto JSON válido. Por exemplo,{ "amount": "100.00", "currency": "USD", "merchant_id": "requestContext.subject_token.email" }Observação: O campo “Contexto da transação” só fica visível quando o “Token solicitado” estiver definido como “Token de transação ”. Este campo não se aplica a outros tipos de token. - Configure as demais propriedades necessárias e clique em “Salvar” para criar o cliente STS.
- Para inscrições
- Acesse o Console de Administração e selecione . Clique em “Adicionar aplicativo” e selecione qualquer um dos aplicativos relacionados ao OpenID Connect.
- Na guia “Login ”, acesse a seção “Troca de token ”. Selecione “Token de transação” no menu suspenso correspondente a “Token solicitado ”.Observação: os tokens de transação também podem ser configurados como token de sujeito ou token de ator, dependendo do seu caso de uso.
- Configure o contexto da transação como uma expressão CELx cujo resultado seja um objeto JSON válido. Isso está diretamente mapeado para a
tctxreivindicação no token de transação resultante.Observação: O campo “Contexto da transação” só fica visível quando o “Token solicitado” estiver definido como “Token de transação ”. Este campo não se aplica a outros tipos de token. - Configure as demais propriedades necessárias e clique em “Salvar” para criar o aplicativo.
Mapeamento do contexto da transação
Uma característica distintiva dos tokens de transação é a tctx reivindicação (contexto da transação), que é uma reivindicação imutável que define o contexto da transação que está sendo realizada. Quando um token de transação é utilizado como token de sujeito em um fluxo subsequente de troca de tokens, o token resultante mantém a mesma tctx reivindicação, permitindo a rastreabilidade completa ao longo de todo o ciclo de vida da transação.
Lógica de geração do contexto da transação
tctx reivindicação de um token de transação utilizando as seguintes regras de precedência:- Definição da expressão CELx : Se uma expressão CELx no contexto de transação estiver configurada (conforme descrito na Etapa 4 anterior), a expressão é avaliada e seu resultado é utilizado como a
tctxreivindicação. - Detalhes da solicitação fornecidos : Se nenhuma expressão CELx estiver configurada e a solicitação de troca de token incluir um
request_detailsparâmetro, o valor derequest_detailsserá usado como atctxreivindicação. - Não há contexto disponível : Se não
request_detailsfor fornecida nenhuma expressão CELx, atctxreivindicação é omitida do token de transação.
Exemplos de expressão de CELx
- Cenário 1: Definição de um contexto de transação completo
- Este exemplo define uma carga JSON completa para a reivindicação tctx. As declarações de tokens de sujeito e de ator estão disponíveis no CELx como requestContext.subjectToken e requestContext.actorToken, respectivamente:
{ "amount": "100.00", "currency": "USD", "merchant_id": "requestContext.subject_token.email" } - Cenário 2: Complementação dos detalhes da solicitação com valores de tempo de execução
- O
request_detailsparâmetro da solicitação de troca de token pode ser acessado nas expressões do CELx comorequestContext.tctx. Você pode aprimorar esse contexto adicionando valores calculados em tempo de execução:
Para obter a documentação completa sobre a sintaxe do CELx, consulte o guia de funções de atributos.requestContext.tctx.put("requestingUserName", user.userName)