Credenciais de serviço

Última atualização em 2024-01-26
  • Tópicos
  • APIs
    Exibir mais informações sobre este tópico
  • Criado para:
  • Intermediate
    Experienced
    Developer

As integrações com o Adobe Experience Manager (AEM) as a Cloud Service devem ser capazes de autenticar com segurança no serviço de AEM. O Console do desenvolvedor do AEM concede acesso às Credenciais de serviço, que são usadas para facilitar aplicativos, sistemas e serviços externos para interagir programaticamente com os serviços de Autor ou Publicação do AEM por HTTP.

As Credenciais de serviço podem parecer semelhantes Tokens de acesso de desenvolvimento local mas são diferentes de algumas maneiras principais:

  • As Credenciais de serviço são associadas às Contas técnicas. Várias credenciais de serviço podem estar ativas para uma Conta Técnica.
  • As credenciais de serviço são não tokens de acesso simples, em vez de serem credenciais usadas para obter tokens de acesso.
  • As Credenciais de serviço são mais permanentes (os certificados expiram a cada 365 dias) e não são alteradas, a menos que sejam revogadas, enquanto os Tokens de acesso de desenvolvimento local expiram diariamente.
  • As Credenciais de serviço para um ambiente as a Cloud Service AEM são mapeadas para um único usuário de conta técnica do AEM AEM, enquanto os Tokens de acesso de desenvolvimento local são autenticados como o usuário do que gerou o token de acesso.
  • Um ambiente as a Cloud Service do AEM pode ter até dez contas técnicas, cada uma com suas próprias Credenciais de serviço, cada uma mapeando para um usuário do AEM de conta técnica distinto.

As Credenciais de serviço e os tokens de acesso gerados por elas, além dos Tokens de acesso de desenvolvimento local, devem ser mantidos em segredo. Como todos os três podem ser usados para obter, o acesso ao seu respectivo ambiente as a Cloud Service AEM.

Gerar credenciais de serviço

A geração de Credenciais de serviço é dividida em duas etapas:

  1. Uma criação de conta técnica única por um administrador da organização Adobe IMS
  2. O download e o uso das credenciais de serviço da conta técnica JSON

Criar uma conta técnica

As Credenciais de serviço, diferentemente dos Tokens de acesso de desenvolvimento local, exigem que uma Conta técnica seja criada por um Administrador IMS da Adobe Org antes de serem baixadas. Contas técnicas discretas devem ser criadas para cada cliente que requer acesso programático ao AEM.

Criar uma conta técnica

As Contas técnicas são criadas uma vez, no entanto, as Chaves privadas usam o para gerenciar Credenciais de serviço associadas à Conta técnica do podem ser gerenciadas ao longo do tempo. Por exemplo, novas Credenciais de chave privada/serviço devem ser geradas antes da expiração da chave privada atual, para permitir o acesso ininterrupto por um usuário das Credenciais de serviço.

  1. Verifique se você está conectado como:
    • Administrador de sistema da organização IMS da Adobe
    • Membro do Administradores de AEM Perfil de produto IMS em Autor do AEM
  2. Efetue logon no Adobe Cloud Manager
  3. Abra o Programa que contém o ambiente as a Cloud Service AEM para integrar e configure as Credenciais de serviço para
  4. Toque nas reticências ao lado do ambiente no Ambientes e selecione Console do desenvolvedor
  5. Toque no Integrações guia
  6. Toque no Contas técnicas guia
  7. Toque Criar nova conta técnica botão
  8. As Credenciais de serviço da conta técnica são inicializadas e exibidas como JSON

Console do desenvolvedor do AEM - Integrações - Obter credenciais de serviço

Depois que as Credenciais de serviço do ambiente AEM as Cloud Service forem inicializadas, outros desenvolvedores do AEM em sua organização Adobe IMS poderão baixá-las.

Baixar credenciais de serviço

Baixar credenciais de serviço

