1

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

找不到确认这一点的文件,因此感谢您的帮助。

谢谢。

4

3 回答 3

3

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

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

如果您启用粘滞会话,特定客户端的所有请求将始终定向到同一个实例。

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

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

于 2015-04-19T08:15:55.533 回答
0

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

于 2015-07-05T10:34:53.630 回答
0

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

于 2016-09-14T02:47:20.943 回答