AEM에서 PDF Embed API 도메인 인증 실패 해결
페이지를 호스팅하는 도메인이 연결된 PDF Embed API 클라이언트 ID에 대해 Adobe Developer Console에 등록되지 않으면 Adobe PDF Embed API를 사용하는 AEM PDF 뷰어 및 사용자 지정 구성 요소에서 도메인 인증 오류가 발생합니다. PDF Embed API는 클라이언트 ID당 하나의 도메인만 허용하고 등록되지 않은 출처의 요청을 거부하므로 각 AEM 도메인(작성자, 게시 및 사용자 지정 DNS)에는 자체 클라이언트 ID가 필요합니다. 또한 AEMaaCS에는 잘못된 클라이언트 ID를 확인하는 OSGi 구성이 아닌 PDF 뷰어에 대한 Sling 컨텍스트 인식 구성(CaConfig)이 필요합니다. 도메인별 클라이언트 ID를 만들고 올바른 CaConfig 경로에 구성하면 뷰어가 복원됩니다.
설명 description
환경:
- Adobe Experience Manager as a Cloud Service (AEMaaCS)
- AEM Brand Portal
- AEM Managed Services
- AEM 핵심 구성 요소 PDF 뷰어 및 Adobe PDF Embed API
문제/증상:
- PDF 뷰어에 이 응용 프로그램 도메인(
<도메인>)은 제공된 PDF Embed API 클라이언트 ID를 사용할 수 있는 권한이 없습니다. - PDF 미리 보기에 파일 미리 보기를 사용할 수 없음이 표시됩니다(오류 코드: UnauthorizedDomainForClientId).
- PDF 뷰어는 로드되지만 렌더링되지 않으며, 브라우저 네트워크 패널에 도메인 불일치로 차단된 뷰어 API 호출이 표시됩니다.
- Adobe Developer Console 프로젝트에 이 프로젝트가 Adobe에 의해 자동 생성되었으므로읽기 전용이며 편집할 수 없습니다.
근본 원인:
Adobe PDF Embed API는 클라이언트 ID당 하나의 도메인만 허용하고(단일 루트 아래에 하위 도메인을 사용하지 않는 경우) 등록되지 않은 출처의 모든 요청을 거부합니다. AEMaaCS 환경 - Author, Publish, 사용자 정의 도메인 및 Dev/Stage/Prod는 각각 서로 다른 도메인을 사용하므로 별도의 클라이언트 ID와 별도의 CaConfig 구성이 필요합니다. AEMaaCS는 OSGi를 통해 PDF 뷰어 구성을 지원하지 않습니다. OSGi를 사용하면 잘못된 clientId 확인 및 뷰어 오류가 발생합니다.
확인하는 방법
- 실패한 도메인을 식별합니다. PDF 뷰어가 있는 페이지를 열고 전체 브라우저 원본을 확인합니다(AEMaaCS 호스트의 경우
https://author-pXXXXX-eYYYYYY.adobeaemcloud.com처럼 보임; 사용자 지정 도메인의 경우 사이트의 원본). 브라우저 콘솔에서window.location.origin을(를) 실행하여 정확한 문자열을 확인합니다. - Developer Console 프로젝트를 편집할 수 있는지 확인합니다. PDF Embed API 자격 증명이 포함된 프로젝트를 열고 배너 이 프로젝트는 Adobe에 의해 자동 생성되었으므로 읽기 전용입니다. 이는 편집 가능한 새 프로젝트가 필요함을 나타냅니다.
해결 방법 resolution
- 프로젝트가 읽기 전용인 경우 편집 가능한 새 프로젝트를 만듭니다. Developer Console에서 새 프로젝트 만들기 → PDF Embed API→ 프로젝트에 추가를 선택하여 편집 가능한 응용 프로그램 도메인 섹션을 표시합니다. 도메인을 추가할 수 없는 경우 시스템 관리자 및 개발자 역할을 보유하고 있는지 확인합니다.
- 실패한 원본과 일치하는 도메인을 등록합니다. PDF Embed API 설정에서
https://접두사(예:example.com또는author-pXXXXX-eYYYYYY.adobeaemcloud.com) 없이 정확한 도메인만 추가합니다. 구성을 저장하고 시크릿 창에서 페이지를 다시 로드합니다. - 환경 또는 도메인별로 별도의 클라이언트 ID를 만듭니다. 도메인이 다를 경우 AEMaaCS에 고유한 클라이언트 ID가 필요하므로 각 환경(작성자, 게시, 사용자 정의 DNS)에 대해 도메인 등록을 반복합니다. 여러 하위 도메인이 필요한 경우 상위 도메인만 사용하여 하나의 자격 증명을 만드십시오.
- Sling 컨텍스트 인식 구성을 사용하여 AEM에서 클라이언트 ID를 구성합니다.
/conf/<site>/sling:configs아래의 코드베이스에 속성clientId=<클라이언트 ID>을(를) 사용하여com.adobe.cq.wcm.core.components.internal.services.pdfviewer.PdfViewerCaConfig노드를 만듭니다. CRXDE에서 속성이 있는지, 그리고 사이트의jcr:content에sling:configRef이(가) 포함되어 있는지 확인합니다. - Author 및 Publish의 경우 필요한 경우 실행 모드별 구성을 만듭니다. 각각 고유한
clientId이(가) 포함된/conf/<site>/sling:configs.author및/conf/<site>/sling:configs.publish을(를) 만들어 작성자는 작성자 구성을 사용하고 Publish는 게시 구성을 사용합니다. 각 환경의 페이지 소스를 보고clientId문자열을 검색하여 확인합니다. - PDF 뷰어에 대한 OSGi 구성을 제거합니다. CaConfig만 뷰어 설정을 구동하도록
ui.config에서com.adobe.cq.wcm.core.components.internal.services.pdfviewer.PdfViewerCaConfig.cfg.json을(를) 삭제한 다음/system/console/configMgr에서 OSGi 구성이 존재하지 않는지 확인하십시오. - Cloud Manager을 통해 배포합니다. 파이프라인을 실행하고 각 항목에서 CRXDE를 열어
/conf변경 내용이 작성자와 게시 모두에 도달하는지 확인하십시오. 변경 내용이 표시되지 않으면 파이프라인에ui.content모듈이 포함되어 있는지 확인하십시오.
유효성 검사
- 각 도메인(작성자, 게시, DNS)에서 페이지를 열고 인증 오류 없이 PDF이 렌더링되는지 확인합니다.
- 페이지 소스를 검사하고 필요한
clientId이(가) 포함되어 있으며 CaConfig 값과 일치하는지 확인하십시오. - 브라우저 네트워크 패널을 사용하여 뷰어 API 호출이 도메인 인증 실패가 아닌 HTTP 200을 반환하는지 확인합니다.
experience-cloud-kcs-help-kbarticles