Problème
Comment générer un jeton porteur d’E/S d’Adobe pour exécuter des appels API pour des solutions de marketing numérique telles que Target.
Procédure de création d’un jeton porteur pour exécuter les appels API d’E/S d’Adobe :
Générez une clé privée et un certificat public selon la documentation suivante : https://www.adobe.io/apis/cloudplatform/console/authentication/createcert.html
Sur Mac, les commandes suivantes sont intégrées à un terminal.
Sur un ordinateur, vous devez télécharger Cygwin (ou tout autre outil de préférences personnelles) et l'exécuter à partir de la ligne de commande. Voici les étapes à suivre pour télécharger et installer Cygwin :
*Remarque: Votre répertoire personnel est le suivant : C:\cygwin64\home\WINDOWSUSER
Vous pouvez rechercher et installer des packages supplémentaires pendant la phase d’installation. Je vous recommande d’installer tout ce qui concerne "curl" et "ssh".* Voici la commande à exécuter :
$ openssl req -nodes -text -x509 -newkey rsa:2048 -keyout secret.pem -out certificate.pem -days 356 |
---|
Remarque: Il vous pose plusieurs questions à remplir pour générer le certificat ; voir la capture d’écran ci-dessous :
Une fois les fichiers créés, vous convertissez le fichier secret.key en secret.pem à l’aide de la commande suivante :
$ openssl pkcs8 -topk8 -inform PEM -outform DER - in secret.pem -nocrypt secret.key |
---|
Voici les fichiers créés sur votre système de fichiers (vous pouvez déplacer ces fichiers vers un autre emplacement de votre ordinateur à ce stade pour l’organisation) :
Remarque : Les fichiers sont générés dans votre répertoire personnel : C:\cygwin64\home\WINDOWSUSER
Créez une intégration dans la console d’Adobe IO :
- Sélectionnez l’option "Accéder à une API", puis cliquez sur "Continuer".
- Sélectionnez Solution d’Adobe (actuellement disponible uniquement pour Target).
<b>Remarque :</b> l’utilisateur doit être un utilisateur d’Experience Cloud ET avoir accès à cette solution.
- Sélectionnez "Nouvelle intégration" et cliquez sur "Continuer".
- Remplissez le formulaire d’intégration.
- Faites glisser « certificate.pem » du système de fichiers vers le formulaire à charger.
- Une fois le fichier téléchargé, cliquez sur le bouton « Créer l’intégration » - voir la capture d’écran : fileuploaded_createint.
- Une fois le traitement terminé, cliquez sur "Continuer vers les détails de l’intégration".
Réussite! Vous avez maintenant créé une intégration.
Générer un jeton Web JSON (JWT) :
Dans l’interface utilisateur d’intégration, cliquez sur l’onglet JWT, collez dans la clé privée, cliquez sur le bouton Générer JWT - voir la capture d’écran : génération de JWT - entrée.
Échangez un jeton JWT contre un jeton d’accès du porteur :
Remarque : si vous exécutez cette action sur un terminal Mac, la réponse semble être tronquée. Utilisez plutôt Postman.
|{""id":""f6854718-2800-64a8-238e-e785e344f6cf",""name":""Exchange JWT for Bearer token",""description"":"""",""order":""048b6fc7-f1db-5028-ff21-45778613e2c5",""folders":""folders_order":,""timestamp":1516812553075,""owner":""860614",""public":"false",""events":,""variables":,""auth":null,""requests":{""id":""048b6fc7-f1db-5022" 8-ff21-45778613e2c5",""name":""Exchange JWT for Bearer token",""collectionId":""f6854718-2800-64a8-238e-e785e344f6cf",""method":""POST",""description":""JWT exchange flow"", "headers":"""""""", "dataMode"" :""params",""data":{""key":""client_id",""value":""0fa5e762277c414f903649dd51424ac6",""type":""text"},{""key":""client_secret",""value":""9ff202" 6f2-dfa4-4228-8dfa-11d809d4706b",""type":""text"},{""key":""jwt_token",""value":""eyJ0eXAiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJeyJeyJey HAiOjE0ODg4ODMzMzIsImlzcyI6IjY1NzhBNTU0NTZFODRFMjQ3RjAwMDEwMUBBZG9iZU9yZyIsInN1YiI6IjlDQ EyOTlenthCM0VDNkYwQTQ5NUM3RkB0ZWNoYWNjdC5hZG9iZS5jb20iLCJhdWQiJodHRwczovL2ltcy1YTE1u YuYWRvYmVsb2dpbi5jb20vYy8wZmE1ZTc2MjI3N2M0MTRmOTAzNjQ5ZGQ1MTQyNGFjIsImh0dHBzOi1zLW5hMS5hZG9iZWxvZ2LmNvbS9zL2VudF9zbWFydGNvbnRfc2RrIjp0cnVlfQ.LwiDDjwUf2Z2Z ap89vfWd2ZVnfG-FwpQplKvzEecTLua_hvGNfQAZBPTHbXICPkeNjr41cRUr_OmNuOmtFOwVokUjdCQ aGOqBNWWKPAyAdXhBdE05oFa2Gar6adytKv-vf7gAnVQbv-PUADbCtmxoOygbafXi9V3ZHz1FBwPJ8vpnZH Il3zVf420XwnzLa9IB02nUciG_fQ0b1Qgj429Yi7m-lhW—2bMZKyNdSnioNaICFg6ASY1vnNm1zICP22 4K_Lwzbrye8itgQStRUp1mH53Ww36xzqVxNIYLQCEoI9qxAJl0HQhaXeSPrU9PmcExIyKBim2CZzg",""":""text"},""rawModeData":"""",""url":""https:\/\/ims-na1.adobelogin.com\/ims\/exchange\/jwt\/",""response":,""pathVariableData":,""queryParams":","headerData":",""auth""" : null,""collection_id":""08283cc0-461e-155c-e07f-ca64bae1dcae",""isFromCollection":"true",""collectionRequestId":""29f7fc5f-7e6d" 01d4-de86-2f273b8a6429",""currentHelper":null,""helperAttributes":null}` |
| — |
Exemple de nom de fichier : exchangeJwt.json
- Importez le fichier dans Postman en accédant au fichier Importer : vous pouvez faire glisser et déposer le fichier .json ici ou le rechercher.
- Cela crée une "collection" dans Postman sur le côté gauche, avec un appel API nommé "Exchange JWT for Bearer token" (Échanger JWT pour le jeton porteur).
- Cliquez sur l’appel API "Exchange JWT for Bearer token".
- Dans la section principale de l’interface utilisateur, voici ce que vous voyez :

Remarque : comme indiqué en rouge ci-dessus, je suis dans l'onglet "Corps". Si vous vous trouvez dans un autre onglet, vous ne voyez pas les trois informations requises.
Informations nécessaires :
<b>client_id</b> : à obtenir dans la page d’aperçu de l’intégration
<b>client_secret</b> : à générer sur la page d’aperçu de l’intégration
<b>jwt_token</b> : à coller dans le jeton JWT généré que vous avez copié à l’étape précédente
Cliquez sur « Envoyer ».
Le jeton du porteur est récupéré, et est utilisé pour effectuer des appels API.

Le jeton access_token est utilisé dans le cadre des appels API que vous prévoyez d’exécuter.
| `"access_token"` `: ` `"eyJ4NXUiOiJpbXNfbmExLWtleS0xLmNlciIsImFsZyI6IlJTMjU2In0.eyJpZCI6IjE1MTY3NDgxNjU5MzZfMjdiNTkwYmUtYjVlYy00ZjhiLTkzNWEtZTAyMjZmYTZiYTk1X3VlMSIsImNsaWVudF9pZCI6IjQyOTkxMzRlNzRkNTRkNTZhY2YyYTc4YjcyYTdlNDFlIiwidXNlcl9pZCI6IjkwNTEyQTlDNUE2N0I3ODEwQTQ5NUM5NEB0ZWNoYWNjdC5hZG9iZS5jb20iLCJ0eXBlIjoiYWNjZXNzX3Rva2VuIiwiYXMiOiJpbXMtbmExIiwiZmciOiJTRDRZQUNZSEhQSDdPRkFBQUFBQUFBQUFFST09PT09PSIsIm1vaSI6IjM3NTliZjQxIiwiYyI6IndTVTd3b1hIZkZSQk5xQmo3M2Z4anc9PSIsImV4cGlyZXNfaW4iOiI4NjQwMDAwMCIsInNjb3BlIjoib3BlbmlkLEFkb2JlSUQsdGFyZ2V0X3NkayxyZWFkX29yZ2FuaXphdGlvbnMsYWRkaXRpb25hbF9pbmZvLnByb2plY3RlZFByb2R1Y3RDb250ZXh0IiwiY3JlYXRlZF9hdCI6IjE1MTY3NDgxNjU5MzYifQ.fVJVREKZH3PM71-Y05Kkqqxq_O_z7BL5NL6S4ypNoSwLuqR9WOiXsF0GYcWZr6oO-jgYj8WrRePQLkg4GSoVthSbbXU6aqajPV2TsFNHpXRuJFBhql0e2eVCEE_pVI9O_uCa8RloGjJuFyyEAvroQFEIJzC7Q-OAnkXMT7xD-3r1cEV2xP_N3s86t34M5udO4fjas3RCJtAS1BEZOotlF_rB0kfvCZR9Krf-SVi_VedpsK7ipoJGfs7CLdN-_a4YGTC2CBJXwdK-4T0QJRkWedr8ooS0tzzfVcQ4WEZfw1edi-OYSuIbXf-Obl5R9NCzi5RMceiGTyGMyRrEcmy3WQ"` |
| --- |
Exemple d’appel API :