Jeton de transaction

Les jetons de transaction sont des jetons spécialisés, à durée de validité limitée, OAuth 2.0, conçus pour assurer une autorisation sécurisée des communications entre services au sein d'un domaine de confiance. Conformément au projet de spécification de l'IETF ( draft-ietf-oauth-transaction-tokens ), ces jetons sont des JWT signés qui contiennent des informations immuables relatives au contexte et à l'autorisation pour des transactions spécifiques.

Remarque : le jeton de transaction est une fonctionnalité disponible sur demande, VDEV-186514: Sécurisation des agents IA. Pour demander cette fonctionnalité, veuillez contacter votre représentant commercial IBM ou votre interlocuteur IBM et lui faire part de votre souhait d'activer cette fonctionnalité. Vous pouvez également créer un ticket d'assistance en indiquant le numéro de la fonctionnalité si vous disposez des autorisations nécessaires. IBM® Verify Les abonnements d'essai ne permettent pas de créer des tickets d'assistance.

À propos des jetons de transaction

Dans les architectures modernes basées sur les microservices, une seule requête externe déclenche souvent des flux de travail internes impliquant plusieurs services. Les jetons de transaction permettent de relever les défis liés à la sécurité dans ces scénarios en offrant les avantages suivants :
  • Contexte de transaction immuable : la revendication tctx (contexte de transaction) contient des informations spécifiques à la transaction qui ne peuvent être modifiées tout au long de la chaîne d'appels, ce qui empêche toute altération des paramètres.
  • Traçabilité complète : chaque jeton de transaction comporte un identifiant unique (txn claim) qui permet un suivi de bout en bout à travers tous les services impliqués dans le traitement d'une requête.
  • Autorisation des charges de travail : la revendication req_wl (charge de travail du demandeur) conserve une chaîne de toutes les charges de travail ayant traité la transaction, ce qui permet de prendre des décisions d'autorisation précises en fonction du chemin d'appel.
  • Préservation du contexte : lorsqu'un jeton de transaction est utilisé comme jeton sujet lors d'échanges de jetons ultérieurs (jetons de remplacement), le contexte et l'identifiant de la transaction sont conservés, ce qui garantit la cohérence tout au long du flux de travail.

Configuration du jeton de transaction dans IBM Verify

Les jetons de transaction peuvent être demandés via le flux standard d'échange de jetons de l' OAuth ( 2.0 ) et peuvent être configurés à l'aide d'un client STS ou d'une application OpenID Connect.
Pour les clients STS
  1. Accédez à la console d'administration, puis sélectionnez « Applications > Clients STS ». Cliquez sur « Ajouter un client STS ».
  2. À l'étape « Paramètres d'échange de jetons », sélectionnez « Jeton de transaction » dans le menu déroulant « Jeton demandé ».
    Remarque : les jetons de transaction peuvent également être configurés comme jeton de sujet ou jeton d'acteur, selon votre cas d'utilisation.
  3. À l'étape « Paramètres du jeton demandé », vous trouverez une option permettant de configurer le contexte de transaction. Ce champ accepte une expression CELx dont la valeur de sortie est directement associée à la tctx réclamation dans le jeton de transaction résultant. L'expression doit donner lieu à un objet JSON valide. Par exemple :
    {
      "amount": "100.00",
      "currency": "USD",
      "merchant_id": "requestContext.subject_token.email"
    }
    Remarque : le champ « Contexte de la transaction » n'est visible que lorsque le paramètre « Jeton demandé » est défini sur « Jeton de transaction ». Ce champ ne s'applique pas aux autres types de jetons.
  4. Configurez les autres propriétés requises, puis cliquez sur « Enregistrer » pour créer le client STS.
Pour les candidatures
  1. Accédez à la console d'administration, puis sélectionnez Applications > Applications. Cliquez sur « Ajouter une application » et sélectionnez l'une des applications liées à « OpenID Connect ».
  2. Dans l'onglet « Connexion », accédez à la section « Échange de jetons ». Sélectionnez « Transaction token » dans le menu déroulant correspondant au champ « Requested token ».
    Remarque : les jetons de transaction peuvent également être configurés comme jeton de sujet ou jeton d'acteur, selon votre cas d'utilisation.
  3. Configurez le contexte de transaction sous la forme d'une expression CELx dont le résultat est un objet JSON valide. Cela correspond directement à la tctx réclamation contenue dans le jeton de transaction généré.
    Remarque : le champ « Contexte de la transaction » n'est visible que lorsque le paramètre « Jeton demandé » est défini sur « Jeton de transaction ». Ce champ ne s'applique pas aux autres types de jetons.
  4. Configurez les autres propriétés requises, puis cliquez sur « Enregistrer » pour créer l'application.

Mappage du contexte de transaction

L'une des caractéristiques distinctives des jetons de transaction est la tctx revendication (contexte de transaction), qui est une revendication immuable définissant le contexte de la transaction en cours d'exécution. Lorsqu'un jeton de transaction est utilisé comme jeton sujet dans un flux d'échange de jetons ultérieur, le jeton résultant conserve la même tctx revendication, ce qui permet une traçabilité complète tout au long du cycle de vie de la transaction.

Logique de génération du contexte de transaction

IBM Verify détermine la tctx revendication d'un jeton de transaction en appliquant les règles de priorité suivantes :
  1. Définition de l'expression CELx : si une expression CELx de contexte de transaction est configurée (comme décrit à l'étape 4 ci-dessus), celle-ci est évaluée et son résultat est utilisé comme réclamation tctx .
  2. Détails de la requête fournis : si aucune expression CELx n'est configurée et que la requête d'échange de jetons inclut un request_details paramètre, la valeur de request_details est utilisée comme revendication tctx .
  3. Aucun contexte disponible : si aucune request_details expression CELx n'est fournie, la tctx revendication est omise du jeton de transaction.

Exemples d'expression de CELx

Les exemples suivants illustrent des expressions CELx de mappage de contexte de transaction pour des scénarios courants :
Scénario 1 : Définition d'un contexte de transaction complet
Cet exemple définit une charge utile JSON complète pour la revendication tctx. Les revendications de jetons « sujet » et « acteur » sont disponibles dans CELx respectivement sous les références suivantes : requestContext.subjectToken et requestContext.actorToken :
{
  "amount": "100.00",
  "currency": "USD",
  "merchant_id": "requestContext.subject_token.email"
}
Scénario 2 : Enrichissement des détails d'une requête avec des valeurs d'exécution
Le request_details paramètre issu de la requête d'échange de jeton est accessible dans les expressions CELx sous la forme requestContext.tctx. Vous pouvez enrichir ce contexte en y ajoutant des valeurs calculées lors de l'exécution :
requestContext.tctx.put("requestingUserName", user.userName)
Pour consulter la documentation complète sur la syntaxe CELx, reportez-vous au guide des fonctions d'attribut.