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.
À propos des jetons de transaction
- 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 (
txnclaim) 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
- Pour les clients STS
- Accédez à la console d'administration, puis sélectionnez ». Cliquez sur « Ajouter un client STS ».
- À 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.
- À 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
tctxré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. - Configurez les autres propriétés requises, puis cliquez sur « Enregistrer » pour créer le client STS.
- Pour les candidatures
- Accédez à la console d'administration, puis sélectionnez . Cliquez sur « Ajouter une application » et sélectionnez l'une des applications liées à « OpenID Connect ».
- 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.
- 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
tctxré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. - 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
tctx revendication d'un jeton de transaction en appliquant les règles de priorité suivantes :- 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. - 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_detailsparamètre, la valeur derequest_detailsest utilisée comme revendicationtctx. - Aucun contexte disponible : si aucune
request_detailsexpression CELx n'est fournie, latctxrevendication est omise du jeton de transaction.
Exemples d'expression de CELx
- 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_detailsparamètre issu de la requête d'échange de jeton est accessible dans les expressions CELx sous la formerequestContext.tctx. Vous pouvez enrichir ce contexte en y ajoutant des valeurs calculées lors de l'exécution :
Pour consulter la documentation complète sur la syntaxe CELx, reportez-vous au guide des fonctions d'attribut.requestContext.tctx.put("requestingUserName", user.userName)