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.

Observação: O token de transação é um recurso que pode ser solicitado; VDEV-186514: Proteção de agentes de IA. Para solicitar esse recurso, entre em contato com seu representante de vendas da IBM ou com o contato da IBM e indique seu interesse em ativar essa funcionalidade. Você também pode criar um ticket de suporte com o número do recurso, caso tenha permissão para isso. IBM® Verify Os usuários com assinaturas de teste não podem criar tickets de suporte.

Sobre os tokens de transação

Nas arquiteturas modernas de microsserviços, uma única solicitação externa costuma acionar fluxos de trabalho internos que envolvem vários serviços. Os tokens de transação resolvem os desafios de segurança nesses cenários ao oferecer o seguinte:
  • tctx Contexto 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 (txn claim) 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_wl reivindicaçã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

Os tokens de transação podem ser solicitados por meio do fluxo padrão de troca de tokens do OAuth 2.0 e podem ser configurados usando um cliente STS ou um aplicativo do OpenID Connect.
Para clientes da STS
  1. Acesse o Console de Administração e selecione Aplicativos > Clientes STS. Clique em “Adicionar cliente STS ”.
  2. 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.
  3. 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 tctx reivindicaçã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.
  4. Configure as demais propriedades necessárias e clique em “Salvar” para criar o cliente STS.
Para inscrições
  1. Acesse o Console de Administração e selecione Aplicativos > Aplicativos. Clique em “Adicionar aplicativo” e selecione qualquer um dos aplicativos relacionados ao OpenID Connect.
  2. 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.
  3. 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 tctx reivindicaçã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.
  4. 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

IBM Verify determina a tctx reivindicação de um token de transação utilizando as seguintes regras de precedência:
  1. 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 tctx reivindicação.
  2. Detalhes da solicitação fornecidos : Se nenhuma expressão CELx estiver configurada e a solicitação de troca de token incluir um request_details parâmetro, o valor de request_details será usado como a tctx reivindicação.
  3. Não há contexto disponível : Se não request_details for fornecida nenhuma expressão CELx, a tctx reivindicação é omitida do token de transação.

Exemplos de expressão de CELx

Os exemplos a seguir demonstram expressões CELx de mapeamento de contexto de transação para cenários comuns:
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_details parâmetro da solicitação de troca de token pode ser acessado nas expressões do CELx como requestContext.tctx. Você pode aprimorar esse contexto adicionando valores calculados em tempo de execução:
requestContext.tctx.put("requestingUserName", user.userName)
Para obter a documentação completa sobre a sintaxe do CELx, consulte o guia de funções de atributos.