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.
Acerca de los tokens de transacción
- 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 (
txnclaim) 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
- Para los clientes de STS
- Accede a la Consola de administración y selecciona ». Haz clic en «Añadir cliente STS ».
- 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.
- 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
tctxreclamació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. - Configura el resto de propiedades necesarias y haz clic en «Guardar» para crear el cliente STS.
- Para solicitudes
- Accede a la Consola de administración y selecciona ». Haz clic en «Añadir aplicación» y selecciona cualquiera de las aplicaciones relacionadas con « OpenID Connect».
- 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.
- 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
tctxreclamació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. - 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
tctx reclamación de un token de transacción utilizando las siguientes reglas de prioridad:- 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. - Detalles de la solicitud proporcionados : Si no se ha configurado ninguna expresión CELx y la solicitud de intercambio de tokens incluye un
request_detailsparámetro, se utiliza el valor derequest_detailscomo latctxreclamación. - No hay contexto disponible : si no se proporciona ni una expresión CELx ni
request_details, latctxreclamación se omite del token de transacción.
Ejemplos de expresión de CELx
- 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_detailsparámetro de la solicitud de intercambio de tokens en las expresiones de CELx comorequestContext.tctx. Puedes mejorar este contexto añadiendo valores calculados en tiempo de ejecución:
Para consultar la documentación completa sobre la sintaxis de CELx, consulta la guía de funciones de atributos.requestContext.tctx.put("requestingUserName", user.userName)