사용자가 승인되지 않음

  1. Dispatcher가 캐시를 확인합니다.
  2. Dispatcher가 브라우저 요청의 모든 헤더 행을 포함하는 요청 메시지를 렌더링에 보냅니다.
  3. 렌더링이 AuthChcker 서블릿을 호출하여 실패한 보안 검사를 수행하고, 렌더링이 원본 요청을 Dispatcher로 전달합니다.
  4. Dispatcher가 원본 요청을 렌더링에 전달합니다.
  5. 렌더링이 AEM 권한 부여자 서블릿(이 서블릿은 Dispatcher AuthChcker 서블릿이 아님)을 호출하여 보안 검사를 수행합니다. 사용자에게 권한이 부여되면 렌더링이 렌더링된 페이지를 응답 메시지 본문에 포함합니다.
  6. Dispatcher가 응답을 브라우저에 전달합니다. Dispatcher가 렌더링 응답 메시지의 본문을 캐시에 추가합니다.

권한 구분 캐싱 구현

권한 구분 캐싱을 구현하려면 다음 작업을 수행하십시오.

  • 인증 및 권한 부여를 수행하는 서블릿 개발
  • Dispatcher 구성
노트
일반적으로 보안 리소스는 비보안 파일과 별도의 폴더에 저장됩니다. 예: /content/secure/
노트
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 메서드를 사용하여 적절한 응답 코드를 결정합니다.

노트
Sling Servlet Resolver(org.apache.sling.servlets.resolver.SlingServletResolver) 서비스에서 sling.servlet.paths 속성 값을 활성화해야 합니다.