Resolução de falhas de autorização de domínio da API integrada do PDF no AEM
O Visualizador do AEM PDF e os componentes personalizados que usam a API incorporada do Adobe PDF falham com um erro de autorização de domínio quando o domínio que hospeda a página não está registrado no Adobe Developer Console para a ID do cliente da API incorporada do PDF associada. A API de incorporação do PDF permite somente um domínio por ID do cliente e rejeita solicitações de origens não registradas, portanto, cada domínio do AEM — Autor, Publicação e DNS personalizado — precisa de sua própria ID do cliente. O AEMaaCS também exige a Configuração sensível ao contexto (CaConfig) do Sling para o visualizador do PDF em vez de uma configuração OSGi, o que resolve a ID do cliente errada. Criar IDs de cliente por domínio e configurá-las no caminho CaConfig correto restaura o visualizador.
Descrição description
Ambientes:
- Adobe Experience Manager as a Cloud Service (AEMaaCS)
- AEM Brand Portal
- AEM Managed Services
- Visualizador do PDF para os Componentes principais do AEM e a API integrada do Adobe PDF
Problema/sintomas:
- O Visualizador do PDF exibe Este domínio de aplicativo (
<domínio>) não está autorizado a usar a ID de Cliente da API Incorporada do PDF. - A visualização do PDF mostra Visualização de arquivo não disponível com o código de erro UnauthorizedDomainForClientId.
- O Visualizador do PDF carrega, mas não renderiza nada, e o painel de rede do navegador mostra chamadas de API do visualizador bloqueadas com uma incompatibilidade de domínio.
- O projeto do Adobe Developer Console mostra Este projeto é somente leitura porque foi gerado automaticamente pelo Adobe e não pode ser editado.
Causa raiz:
A API de incorporação do Adobe PDF permite apenas um domínio por ID do cliente (a menos que você use subdomínios em uma única raiz) e rejeita qualquer solicitação de uma origem não registrada. Ambientes do AEMaaCS — Autor, Publicação, domínios personalizados e Desenvolvimento/Preparo/Produção — cada um usa domínios diferentes, portanto, exigem IDs de cliente separadas e configurações de CaConfig separadas. O AEMaaCS não é compatível com a configuração do visualizador do PDF por meio do OSGi; o uso do OSGi resulta em falhas incorretas de resolução e visualizador de clientId.
Como confirmar
- Identifique o domínio com falha. Abra a página com o Visualizador do PDF e observe a origem completa do navegador (para um host AEMaaCS, isso se parece com
https://author-pXXXXX-eYYYYYY.adobeaemcloud.com; para um domínio personalizado, é a origem do seu site). Executewindow.location.originno console do navegador para confirmar a cadeia de caracteres exata. - Verifique se o projeto do Developer Console é editável. Abra o projeto que contém a credencial da API Embed do PDF e procure o banner Este projeto é somente leitura porque foi gerado automaticamente pelo Adobe, o que indica que você precisa de um novo projeto editável.
Resolução resolution
- Se o projeto for somente leitura, crie um novo projeto editável. No Developer Console, escolha Criar novo projeto → Adicionar ao projeto → API de Incorporação do PDF, que expõe uma seção editável Domínios de Aplicativos. Se não for possível adicionar um domínio, confirme se você tem as funções de Administrador do sistema e Desenvolvedor.
- Registre o domínio que corresponde à origem com falha. Na configuração da API Incorporada do PDF, adicione apenas o domínio exato, sem o prefixo
https://(por exemplo:example.comouauthor-pXXXXX-eYYYYYY.adobeaemcloud.com). Salve a configuração e recarregue a página em uma janela incógnita. - Crie IDs do cliente separadas por ambiente ou domínio. Repita o registro de domínio para cada ambiente (Autor, Publicação, DNS personalizado), já que o AEMaaCS requer IDs de cliente exclusivas quando os domínios são diferentes. Se você precisar de muitos subdomínios, crie uma credencial somente usando o domínio principal.
- Configure a ID do cliente no AEM usando a Configuração sensível ao contexto do Sling. Em sua base de código em
/conf/<site>/sling:configs, crie o nócom.adobe.cq.wcm.core.components.internal.services.pdfviewer.PdfViewerCaConfigcom a propriedadeclientId=<ID do Cliente>. Confirme no CRXDE que a propriedade existe e que ojcr:contentdo seu site inclui umsling:configRef. - Para Autor e Publicação, crie configurações específicas do modo de execução quando necessário. Crie
/conf/<site>/sling:configs.authore/conf/<site>/sling:configs.publish, cada um contendo seu próprioclientId, portanto, o Autor usa a configuração do autor e a Publicação usa a configuração de publicação. Confirme exibindo a origem da página em cada ambiente e procurando a cadeia de caracteresclientId. - Remova qualquer configuração OSGi do Visualizador do PDF. Exclua
com.adobe.cq.wcm.core.components.internal.services.pdfviewer.PdfViewerCaConfig.cfg.jsondeui.configpara que somente CaConfig direcione as configurações do visualizador e, em seguida, confirme em/system/console/configMgrse não existe nenhuma configuração OSGi. - Implantar via Cloud Manager. Execute seu pipeline e confirme se as alterações de
/confchegam ao Author e ao Publish abrindo o CRXDE em cada uma. Se as alterações não forem exibidas, confirme se o pipeline inclui o móduloui.content.
Validação
- Abra a página em cada domínio (Autor, Publicação, DNS) e confirme a renderização do PDF sem o erro de autorização.
- Inspecione a origem da página e confirme se o esperado
clientIdestá incorporado e corresponde ao valor de CaConfig. - Use o painel Rede do navegador para confirmar se as chamadas da API do visualizador retornam HTTP 200 em vez de falhas de autorização de domínio.