사용자가 승인되지 않음
- Dispatcher가 캐시를 확인합니다.
- Dispatcher가 브라우저 요청의 모든 헤더 행을 포함하는 요청 메시지를 렌더링에 보냅니다.
- 렌더링이 AuthChcker 서블릿을 호출하여 실패한 보안 검사를 수행하고, 렌더링이 원본 요청을 Dispatcher로 전달합니다.
- Dispatcher가 원본 요청을 렌더링에 전달합니다.
- 렌더링이 AEM 권한 부여자 서블릿(이 서블릿은 Dispatcher AuthChcker 서블릿이 아님)을 호출하여 보안 검사를 수행합니다. 사용자에게 권한이 부여되면 렌더링이 렌더링된 페이지를 응답 메시지 본문에 포함합니다.
- Dispatcher가 응답을 브라우저에 전달합니다. Dispatcher가 렌더링 응답 메시지의 본문을 캐시에 추가합니다.
권한 구분 캐싱 구현
권한 구분 캐싱을 구현하려면 다음 작업을 수행하십시오.
- 인증 및 권한 부여를 수행하는 서블릿 개발
- Dispatcher 구성
Header always set Cache-Control private
.AEM as a Cloud Service의 경우 비공개 캐싱 헤더를 설정하는 방법에 대한 자세한 내용은 캐싱 페이지를 참조하십시오.
AuthChcker 서블릿 만들기
웹 콘텐츠를 요청하는 사용자의 인증 및 권한 부여를 수행하는 서블릿을 만들고 배포합니다. 서블릿은 모든 인증을 사용할 수 있습니다. 또한 모든 인증 방법을 사용할 수 있습니다. 예를 들어 AEM 사용자 계정 및 저장소 ACL을 사용할 수 있습니다. 또는 LDAP 조회 서비스를 사용할 수 있습니다. Dispatcher가 렌더링으로 사용하는 AEM 인스턴스에 서블릿을 배포합니다.
서블릿은 모든 사용자가 액세스할 수 있어야 합니다. 따라서 서블릿은 시스템에 대한 읽기 전용 액세스를 제공하는 org.apache.sling.api.servlets.SlingSafeMethodsServlet
클래스를 확장해야 합니다.
서블릿은 렌더링에서 HEAD 요청만 수신하므로 doHead
메서드만 구현하면 됩니다.
렌더링에는 요청된 리소스의 URI가 HTTP 요청의 매개변수로 포함됩니다. 예를 들어 권한 부여 서블릿은 /bin/permissioncheck
를 통해 액세스됩니다. /content/geometrixx-outdoors/en.html 페이지에서 보안 검사를 수행하려면 렌더링은 HTTP 요청에 다음 URL을 포함합니다.
/bin/permissioncheck?uri=/content/geometrixx-outdoors/en.html
서블릿 응답 메시지에는 다음 HTTP 상태 코드가 포함되어야 합니다.
- 200: 인증 및 권한 부여가 통과되었습니다.
다음 예제 서블릿은 HTTP 요청에서 요청된 리소스의 URL을 가져옵니다. 이 코드는 Felix SCR Property
주석을 사용하여 sling.servlet.paths
속성의 값을 /bin/permissioncheck로 설정합니다. doHead
메서드에서 서블릿은 세션 오브젝트를 가져오고 checkPermission
메서드를 사용하여 적절한 응답 코드를 결정합니다.