Problema
Como gerar um token portador de E/S do Adobe para executar chamadas de API para soluções de marketing digital como o Target.
Etapas para criar um token de portador para executar chamadas de API de Adobe IO:
Gere a chave privada e o certificado público de acordo com a seguinte documentação: https://www.adobe.io/apis/cloudplatform/console/authentication/createcert.html
Em um Mac, os seguintes comandos são criados no terminal.
Em um computador, você precisa baixar o Cygwin (ou outra ferramenta de preferência pessoal) e executá-lo a partir da linha de comando. Estas são as etapas para baixar e instalar o Cygwin:
*Observação: Seu diretório inicial é: C:\cygwin64\home\WINDOWSUSER
Você pode procurar e instalar pacotes adicionais durante a fase de instalação. Recomendo instalar tudo relacionado a "curl" e "ssh".*
Este é o comando para executar:
$ openssl req -nodes -text -x509 -newkey rsa:2048 -keyout secret.pem -out certificate.pem -days 356 |
---|
Observação: Ele faz várias perguntas que você precisa preencher para gerar o certificado; veja a captura de tela abaixo:
Após a criação dos arquivos, converta o secret.key em secret.pem usando o seguinte comando:
$ openssl pkcs8 -topk8 -inform PEM -outform DER - in secret.pem -nocrypt secret.key |
---|
Estes são os arquivos que são criados em seu sistema de arquivos (você pode mover esses arquivos para outro local em sua máquina neste ponto por organização):
Observação: Os arquivos são gerados no seu diretório inicial: C:\cygwin64\home\WINDOWSUSER
Crie integração no console do Adobe IO:
- Selecione a opção "Acessar uma API" e clique em "continuar".
- Selecione Adobe Solution (atualmente disponível apenas para Target).
<b>Observação:</b> o usuário deve ser um usuário da Experience Cloud e ter acesso a essa solução.
- Selecione "New integration" e clique em "Continue".
- Preencha o formulário de integração.
- Arraste “certificate.pem” do sistema de arquivos para o formulário para fazer upload.
- Depois que o arquivo for carregado, clique no botão “Criar integração” - veja a captura de tela: fileuploaded_createint.
- Quando o processamento estiver concluído, clique em "continuar com os detalhes de integração".
Sucesso! Agora você criou uma integração.
Gerar JSON Web Token (JWT):
Na interface do usuário de integração, clique na guia JWT , cole na chave privada, clique no botão Gerar JWT - veja a captura de tela: geração de JWT - entrada.
Trocar um JWT por um token de acesso do portador:
Observação: se você executar isso em um terminal Mac, a resposta parece ficar truncada. Em vez disso, use o Postman.
| `{""id"":""f6854718-2800-64a8-238e-e785e344f6cf",""name":""Exchange JWT para token portador"",""description":""""," ""order"":""048b6fc7-f1db-5028-ff21-4578613e2c5",""folders":,""folders_order":,""timestamp"":15168125 53075,""owner":""860614"",""public":"false",""events"":,""variables":,""auth":null,""requests":{""id":""048b6fc7-f1db-50 228-ff21-45778613e2c5",""name"":""Exchange JWT para token portador"",""collectionId":""f6854718-2800-64a8-238 e-e785e344f6cf"",""método"":""POST",""descrição"":""fluxo de troca JWT""," "cabeçalhos"":"""," "dataMode":""params",""data"":{""key"":""client_id"","" "value"":""0fa5e762277c414f903649dd51424ac6"",""type":""text"},{""key":""client_secret",""value":""9ff00 26f2-dfa4-4228-8dfa-11d809d4706b",""type":""text"},{""key":""jwt_token"",""value":""eyJ0eXAiJKV QiLCJhbGciJSUzI1NiJ9.eyJleHAOjE0ODg4ODMzMzIsImlzcyI6IjY1NzhBNTU0NTZFODRFMjQ3RjAwMDE MUBBZG9iZU9yZyIsInN1YiI6IjlDQeyOTlENThCM0VDNkYwQTQ5NUM3RkB0ZWNoYWNjdC5hZG9iZS5jb20i LCJhdWQiJodHRwczovL2Falência1uYTEYWRvYmVsb2dpbi5jb20vYy8wZmE1ZTc2MjI3N2M0MTRmOTAzNjQ5ZQ GQ1MTQyNGFjNiIsImh0dHBzŌi8vaW1zLW5hMS5hZG9iZWxvLuLmNvbS9zL2VudF9zbWFGNvbnRlbnRfd c2RrIjp0cnVlfQ.LwiDjhwUfZ2ap89vfWd2ZVnfG-FwpQplKvzEecTLua_hvGNfQAZBPTHbVaXICPkeNjr1 cRUr_OmNuOmtFOwVokUjd5rQCaGOqBNWKPAyAdXhBdE05oFa2Gar6adytKv-vf7gAnVQbv-PUADbCCMOX ygbafXi9V3ZHz1FBwPJ8vpnZH4Il3zVf420XwnzLa9IB02nUciG_fQ0b1Qgj429Yi7m-lhW—2bMZKyNdSnioNaICFg6ASY1vnNm1zICPla224K_Lwzbrye8itgQStRUp1mH53Ww36xzqVxNIYLQCEoI9qxAJlR0HQXeSPr U9PmcExIyKBim2CZzg",""type"":""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}` |
| — |
Exemplo de nome de arquivo: exchangeJwt.json
- Importar arquivo para o Postman acessando Importação de arquivo: você pode arrastar e soltar o arquivo .json aqui ou procurar o arquivo.
- Isso cria uma "coleção" no Postman no lado esquerdo, com uma chamada de API nela chamada "Exchange JWT for Bearer token".
- Clique na chamada da API "Exchange JWT for Bearer token".
- Na seção principal da interface do usuário, você verá o seguinte:

Observação: como destacado em vermelho acima, estou na guia "Body". Se você estiver em outra guia, não verá as três informações necessárias.
Informações necessárias:
<b>client_id</b>: obter da página Visão geral da integração
<b>client_secret</b>: gerar na página Visão geral da integração
<b>jwt_token</b>: colar no token JWT gerado que você copiou na etapa anterior
Clique em “Enviar”.
O token do portador é recuperado, e é usado para fazer chamadas de API.

O access_token é usado como parte das chamadas de API que você pretende executar.
| `"access_token"` `: ` `"eyJ4NXUiOiJpbXNfbmExLWtleS0xLmNlciIsImFsZyI6IlJTMjU2In0.eyJpZCI6IjE1MTY3NDgxNjU5MzZfMjdiNTkwYmUtYjVlYy00ZjhiLTkzNWEtZTAyMjZmYTZiYTk1X3VlMSIsImNsaWVudF9pZCI6IjQyOTkxMzRlNzRkNTRkNTZhY2YyYTc4YjcyYTdlNDFlIiwidXNlcl9pZCI6IjkwNTEyQTlDNUE2N0I3ODEwQTQ5NUM5NEB0ZWNoYWNjdC5hZG9iZS5jb20iLCJ0eXBlIjoiYWNjZXNzX3Rva2VuIiwiYXMiOiJpbXMtbmExIiwiZmciOiJTRDRZQUNZSEhQSDdPRkFBQUFBQUFBQUFFST09PT09PSIsIm1vaSI6IjM3NTliZjQxIiwiYyI6IndTVTd3b1hIZkZSQk5xQmo3M2Z4anc9PSIsImV4cGlyZXNfaW4iOiI4NjQwMDAwMCIsInNjb3BlIjoib3BlbmlkLEFkb2JlSUQsdGFyZ2V0X3NkayxyZWFkX29yZ2FuaXphdGlvbnMsYWRkaXRpb25hbF9pbmZvLnByb2plY3RlZFByb2R1Y3RDb250ZXh0IiwiY3JlYXRlZF9hdCI6IjE1MTY3NDgxNjU5MzYifQ.fVJVREKZH3PM71-Y05Kkqqxq_O_z7BL5NL6S4ypNoSwLuqR9WOiXsF0GYcWZr6oO-jgYj8WrRePQLkg4GSoVthSbbXU6aqajPV2TsFNHpXRuJFBhql0e2eVCEE_pVI9O_uCa8RloGjJuFyyEAvroQFEIJzC7Q-OAnkXMT7xD-3r1cEV2xP_N3s86t34M5udO4fjas3RCJtAS1BEZOotlF_rB0kfvCZR9Krf-SVi_VedpsK7ipoJGfs7CLdN-_a4YGTC2CBJXwdK-4T0QJRkWedr8ooS0tzzfVcQ4WEZfw1edi-OYSuIbXf-Obl5R9NCzi5RMceiGTyGMyRrEcmy3WQ"` |
| --- |
Exemplo de chamada de API: