Geração de tokens de acesso para APIs do lado do servidor generating-access-tokens-for-server-side-apis
Algumas arquiteturas dependem de fazer chamadas para o Adobe Experience Manager (AEM) as a Cloud Service a partir de um aplicativo hospedado em um servidor fora da infraestrutura do AEM. Por exemplo, um aplicativo móvel chama um servidor, que então faz solicitações de API ao AEM as a Cloud Service.
Use o AEM as a Cloud Service Developer Console para criar uma conta técnica OAuth de servidor para servidor. Seu aplicativo troca sua ID de cliente e o segredo do cliente por um token de acesso usando a concessão client_credentials do Adobe Identity Management Services (IMS). Não é necessário nenhum certificado, chave privada ou JWT assinado.
developer.adobe.com/console. Crie e gerencie a conta técnica descrita aqui no Developer Console do AEM.O fluxo de servidor para servidor the-server-to-server-flow
Usuários com uma função de administrador da organização IMS que também são membros do perfil de produto Usuários do AEM ou Administradores do AEM no AEM Author podem criar uma conta técnica. O segredo do cliente é exibido somente para o usuário que o cria, no momento da criação. Um usuário com a função de administrador de ambiente do AEM as a Cloud Service pode exibir os detalhes da conta, que não incluem o segredo do cliente.
O fluxo de servidor para servidor envolve estas etapas:
- Crie uma conta técnica OAuth de servidor para servidor e salve suas credenciais, incluindo o segredo do cliente mostrado na criação.
- Armazene as credenciais com segurança no servidor que faz solicitações à AEM.
- Solicite um token de acesso do IMS usando a ID do cliente, o segredo do cliente e os escopos.
- Configure o perfil de produto da conta técnica e as permissões do AEM.
- Chame a API do AEM com o token de acesso como um token de portador.
Criar uma conta técnica e recuperar suas credenciais fetch-the-aem-as-a-cloud-service-credentials
-
Abrir Integrações. Abra o AEM Developer Console para o ambiente que seu aplicativo acessa e selecione Integrações. Selecione Criar nova conta técnica.
-
Criar a conta técnica. Na caixa de diálogo, selecione S2S (Servidor a Servidor OAuth) como o Tipo de credencial e selecione Criar.
-
Salvar o segredo do cliente. A caixa de diálogo Salvar o segredo do cliente mostra as credenciais, incluindo
technicalAccount.clientSecret. Selecione Baixar credenciais para salvá-las comoaem-s2s-credentials.jsonou selecione Copiar para a área de transferência. Armazene as credenciais em um gerenciador de segredos ou em outro local de acesso controlado para seu aplicativo.
Selecione Fechar. Na caixa de diálogo de confirmação Fechar sem mais acesso ao segredo, selecione Fechar somente depois de salvar o segredo com segurança. Depois que a caixa de diálogo é fechada, o segredo não pode ser exibido novamente.
-
Revise a conta técnica. A nova conta de servidor para servidor OAuth está listada com seu segredo de cliente Ativo. A ID secreta exibida na lista identifica um segredo. Esse não é o valor secreto e não pode ser usado como
client_secretem uma solicitação de token.
Para examinar os detalhes de um segredo posteriormente, abra o menu de linha do segredo do cliente e selecione Exibir. A caixa de diálogo de credenciais mostra o endpoint do IMS, os escopos, a ID do cliente, o email da conta técnica, a ID secreta e o status de revogação. Ela não mostra o valor do segredo do cliente.
Instalar as credenciais de serviço do AEM em um servidor que não seja da AEM install-the-aem-service-credentials-on-a-non-aem-server
Disponibilize as credenciais somente para o aplicativo do lado do servidor que chama o AEM. Use um gerenciador de segredos ou outro mecanismo de armazenamento controlado por acesso.
Não coloque um segredo do cliente no código do navegador, em aplicativos móveis, no controle de origem ou em logs. Trate os tokens de acesso como segredos também.
Solicitar um token de acesso OAuth request-an-oauth-access-token
Envie uma solicitação POST HTTPS para https://<imsEndpoint>/ims/token/v3. O imsEndpoint na sua credencial JSON é um nome de host IMS. Por exemplo, ims-na1.adobelogin.com usa https://ims-na1.adobelogin.com/ims/token/v3. Use o nome de host fornecido em suas credenciais, incluindo o nome de host do estágio ao usar credenciais de estágio.
Use Content-Type: application/x-www-form-urlencoded e inclua estes campos de formulário no corpo da solicitação:
grant_typeclient_credentialsclient_idtechnicalAccount.clientId de suas credenciais.client_secrettechnicalAccount.clientSecret salvo quando o segredo foi criado.scopescopes, unidos com vírgulas.Codificação URL de cada valor de formulário. Envie segredos no corpo da solicitação, não no URL ou na sequência de consulta.
A resposta inclui access_token, token_type e expires_in. Use access_token para chamar o AEM. O valor expires_in é o tempo de vida do token em segundos. Use esse valor em vez de considerar um tempo de expiração fixo.
Armazene em cache e reutilize o token de acesso até que sua expiração se aproxime, em seguida, solicite um novo token com as mesmas credenciais de cliente. Esta concessão não requer uma troca JWT ou um token de atualização.
Exemplo de autenticação do Node.js nodejs-authentication-example
Para uma implementação mínima de servidor para servidor do OAuth, consulte o exemplo de Biblioteca de Cliente de API AEM-CS. Ele usa APIs Node.js integradas e requer Node.js 18 ou mais recente, sem dependências adicionais.
O exemplo espera as credenciais dentro de um objeto integration. O arquivo aem-s2s-credentials.json baixado do AEM Developer Console contém as credenciais sem este invólucro. Vincule seu conteúdo antes de usá-lo com o exemplo, por exemplo com jq:
jq '{integration: .}' aem-s2s-credentials.json > downloaded_integration.json
Como alternativa, edite o arquivo para que seu conteúdo completo se torne o valor de um campo integration de nível superior. Em uma verificação do repositório de exemplo, execute:
node oauth-s2s-cli.js downloaded_integration.json
Para uso programático, o auxiliar do OAuth aceita o objeto encapsulado como requestAccessToken(credentials). Ele usa o nome do host IMS, a ID do cliente, o segredo do cliente e os escopos dentro de integration.
Mantenha o arquivo de credencial privado. A CLI imprime um token de acesso. Não envie sua saída para logs compartilhados ou publique-a. O arquivo README do exemplo também mostra como usar o token em uma solicitação de API do AEM.
Chamada da API do AEM calling-the-aem-api
Inclua o token de acesso no cabeçalho Authorization das solicitações para o ambiente AEM as a Cloud Service usando o valor Bearer <access_token>.
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://author-p<program-id>-e<environment-id>.adobeaemcloud.com/content/dam.json"
Use o nome do host para o ambiente e a camada que seu aplicativo acessa. Chame apenas recursos que a conta técnica está autorizada a acessar.
Definir as permissões apropriadas para o usuário da conta técnica no AEM set-the-appropriate-permissions-for-the-technical-account-user-in-aem
- Abra o Adobe Admin Console.
- Selecione AEM as a Cloud Service em Produtos e Serviços.
- Crie um perfil de produto para a integração ou selecione um perfil existente apropriado.
- Selecione Adicionar Usuário e adicione a conta técnica usando o
emailde suas credenciais. - Permita que as alterações no perfil de produto se propaguem. Faça uma chamada de API para o AEM com um token de acesso gerado para a conta técnica. O perfil de produto é sincronizado como um grupo do AEM, com a conta técnica como um membro.
- Na instância apropriada do autor do AEM, abra Ferramentas > Segurança > Grupos. Localize o grupo de perfil de produto e verifique se a conta técnica aparece em Membros. Você também pode verificar sua associação de grupo em Ferramentas > Segurança > Usuários.
- Abra Configurações > Segurança > Permissões. Selecione o grupo correspondente ao perfil do produto e configure as permissões necessárias para suas chamadas de API.
- Verifique as chamadas de API necessárias em relação a cada camada acessada pelo aplicativo. Conceda somente as permissões necessárias para a integração.
Para obter mais informações sobre usuários e grupos do IMS e do AEM, consulte Suporte ao IMS.
Fluxo do desenvolvedor developer-flow
Para testes locais, os desenvolvedores podem gerar um token de acesso de desenvolvimento diretamente no AEM Developer Console sem criar uma conta técnica OAuth de servidor para servidor. O token pode ser usado para chamar ambientes do AEM que o desenvolvedor pode acessar. Use credenciais OAuth de servidor para servidor, em vez de um token de desenvolvimento local, para aplicativos autônomos do lado do servidor.
Consulte as Diretrizes do desenvolvedor para obter as permissões necessárias para usar o AEM Developer Console.
Gerar o token de acesso generating-the-access-token
- No AEM Developer Console, vá para Integrações > Token local.
- Selecione Obter Token De Desenvolvimento Local.
Chamar o aplicativo AEM com um token de acesso call-the-aem-application-with-an-access-token
Use o token de acesso de desenvolvimento local como um token de portador no cabeçalho Authorization, conforme descrito em Chamando a API AEM.
Para um projeto do AEM em execução em sua máquina local, um token de acesso IMS não é necessário.
Girar segredos do cliente refresh-credentials
As credenciais de servidor para servidor do OAuth não exigem a renovação anual do certificado. Gire os segredos do cliente periodicamente e sempre que um segredo for exposto. Crie um novo segredo, alterne seus aplicativos para ele e, somente então, revogue o segredo antigo.
A criação e revogação de segredos requer os valores secretos que você salvou. O AEM Developer Console usa um segredo inserido somente para autenticar a solicitação com IMS e não o armazena.
-
Criar um novo segredo. Em Integrações, abra o menu de ações ao lado do nome da conta Servidor para Servidor OAuth e selecione Criar novo Segredo. Este é o menu em nível de conta, não um menu de linhas de segredo do cliente.
-
Autenticar com um segredo ativo. Na caixa de diálogo Criar novo Segredo, digite o valor de um segredo de cliente ativo para a conta e selecione Criar novo Segredo.
-
Salve o novo segredo. A caixa de diálogo mostra o novo segredo uma vez, com seus
clientId,secretId,clientSecretescopes. Baixe ou copie, armazene com segurança e feche a caixa de diálogo. Confirme se deseja fechá-lo somente depois de salvar o segredo com segurança. Depois que a caixa de diálogo é fechada, o novo segredo não pode ser exibido novamente.
-
Alternar aplicativos para o novo segredo. Substitua o valor
technicalAccount.clientSecretnas credenciais que cada instância e implantação do aplicativo usa com o novoclientSecret. Os outros valores de credencial não são alterados.Solicite um novo token de acesso com o novo segredo e verifique as chamadas de API do AEM necessárias antes de continuar. Ambos os segredos permanecem ativos durante a transferência do aplicativo. Reutilizar um token de acesso emitido anteriormente não verifica o novo segredo.
-
Selecione o segredo antigo para revogação. Depois que todos os aplicativos usarem o novo segredo, abra o menu de linha do segredo antigo e selecione Revogar. Verifique a ID do segredo para ter certeza de que selecionou o segredo antigo.
-
Confirmar revogação. Na caixa de diálogo Revogar segredo do cliente, verifique a ID do segredo do cliente a ser revogada, insira o valor desse segredo e selecione Revogar. Se você não tiver mais o valor secreto, entre em contato com o suporte da Adobe. Quando a revogação se propaga pelo IMS, os aplicativos não podem usar esse segredo para solicitar novos tokens. Os tokens de acesso existentes podem permanecer válidos.
-
Verificar o resultado. O segredo antigo está listado como Revogado, enquanto o novo segredo permanece Ativo.
Depois que a revogação entrar em vigor, verifique se o segredo antigo não pode emitir novos tokens de acesso e se o novo segredo pode ser emitido. Verificar o status exibido sozinho não verifica a propagação do IMS.
-
Remova o segredo revogado se não for mais necessário. Para remover o segredo revogado da lista, abra o menu de linhas, selecione Excluir e confirme.
Revogação de credenciais credentials-revocation
Revogar desabilita um segredo selecionado para novas solicitações de token. Exige que o valor do segredo seja revogado. A revogação pode demorar para se propagar. Não presuma que revogar um segredo invalida imediatamente os tokens de acesso já emitidos.
Excluir em um segredo revogado remove seus metadados, como a ID do segredo e o status de revogação, do AEM Developer Console. Ela não executa uma revogação IMS separada e não está disponível para segredos ativos.
Excluir uma conta técnica delete-a-technical-account
A exclusão de uma conta técnica revoga imediatamente a conta e todos os seus segredos de cliente no IMS. Nenhum token de acesso novo é emitido para nenhuma credencial na conta, e as integrações que o usam param de funcionar assim que os tokens atuais expiram. Para restaurar o acesso, você deve criar uma nova conta técnica, atualizar seus aplicativos com as credenciais e atribuir as permissões necessárias no AEM novamente.
A exclusão de conta não pode ser desfeita. Confirme somente depois de verificar quais aplicativos dependem da conta e não os use como uma etapa de rotação secreta individual.
-
Em Integrações, abra o menu de ações ao lado do nome da conta técnica e selecione Excluir.
-
Revise a caixa de diálogo Excluir conta técnica e selecione Excluir.
Migrar uma integração baseada em JWT migrate-a-jwt-based-integration
- Crie uma nova conta técnica OAuth de servidor para servidor no AEM Developer Console.
- Atribua a nova conta técnica aos perfis de produto necessários e configure as permissões do AEM.
- Atualize o aplicativo do lado do servidor para solicitar tokens usando
client_credentialsem vez de assinar e trocar um JWT. - Verifique a nova geração de token e as chamadas de API necessárias usando a nova conta.
- Depois que todas as instâncias do aplicativo usarem OAuth Server-to-Server, desative as credenciais antigas do JWT e exclua a conta técnica antiga.
Para as operações de certificado e chave privada na conta antiga, consulte o guia herdado do JWT. Não remova a conta antiga antes de verificar a integração de substituição.