O download das Credenciais de serviço segue as etapas semelhantes à inicialização.

  1. Verifique se você está conectado como:
    • Administrador da organização Adobe IMS
    • Membro do Administradores de AEM Perfil de produto IMS em Autor do AEM
  2. Efetue logon no Adobe Cloud Manager
  3. Abra o Programa que contém o ambiente as a Cloud Service AEM para integrar com o
  4. Toque nas reticências ao lado do ambiente no Ambientes e selecione Console do desenvolvedor
  5. Toque no Integrações guia
  6. Toque no Contas técnicas guia
  7. Expanda a Conta técnica a ser usado
  8. Expanda a Chave privada cujas credenciais de serviço serão baixadas e verificar se o status é Ativo
  9. Toque no > Exibir associado à Chave privada, que exibe as Credenciais de serviço JSON
  10. Toque no botão de download no canto superior esquerdo para baixar o arquivo JSON que contém o valor Credenciais de serviço e salvar o arquivo em um local seguro

Instalar as Credenciais de Serviço

As Credenciais de serviço fornecem os detalhes necessários para gerar um JWT, que é substituído por um token de acesso usado para autenticação com o AEM as a Cloud Service. As Credenciais de Serviço devem ser armazenadas em um local seguro acessível aos aplicativos, sistemas ou serviços externos que as utilizam para acessar o AEM. Como e onde as Credenciais de serviço são gerenciadas são exclusivas por cliente.

Para simplificar, este tutorial passa as Credenciais de serviço no pela linha de comando. No entanto, trabalhe com sua equipe de Segurança de TI para entender como armazenar e acessar essas credenciais de acordo com as diretrizes de segurança de sua organização.

  1. Copie o baixadas as Credenciais de serviço JSON para um arquivo chamado service_token.json na raiz do projeto
    • Lembre-se, nunca confirmar quaisquer credenciais ao Git!

Usar credenciais de serviço

As Credenciais de serviço, um objeto JSON totalmente formado, não são as mesmas que o JWT nem o token de acesso. Em vez disso, as Credenciais de serviço (que contêm uma chave privada) são usadas para gerar um JWT, que é substituído por um token de acesso pelas APIs do Adobe IMS.

Credenciais de Serviço - Aplicativo Externo

  1. Baixe as credenciais de serviço do Console do desenvolvedor do AEM em um local seguro
  2. O aplicativo externo precisa interagir programaticamente com o ambiente as a Cloud Service do AEM
  3. O Aplicativo Externo lê as Credenciais de Serviço de um local seguro
  4. O aplicativo externo usa informações das credenciais de serviço para criar um token JWT
  5. O token JWT é enviado ao Adobe IMS para troca por um token de acesso
  6. O Adobe IMS retorna um token de acesso que pode ser usado para acessar o AEM as a Cloud Service
    • Os tokens de acesso não podem alterar um tempo de expiração.
  7. O aplicativo externo faz solicitações HTTP ao AEM as a Cloud Service, adicionando o token de acesso como um token de portador ao cabeçalho de autorização das solicitações HTTP
  8. O AEM as a Cloud Service recebe a solicitação HTTP, autentica a solicitação e realiza o trabalho solicitado pela solicitação HTTP e retorna uma resposta HTTP de volta ao Aplicativo externo

Atualizações no aplicativo externo

Para acessar o AEM as a Cloud Service usando as Credenciais de serviço do, o aplicativo externo deve ser atualizado de três maneiras:

  1. Ler nas Credenciais de serviço
  • Para simplificar, as Credenciais de serviço são lidas a partir do arquivo JSON baixado. No entanto, em cenários de uso real, as Credenciais de serviço devem ser armazenadas com segurança, de acordo com as diretrizes de segurança de sua organização
  1. Gerar um JWT a partir das Credenciais de serviço
  2. Trocar o JWT por um token de acesso
  • Quando as Credenciais de serviço estão presentes, o aplicativo externo usa esse token de acesso em vez do Token de acesso de desenvolvimento local, ao acessar o AEM as a Cloud Service

Neste tutorial, Adobe @adobe/jwt-auth O módulo npm é usado para ambos, (1) gerar o JWT a partir das Credenciais de serviço e (2) trocá-lo por um token de acesso, em uma única chamada de função. Se seu aplicativo não for baseado em JavaScript, reveja o código de amostra em outros idiomas para saber como criar um JWT a partir das Credenciais de serviço e trocá-lo por um token de acesso com o Adobe IMS.

