Problema
Cómo generar un token al portador de E/S de Adobe para ejecutar llamadas de API para soluciones de marketing digital como Target.
Pasos para crear un token de portador para ejecutar llamadas a la API de E/S de Adobe:
Genere la clave privada y el certificado público según la siguiente documentación: https://www.adobe.io/apis/cloudplatform/console/authentication/createcert.html
En un Mac, los siguientes comandos están integrados en el terminal.
En un ordenador, tienes que descargar Cygwin (u otra herramienta de preferencia personal) y ejecutarla desde la línea de comandos. Estos son los pasos para descargar e instalar Cygwin:
*Nota: El directorio principal es: C:\cygwin64\home\WINDOWSUSER
Puede buscar e instalar paquetes adicionales durante la fase de instalación. Recomiendo instalar todo lo relacionado con "curl" y "ssh".*
Este es el comando para ejecutar:
$ openssl req -nodes -text -x509 -newkey rsa:2048 -keyout secret.pem -out certificate.pem -days 356 |
---|
Nota: Le hace varias preguntas que debe completar para generar el certificado; vea la captura de pantalla a continuación:
Una vez creados los archivos, convierta secret.key a secret.pem con el siguiente comando:
$ openssl pkcs8 -topk8 -inform PEM -outform DER - in secret.pem -nocrypt secret.key |
---|
Estos son los archivos que se crean en su sistema de archivos (puede mover estos archivos a otra ubicación de su equipo en este momento para la organización):
Nota: Los archivos se generan en el directorio de inicio: C:\cygwin64\home\WINDOWSUSER
Cree la integración dentro de la consola de IO de Adobe:
- Seleccione la opción "Acceso a una API" y, a continuación, haga clic en "Continuar".
- Seleccione Solución de Adobe (actualmente solo disponible para Target).
<b>Nota:</b> el usuario debe ser un usuario de Experience Cloud y tener acceso a esa solución.
- Seleccione "Nueva integración" y haga clic en "Continuar".
- Rellene el formulario de integración.
- Arrastre "certificate.pem" desde el sistema de archivos al formulario para cargarlo.
- Una vez cargado el archivo, haga clic en el botón "Crear integración" (véase la captura de pantalla): fileuploaded_createint.
- Cuando termine el procesamiento, haga clic en "Continuar con los detalles de la integración".
Correcto! Ha creado una integración.
Generar token web JSON (JWT):
En la interfaz de usuario de integración, haga clic en la pestaña JWT, pegue la clave privada, haga clic en el botón Generar JWT - ver captura de pantalla: generación de JWT: entrada.
Intercambio del JWT por un token de acceso al portador:
Nota: si se ejecuta en un terminal de Mac, la respuesta parece quedar truncada. En su lugar, utilice Postman.
| "{""id"":""f6854718-2800-64a8-238e-e785e344f6cf",""name":""Exchange JWT for Bearer token"",""description"":""""," "order":""048b6fc7-f1db-5028-ff21-45778613e2c5"",""folders":,""folders_order":,""timestamp"":1516812553 075,""owner":""860614"",""public":"false",""events"":,""variables":,""auth":null,""request":{""id":""048b6fc7-f1db-5028-ff 21-45778613e2c5",""name":""Exchange JWT for Bearer token"",""collectionId"":""f6854718-2800-64a8-238e-e78 5e344f6cf"",""método":""POST"",""descripción":""Flujo de intercambio JWT"",""encabezados":"""",""dataMode"":""params",""data":{""clave":""client_id"",""value":":"0fa"5e762277c414f903649dd51424ac6"",""type":""text"},{""key":""client_secret"",""value"":""9ff026f2-dfa4 -4228-8dfa-11d809d4706b"",""type"":""text"},{""key"":""jwt_token"",""value":""eyJ0eXAiOiJKV1QiLCJhhl bGciOiJSUzI1NiJ9.eyJleHAiOjE0ODg4ODMzMzIsImlzcyI6IjY1NzhBNTU0NTZFODRFMjQ3RjAwMDEwMUBZG9iZU ZyIsInN1YiI6IjlDQjEyOTlENThCM0VDNkYwQTQ5NUM3RkB0ZWNYWNjdC5hZG9iZS5jb20iLCJhdWQi OiJodHRwczovL2ltcy1uYTEuYWRvYmVsb2dpbi5jb20vYy8wZmE1ZTc2MjI3N2M0MTRmOTAzNjQ5ZGQ1MTQ NGFjNiIsImh0dHBzOi8vaW1zLW5hMS5hZG9iZWxvZ2luLmNvbS9zL2VudF9zbWFydGNvbnRlbnRfc2RrIjr p0cnVlfQ.LwiDDjhwUfZ2ap89vfWd2ZVnfG-FwpQplKvzEecTLua_hvGNfQAZBPTHbVaXICPkeNjr41cRUr OmNuOmtFOwVokUjd5rQCaGOqBNWKPAyAAdXhBdE05oFa2Gar6adytKv-vf7gAnVQbv-PUADbCtmxoOygbaf Xi9V3ZHz1FBwPJ8vpnZH4Il3zVf420XwnzLa9IB02nUciG_fQ0b1Qgj429Yi7m-lhW—2bMZKyNdSnioNa ICFg6ASY1vnNm1zICPla224K_Lwzbrye8itgQStRUp1mH53Ww36xzqVxNIYLQCEoI9qxAJlR0HQhaXeSPr9PmcExIyKBim2CZzg",""type":""text"},""rawModeData"":"""",""url":""https:\/\/ims-na1.adobelogin.com\/ims\/exchange\/jwt\/"",""responses":,""pathVariableData": ,""queryParams":,""headerData":,""auth"":null,""collection_id"":""08283cc0-461e-155c-e07f-ca64bae1dase"",""isFromCollection":"true", "collectionRequestId"":""29f7fc5f-7e6d-01d4-de86-2f273b8a6429"",""currentHelper"":null,""helperAttributes"":null}` |
| — |
Ejemplo de nombre de archivo: exchangeJwt.json
- Importar archivo en Postman accediendo al archivo Importar: puede arrastrar y soltar el archivo .json aquí o buscar el archivo.
- Esto crea una "colección" en Postman en el lado izquierdo, con una llamada a la API llamada "Intercambiar JWT por token de portador".
- Haga clic en la llamada de API "Intercambiar JWT por token de portador".
- En la sección principal de la interfaz de usuario, esto es lo que se ve:

Nota: como se indica arriba en rojo, estoy en la pestaña "Cuerpo". Si se encuentra en otra pestaña, no verá los tres datos necesarios.
Información necesaria
:<b>client_id</b>: obténgalo de la página de resumen de la integración
<b>client_secret</b>: genérelo en la página de resumen de la integración
<b>jwt_token</b>: pegue el token JWT generado que copió en el paso anterior
Haga clic en "Enviar".
Se recupera el token de portador, que se usa para hacer llamadas a la API.

El access_token es lo que se usa como parte de las llamadas a las API que pretende ejecutar.
| `"access_token"` `: ` `"eyJ4NXUiOiJpbXNfbmExLWtleS0xLmNlciIsImFsZyI6IlJTMjU2In0.eyJpZCI6IjE1MTY3NDgxNjU5MzZfMjdiNTkwYmUtYjVlYy00ZjhiLTkzNWEtZTAyMjZmYTZiYTk1X3VlMSIsImNsaWVudF9pZCI6IjQyOTkxMzRlNzRkNTRkNTZhY2YyYTc4YjcyYTdlNDFlIiwidXNlcl9pZCI6IjkwNTEyQTlDNUE2N0I3ODEwQTQ5NUM5NEB0ZWNoYWNjdC5hZG9iZS5jb20iLCJ0eXBlIjoiYWNjZXNzX3Rva2VuIiwiYXMiOiJpbXMtbmExIiwiZmciOiJTRDRZQUNZSEhQSDdPRkFBQUFBQUFBQUFFST09PT09PSIsIm1vaSI6IjM3NTliZjQxIiwiYyI6IndTVTd3b1hIZkZSQk5xQmo3M2Z4anc9PSIsImV4cGlyZXNfaW4iOiI4NjQwMDAwMCIsInNjb3BlIjoib3BlbmlkLEFkb2JlSUQsdGFyZ2V0X3NkayxyZWFkX29yZ2FuaXphdGlvbnMsYWRkaXRpb25hbF9pbmZvLnByb2plY3RlZFByb2R1Y3RDb250ZXh0IiwiY3JlYXRlZF9hdCI6IjE1MTY3NDgxNjU5MzYifQ.fVJVREKZH3PM71-Y05Kkqqxq_O_z7BL5NL6S4ypNoSwLuqR9WOiXsF0GYcWZr6oO-jgYj8WrRePQLkg4GSoVthSbbXU6aqajPV2TsFNHpXRuJFBhql0e2eVCEE_pVI9O_uCa8RloGjJuFyyEAvroQFEIJzC7Q-OAnkXMT7xD-3r1cEV2xP_N3s86t34M5udO4fjas3RCJtAS1BEZOotlF_rB0kfvCZR9Krf-SVi_VedpsK7ipoJGfs7CLdN-_a4YGTC2CBJXwdK-4T0QJRkWedr8ooS0tzzfVcQ4WEZfw1edi-OYSuIbXf-Obl5R9NCzi5RMceiGTyGMyRrEcmy3WQ"` |
| --- |
Ejemplo de llamada a la API: