AEM身份验证是否无状态

时间:2015-04-17 11:03:59

标签: authentication cq5 aem stateless publisher

AEM身份验证(封闭用户组)是无状态的吗?如果我们有多个发布者会发生什么情况,身份验证处理程序是否会确保用户在发布者的所有实例中都经过身份验证?

无法找到确认此内容的文件,所以我们非常感谢您的帮助。

感谢。

3 个答案:

答案 0 :(得分:3)

默认AEM身份验证(CRX登录模块)不是无状态的,身份验证由登录令牌确认。当用户登录时,令牌信息存储在相应用户节点(/ home / users)的 .tokens 节点下。令牌的值也会以cookie 登录令牌的形式存储在浏览器中。每当请求进入时,都会比较存储库中的cookie值和令牌。[ 您可以通过删除.tokens节点并刷新匿名无法访问的某个页面来进行测试 ]

在多发布者环境中,仅在记录用户的实例上创建令牌。由于其他实例无法在其存储库中找到cookie值的令牌,因此请求将被拒绝。

如果启用粘性会话,则特定客户端的所有请求始终指向同一实例。

这是Oak's token module上的页面。 AEM使用crx令牌模块,但它们的工作方式基本相同。由于您的凭据由form based authentication handler传递给单个实例,因此仅在一个实例中创建令牌。身份验证处理程序页面还包含有关令牌和cookie的一些详细信息。

  

<强>更新:   使用AEM 6.1,只要用户存在于所有发布实例上,现在就可以使身份验证成为无状态。这是通过使用加密的cookie来完成的,当所有发布实例共享相同的HMAC密钥时,该cookie可以被解密。可以在此处找到更多信息:https://docs.adobe.com/docs/en/aem/6-1/administer/security/encapsulated-token.html

答案 1 :(得分:0)

我认为如果您激活作者的群集,则.token节点将被复制到所有实例,并且在比较用户令牌资源和cookie时,识别成功,这是有可能的。 jcr哲学:一切都是内容

答案 2 :(得分:0)

在OSGI中启用封装令牌选项。然后它将无缝地进行身份验证。但要实现它,有2个先决条件或条件。一种是在所有实例上放置相同的HMAC密钥,其次是用户应该存在。如果满足这两个条件,那么如果您在一个堆栈上登录而第二个堆栈不需要再次进行身份验证。