Ler as credenciais de serviço

Revise o getCommandLineParams() Portanto, veja como o arquivo JSON de credenciais de serviço é lido usando o mesmo código usado para ler no JSON do token de acesso de desenvolvimento local.

function getCommandLineParams() {
    ...

    // Read in the credentials from the provided JSON file
    // Since both the Local Development Access Token and Service Credentials files are JSON, this same approach can be re-used
    if (parameters.file) {
        parameters.developerConsoleCredentials = JSON.parse(fs.readFileSync(parameters.file));
    }

    ...
    return parameters;
}

Criar um JWT e trocar por um token de acesso

Depois que as Credenciais de serviço são lidas, elas são usadas para gerar um JWT, que é então trocado com as APIs do Adobe IMS por um token de acesso. Esse token de acesso pode ser usado para acessar o AEM as a Cloud Service.

Este aplicativo de exemplo é baseado em Node.js, portanto, é melhor usá-lo @adobe/jwt-auth Módulo npm para facilitar a (1) geração de JWT e (20) troca com o Adobe IMS. Se o aplicativo for desenvolvido em outro idioma, revise as amostras de código apropriadas sobre como criar a solicitação HTTP para o Adobe IMS usando outras linguagens de programação.

  1. Atualize o getAccessToken(..) para inspecionar o conteúdo do arquivo JSON e determinar se ele representa um Token de acesso de desenvolvimento local ou Credenciais de serviço. Este objetivo pode ser facilmente alcançado verificando a .accessToken propriedade, que só existe para o Token de acesso de desenvolvimento local JSON.

    Se as Credenciais de serviço forem fornecidas, o aplicativo gerará um JWT e o trocará com o Adobe IMS por um token de acesso. Use o @adobe/jwt-authdo auth(...) Função que gera um JWT e o troca por um token de acesso em uma única chamada de função. Os parâmetros para auth(..) métodos são um Objeto JSON composto de informações específicas disponível no JSON de Credenciais de serviço, conforme descrito abaixo no código.

 async function getAccessToken(developerConsoleCredentials) {

     if (developerConsoleCredentials.accessToken) {
         // This is a Local Development access token
         return developerConsoleCredentials.accessToken;
     } else {
         // This is the Service Credentials JSON object that must be exchanged with Adobe IMS for an access token
         let serviceCredentials = developerConsoleCredentials.integration;

         // Use the @adobe/jwt-auth library to pass the service credentials generated a JWT and exchange that with Adobe IMS for an access token.
         // If other programming languages are used, please see these code samples: https://www.adobe.io/authentication/auth-methods.html#!AdobeDocs/adobeio-auth/master/JWT/samples/samples.md
         let { access_token } = await auth({
             clientId: serviceCredentials.technicalAccount.clientId, // Client Id
             technicalAccountId: serviceCredentials.id,              // Technical Account Id
             orgId: serviceCredentials.org,                          // Adobe IMS Org Id
             clientSecret: serviceCredentials.technicalAccount.clientSecret, // Client Secret
             privateKey: serviceCredentials.privateKey,              // Private Key to sign the JWT
             metaScopes: serviceCredentials.metascopes.split(','),   // Meta Scopes defining level of access the access token should provide
             ims: `https://${serviceCredentials.imsEndpoint}`,       // IMS endpoint used to obtain the access token from
         });

         return access_token;
     }
 }
Agora, dependendo de qual arquivo JSON, o Token de acesso de desenvolvimento local JSON ou o JSON de credenciais de serviço, é transmitido por meio desse parâmetro de linha de comando "file", o aplicativo derivará um token de acesso.

Lembre-se, enquanto as Credenciais de serviço expiram a cada 365 dias, o JWT e o token de acesso correspondente expiram com frequência e precisam ser atualizados antes de expirarem. Isso pode ser feito usando um "refresh_token" [fornecido pelo Adobe IMS](https://www.adobe.io/authentication/auth-methods.html#!AdobeDocs/adobeio-auth/master/OAuth/OAuth.md#access-tokens).
  1. Com essas alterações em vigor, o JSON de credenciais de serviço foi baixado do Console do desenvolvedor do AEM e, para simplificar, salvo como service_token.json na mesma pasta que esta index.js. Agora, vamos executar o aplicativo substituindo o parâmetro de linha de comando file com service_token.jsone atualizando o propertyValue a um novo valor para que os efeitos sejam aparentes no AEM.

    $ node index.js \
        aem=https://author-p1234-e5678.adobeaemcloud.com \
        folder=/wknd-shared/en/adventures/napa-wine-tasting \
        propertyName=metadata/dc:rights \
        propertyValue="WKND Restricted Use" \
        file=service_token.json
    

    A saída para o terminal é semelhante a:

    200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_277654931.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_239751461.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_280313729.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_286664352.jpg.json
    

    A variável 403 - Proibido indica erros nas chamadas HTTP API para o AEM as a Cloud Service. Esses erros 403 Proibidos ocorrem ao tentar atualizar os metadados dos ativos.

    O motivo para isso é que o token de acesso derivado de Credenciais de serviço autentica a solicitação para o AEM usando um usuário AEM de conta técnica criado automaticamente, que, por padrão, tem somente acesso de leitura. Para fornecer ao aplicativo acesso de gravação ao AEM, o usuário da conta técnica AEM associado ao token de acesso deve receber permissão no AEM.

Configuração do acesso no AEM

O token de acesso derivado de Credenciais de serviço usa uma conta técnica do usuário AEM que tem associação à Colaboradores Grupo de usuários AEM.

Credenciais de serviço - Conta técnica do usuário AEM

Quando o usuário técnico AEM existir no AEM (após a primeira solicitação HTTP com o token de acesso), as permissões desse usuário AEM AEM poderão ser gerenciadas da mesma forma que os outros usuários do.

  1. Primeiro, localize o nome de logon AEM da conta técnica abrindo o JSON de credenciais de serviço baixado no Console do desenvolvedor AEM e localize o integration.email que deve ser semelhante a: 12345678-abcd-9000-efgh-0987654321c@techacct.adobe.com.
  2. Fazer logon no serviço do autor do ambiente AEM correspondente como um administrador AEM
  3. Navegue até Ferramentas > Segurança > Usuários
  4. Localize o usuário AEM com a Nome de logon identificadas na Etapa 1, e abrir a sua Propriedades
  5. Navegue até a Grupos e adicione a guia Usuários DAM grupo (a quem como acesso de gravação aos ativos)
  6. Toque Salvar e fechar

Com a conta técnica permitida no AEM para ter permissões de gravação em ativos, execute o aplicativo novamente:

$ node index.js \
    aem=https://author-p1234-e5678.adobeaemcloud.com \
    folder=/wknd-shared/en/adventures/napa-wine-tasting \
    propertyName=metadata/dc:rights \
    propertyValue="WKND Restricted Use" \
    file=service_token.json

A saída para o terminal é semelhante a:

200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_277654931.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_286664352.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_239751461.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_280313729.jpg.json

Verificar as alterações

  1. Faça logon no ambiente do AEM as a Cloud Service que foi atualizado (usando o mesmo nome de host fornecido na variável aem parâmetro de linha de comando)
  2. Navegue até a Assets > Arquivos
  3. Navegue até a pasta de ativos especificada pelo folder parâmetro de linha de comando, por exemplo WKND > Inglês > Aventuras > Degustação de Vinho Napa
  4. Abra o Propriedades para qualquer ativo na pasta
  5. Navegue até a Avançado guia
  6. Revise o valor da propriedade atualizada, por exemplo Copyright que está mapeado para o atualizado metadata/dc:rights A propriedade JCR, que agora reflete o valor fornecido na variável propertyValue parâmetro, por exemplo Uso Restrito da WKND

Atualização de Metadados de Uso Restrito da WKND

Parabéns.

Agora que acessamos programaticamente o AEM as a Cloud Service usando um token de acesso de desenvolvimento local e um token de acesso de serviço para serviço pronto para produção!

Nesta página