CQ如何验证每个请求?

时间:2016-02-12 09:06:13

标签: authentication cq5 aem jcr sling

我知道AEM如何创建名为" login-token"认证成功后。

我的问题是AEM如何在每个请求中验证此Cookie?是否有任何过滤器可用于拦截请求然后验证cookie?如果没有,那么AEM如何再次调用吊索认证处理程序?

我在这里找不到http://host:port/system/console/status-slingfilter

请帮我澄清一下

1 个答案:

答案 0 :(得分:5)

身份验证不是通过过滤器完成的。验证在过滤处理之前完成。

请求到达后,OSGi HttpService会调用与servlet / resource关联的HttpContext的handleSecurity。如果是Sling,则调用 SlingMainServlet .handleSecurity,调用SlingAuthenticator.authentication。

SlingAuthenticator 为请求选择 authenticationHandler 并转发身份验证呼叫。

身份验证处理程序实现 extractCredentials 方法(基于身份验证方案,例如基于授权标头的身份验证,基于会话的身份验证或基于cookie的身份验证)负责从cookie(或标头或会话)读取凭据。

成功验证后,它将返回 AuthenticationInfo ,如果验证失败,则获取匿名会话(如果每个配置允许匿名)或调用 requestCredentials 方法,渲染(或重定向到)登录表单。 在handleSecurity执行完成后,HttpService将终止请求(如果handleSecurity返回false)或调用 SlingMainServlet.service ,这将是Sling Request Processing的入口点。

之后将处理请求级别过滤器。见https://sling.apache.org/documentation/the-sling-engine/filters.html