Señal de transacción

Los tokens de transacción son tokens especializados, de validez limitada OAuth 2.0, diseñados para proporcionar una autorización segura en la comunicación entre servicios dentro de un dominio de confianza. Según el borrador de especificación de la IETF ( draft-ietf-oauth-transaction-tokens ), estos tokens son JWT firmados que contienen información inmutable sobre el contexto y la autorización de transacciones específicas.

Nota: El token de transacción es una función que se puede solicitar; VDEV-186514: «Securing AI Agents». Para solicitar esta función, ponte en contacto con tu representante de ventas de IBM o con IBM e indica tu interés en activar esta función. También puedes crear un ticket de asistencia indicando el número de la función, si tienes permiso para ello. IBM® Verify Las suscripciones de prueba no permiten crear tickets de asistencia.

Acerca de los tokens de transacción

En las arquitecturas modernas de microservicios, una sola solicitud externa suele desencadenar flujos de trabajo internos en los que intervienen varios servicios. Los tokens de transacción resuelven los retos de seguridad que plantean estos escenarios al ofrecer lo siguiente:
  • Contexto de transacción inmutable : La afirmación tctx (contexto de transacción) contiene información específica de la transacción que no puede modificarse a lo largo de la cadena de llamadas, lo que impide la manipulación de los parámetros.
  • Trazabilidad completa : Cada token de transacción incluye un identificador único de transacción (txn claim) que permite el seguimiento de principio a fin a lo largo de todos los servicios implicados en la tramitación de una solicitud.
  • Autorización de cargas de trabajo : La reclamación req_wl (carga de trabajo del solicitante) mantiene una cadena de todas las cargas de trabajo que han gestionado la transacción, lo que permite tomar decisiones de autorización precisas basadas en la ruta de la llamada.
  • Conservación del contexto : cuando un token de transacción se utiliza como token de sujeto en intercambios posteriores de tokens (tokens de sustitución), se conservan el contexto y el identificador de la transacción, lo que garantiza la coherencia a lo largo de todo el flujo de trabajo.

Configuración del token de transacción en IBM Verify

Los tokens de transacción pueden solicitarse a través del flujo estándar de intercambio de tokens de OAuth 2.0 y pueden configurarse utilizando un cliente STS o una aplicación de OpenID Connect.
Para los clientes de STS
  1. Accede a la Consola de administración y selecciona «Aplicaciones » > «Clientes STS ». Haz clic en «Añadir cliente STS ».
  2. En el paso «Configuración del intercambio de tokens », selecciona «Token de transacción» en el menú desplegable de «Token solicitado ».
    Nota: Los tokens de transacción también pueden configurarse como token de sujeto o token de actor, dependiendo de tu caso de uso.
  3. En el paso «Configuración del token solicitado », encontrarás una opción para configurar el contexto de la transacción. Este campo admite una expresión CELx cuyo resultado se asigna directamente a la tctx reclamación en el token de transacción resultante. La expresión debe dar como resultado un objeto JSON válido. Por ejemplo:
    {
      "amount": "100.00",
      "currency": "USD",
      "merchant_id": "requestContext.subject_token.email"
    }
    Nota: El campo «Contexto de la transacción» solo es visible cuando el «Tóken solicitado» está configurado como «Tóken de transacción ». Este campo no es aplicable a otros tipos de tokens.
  4. Configura el resto de propiedades necesarias y haz clic en «Guardar» para crear el cliente STS.
Para solicitudes
  1. Accede a la Consola de administración y selecciona «Aplicaciones » > «Aplicaciones ». Haz clic en «Añadir aplicación» y selecciona cualquiera de las aplicaciones relacionadas con « OpenID Connect».
  2. En la pestaña «Inicio de sesión », ve a la sección «Intercambio de tokens ». Selecciona «Token de transacción» en el menú desplegable correspondiente a «Token solicitado ».
    Nota: Los tokens de transacción también pueden configurarse como token de sujeto o token de actor, dependiendo de tu caso de uso.
  3. Configura el contexto de la transacción como una expresión CELx cuyo resultado sea un objeto JSON válido. Esto se asigna directamente a la tctx reclamación del token de transacción resultante.
    Nota: El campo «Contexto de la transacción» solo es visible cuando el «Tóken solicitado» está configurado como «Tóken de transacción ». Este campo no es aplicable a otros tipos de tokens.
  4. Configura el resto de propiedades necesarias y haz clic en «Guardar» para crear la aplicación.

Asignación del contexto de la transacción

Una característica distintiva de los tokens de transacción es la tctx reclamación (contexto de la transacción), que es una reclamación inmutable que define el contexto de la transacción que se está llevando a cabo. Cuando un token de transacción se utiliza como token de sujeto en un flujo de intercambio de tokens posterior, el token resultante conserva la misma tctx afirmación, lo que permite una trazabilidad completa a lo largo de todo el ciclo de vida de la transacción.

Lógica de generación del contexto de la transacción

IBM Verify determina la tctx reclamación de un token de transacción utilizando las siguientes reglas de prioridad:
  1. Definición de la expresión CELx : Si se ha configurado una expresión CELx en el contexto de una transacción (tal y como se describe en el paso 4 anterior), dicha expresión se evalúa y su resultado se utiliza como reclamación tctx .
  2. Detalles de la solicitud proporcionados : Si no se ha configurado ninguna expresión CELx y la solicitud de intercambio de tokens incluye un request_details parámetro, se utiliza el valor de request_details como la tctx reclamación.
  3. No hay contexto disponible : si no se proporciona ni una expresión CELx ni request_details , la tctx reclamación se omite del token de transacción.

Ejemplos de expresión de CELx

Los siguientes ejemplos muestran expresiones CELx de asignación de contexto de transacción para situaciones habituales:
Escenario 1: Definición de un contexto de transacción completo
En este ejemplo se define una carga útil JSON completa para la reclamación tctx. Las afirmaciones de los tokens de sujeto y actor están disponibles en CELx en requestContext.subjectToken y requestContext.actorToken, respectivamente:
{
  "amount": "100.00",
  "currency": "USD",
  "merchant_id": "requestContext.subject_token.email"
}
Escenario 2: Ampliar los detalles de la solicitud con valores en tiempo de ejecución
Se puede acceder al request_details parámetro de la solicitud de intercambio de tokens en las expresiones de CELx como requestContext.tctx. Puedes mejorar este contexto añadiendo valores calculados en tiempo de ejecución:
requestContext.tctx.put("requestingUserName", user.userName)
Para consultar la documentación completa sobre la sintaxis de CELx, consulta la guía de funciones de atributos.