在AEM Communities中,从发布环境(取决于配置的权限)中, 站点访客可能成为成员,创建用户组,并编辑其成员配置文件 。
用 户数据是用于指代用 户、用户 配置 文件和 用户组的术语。
会员资格是一个术语,用 于指在发布环境中注册的用户,而不是在创作环境中注册的用户。
有关用户数据的更多信息,请访问管理用户和用户组。
根据设计,在发布环境中创建的用户数据不会显示在创作环境中。
在创作环境中创建的大多数用户数据都打算保留在创作环境中,并且不会同步或复制到发布实例。
当拓扑是发布场时,对一个发布实例进行的注册和修改需要与其他发布实例同步。 成员需要能够登录并查看其任何发布节点上的数据。
启用用户同步后,将在场中的发布实例之间自动同步用户数据。
有关如何在发布场中启用同步的详细分步说明,请参阅:
vlt包
它是一个zip文件,其中包含对发布者所做的所有更改,需要在发布者之间分发。 发布者上的更改会生成由更改事件侦听器选取的事件。 这会创建一个包含所有更改的vlt包。
分发包
其中包含Sling的分发信息。 这是有关内容需要分发的位置以及内容最后分发的时间的信息。
在作者中,从社区站点控制台发布社区站点时,其效果是复制关联的页面,并Sling分发动态创建的社区用户组,包括其成员资格。
根据设计,在发布环境中创建的用户和配置文件(例如,通过自注册、社交登录、LDAP身份验证)不会显示在创作环境中。
当拓扑为发布场且用户同步配置正确时,将使用Sling分发在发布场中同步用户和用户配置文件。
尽管从发布实例启动,但社区组创建(这会导致新站点页面和新用户组)实际上会发生在创作实例上。
在此过程中,新站点页面会复制到所有发布实例。 动态创建的社区用户组及其成员身份将Sling分发到所有发布实例。
根据设计,在发布环境中创建的用户数据不会显示在创作环境中,反之亦然。
如果使用用户管理和安全控制台在发布环境中添加新用户,则用户同步会将新用户及其组成员资格与其他发布实例同步(如果需要)。 用户同步还将同步通过安全控制台创建的用户组。
对于用户生成的内容(UGC),在发布实例上输入的数据通过配置的SRP🔗进行访问。
默认情况下,用户同步为disabled。 启用用户同步涉及修改现有 OSGi配置。 由于启用了用户同步,因此不应添加新配置。
用户同步依赖于创作环境来管理用户数据分发,即使用户数据不是在创作时创建的。
前提条件
如果已在一个发布者上创建了用户和组,则建议在配置和启用用户同步之前,手动将用户数据同步到所有发布者。
启用用户同步后,仅会同步新创建的用户和组。
确保已安装最新代码:
要在AEM Communities上启用用户同步,必须进行以下配置。 确保这些配置正确无误,以防止Sling内容分发失败。
此配置会在发布者中获取要同步的内容。 配置位于创作实例上。 作者必须跟踪所有位于其中的发布者以及同步所有信息的位置。
配置中的默认值适用于单个发布实例。 由于用户同步对同步多个发布实例(例如,对于发布场)非常有用,因此需要将其他发布实例添加到配置中。
内容如何同步?
创作实例ping发布者的导出程序端点。 每当在特定发布者(n)上创建或更新用户时,作者都会从其导出者端点获取内容,并且会将内容推送至其他发布者(n-1,即从中获取内容的发布者之外)。
要配置Apache Sling同步代理配置,请执行以下操作:
使用您的AEM创作实例的管理员权限登录。
访问Web控制台。 例如, https://localhost:4502/system/console/configMgr。
找到Apache Sling Distribution Agent — 同步代理工厂。
选择要打开以进行编辑的现有配置(铅笔图标)。
验证名称:socialpubsync.
选中Enabled复选框。
选择使用多个队列。
指定导出程序端点和导入程序端点(可以添加更多导出程序和导入程序端点)。
这些端点定义您要从何处获取内容以及要将内容推送到何处。 作者从指定的导出程序端点获取内容,并将内容推送到发布者(而不是从中获取内容的发布者)。
它使作者能够识别已授权的用户,即有权将用户数据从作者同步到发布。
在所有发布实例上创建的授权用户可帮助发布者与作者连接并配置作者上的Sling分发。 此授权用户具有所有必需的ACL。
每当要在发布器上安装数据或从发布器获取数据时,作者都会使用此配置中设置的凭据(用户名和密码)与发布器连接。
要使用授权用户将作者与发布者连接起来,请执行以下操作:
使用您的AEM创作实例的管理员权限登录。
访问Web控制台。
找到AdobeGranite分发 — 加密密码传输密钥提供程序。
选择要打开以进行编辑的现有配置(铅笔图标)。
验证属性socialpubsync - publishUser.
将用户名和密码设置为授权用户。
例如, usersync - admin
此配置用于配置要在发布者之间同步的数据。 在允许的根中指定的路径中创建/更新数据时,将激活“var/community/distribution/diff”,并且创建的复制程序从发布者中获取数据,并将其安装到其他发布者。
要配置要同步的数据(节点路径),请执行以下操作:
使用发布实例的管理员权限登录。
访问Web控制台。
找到Apache Sling Distribution Agent - Queue Agents Factory。
选择要打开以进行编辑的现有配置(铅笔图标)。
验证名称:socialpubsync -reverse
选中Enabled复选框并保存。
指定要在允许的根中复制的节点路径。
对每个publish实例重复执行上述步骤。
此配置会在发布者之间同步组成员资格。
如果更改某个发布者中某个组的成员资格不会更新其他发布者的组成员资格,请确保将ref :members添加到已查找的属性名称中。
要确保成员同步:
使用发布实例的管理员权限登录。
访问Web控制台。
找到AdobeGranite Distribution - Diff Observer Factory。
选择要打开以进行编辑的现有配置(铅笔图标)。
验证代理名称:socialpubsync -reverse。
选中Enabled复选框。
指定rep:members作为已查找属性名称和“保存”中propertyName的描述。
此配置允许您配置轮询间隔(在轮询间隔后,发布者会被Ping并由作者提取更改)以在发布者之间同步更改。
作者每30秒对发布者进行一次轮询(默认)。 如果文件夹/var/sling/distribution/packages/ socialpubsync - vlt /shared
中存在任何包,则将获取这些包并将其安装到其他发布器上。
要更改轮询间隔,请执行以下操作:
使用您的AEM创作实例的管理员权限登录。
找到Apache Sling Distribution Trigger - Scheduled Triggers Factory
选择要打开以进行编辑的现有配置(铅笔图标)。
验证socialpubsync -scheduled-trigger
将间隔(以秒为单位)设置为所需的间隔并保存。
对于Sling分发中订阅和后续内容存在差异的问题,请检查是否在AEM Communities用户同步侦听器配置中设置了以下属性:
要同步订阅、跟踪和通知,请执行以下操作
在每个AEM发布实例上:
使用管理员权限登录。
访问Web控制台。 例如, https://localhost:4503/system/console/configMgr。
找到AEM Communities用户同步侦听器。
选择要打开以进行编辑的现有配置(铅笔图标)
验证名称:socialpubsync -scheduled-trigger
设置以下NodeTypes:
rep:User
nt:unstructured
nt:resource
rep:ACL
sling:Folder
sling:OrderedFolder
此属性中指定的节点类型将同步,并且通知信息(后跟的博客和配置)将在不同的发布者之间同步。
添加所有要在DistributedFolders中同步的文件夹。 例如,
segments/scoring
social/relationships
activities
将conolablenodes设置为:
.tokens
system
rep:cache
(由于我们使用置顶会话,因此无需将此节点同步到不同的发布者)。
AEM创作实例使用Sling ID来识别数据的来源,以及数据需要(或不需要)将包发送回的发布者。
确保发布场中的所有发布者都具有唯一的Sling ID。 如果发布场中多个发布实例的Sling ID相同,则用户同步将失败。 由于作者不知道从何处获取包以及在何处安装包。
要确保每个发布实例上发布场中发布者的唯一Sling ID:
检查Sling ID的值。
如果发布实例的Sling ID与任何其他发布实例的Sling ID匹配,则:
停止一个具有匹配Sling ID的发布实例。
在crx-quickstart/launchpad/felix
目录中,搜索并删除名为sling.id.file.的文件
例如,在Linux系统上:
rm -i $(find . -type f -name sling.id.file)
例如,在Windows系统上:
使用Windows资源管理器并搜索sling.id.file
启动发布实例。 启动时,会为其分配一个新的Sling ID。
验证Sling ID现在是唯一的。
重复这些步骤,直到所有发布实例都具有唯一的Sling ID。
要正确同步更新,必须修改电子仓库包生成器以进行用户同步。
在/home/users
中创建*/rep:cache
节点。 它是一个缓存,用于查找如果我们查询某个节点的主体名称,则可以直接使用此缓存。
如果跨发布者同步rep :cache
节点,则用户同步可能会停止。
要确保在每个AEM发布实例上的发布者之间正确同步更新,请执行以下操作:
访问Web控制台
找到Apache Sling Distribution Packaging - Vault Package Builder Factory
生成器名称:socialpubsync-vlt。
选择编辑图标。
添加两个包节点过滤器:
/home/users|-.*/.tokens
/home/users|-.*/rep:cache
策略处理
/home/users|+.*/rep:policy
Acl Handling: IGNORE
如果Sling分发失败,请尝试以下调试步骤:
检查是否添 加了不正确的配置
请确保未添加或编辑多个配置,而是应编辑现有的默认配置。
检查配置
检查授权用户权限
如果包安装不正确,请检查在第一个Publish实例中创建的授权用户是否具有正确的ACL。
要验证此配置,请改为已创建的授权用户,以更改创作实例上的AdobeGranite分发 — 加密密码传输密钥提供程序配置,以使用管理员用户凭据。 现在,再次尝试安装包。 如果用户同步与管理员凭据的同步正常,则意味着创建的发布用户没有适当的ACL。
检查差异观察器工厂配置
如果只有特定节点未在发布场之间同步 — 例如,组成员未同步 — 请确保启用AdobeGranite Distribution - Diff Observer Factory配置,并rep:成员在已查找的属性名称中设置。
检查AEM Communities用户同步侦听器配置。 如果已创建的用户已同步,但订阅和以下内容无法正常工作,请确保AEM Communities用户同步侦听器配置已:
检查在发布实例上创建用户时生成的日志
如果已正确设置上述配置,但用户同步仍无法正常工作,请检查在用户创建时生成的日志。
检查日志的顺序是否相同,如下所示:
15.05.2016 18:33:01.523 *INFO* [sling-oak-observation-7422] com.adobe.cq.social.sync.impl.PublisherSyncServiceImpl Handing these paths to the distribution subsystem: [/home/users/C, /home/users/C/Cw-5avWqilmqsNn5hCvK]
15.05.2016 18:33:01.523 *INFO* [sling-oak-observation-7422] org.apache.sling.distribution.agent.impl.SimpleDistributionAgent [agent][socialpubsync-reverse] REQUEST-START DSTRQ2: ADD paths=[/home/users/C, /home/users/C/Cw-5avWqilmqsNn5hCvK], user=communities-user-admin
15.05.2016 18:33:01.523 *INFO* [sling-oak-observation-7431] com.adobe.cq.social.sync.impl.PublisherSyncServiceImpl Handing these paths to the distribution subsystem: [/home/users/C/Cw-5avWqilmqsNn5hCvK, /home/users/C/Cw-5avWqilmqsNn5hCvK/profile, /home/users/C/Cw-5avWqilmqsNn5hCvK/rep:policy]
15.05.2016 18:33:01.523 *INFO* [sling-oak-observation-7431] org.apache.sling.distribution.agent.impl.SimpleDistributionAgent [agent][socialpubsync-reverse] REQUEST-START DSTRQ3: ADD paths=[/home/users/C/Cw-5avWqilmqsNn5hCvK, /home/users/C/Cw-5avWqilmqsNn5hCvK/profile, /home/users/C/Cw-5avWqilmqsNn5hCvK/rep:policy], user=communities-user-admin
15.05.2016 18:33:01.757 *INFO* [sling-oak-observation-7431] org.apache.jackrabbit.vault.packaging.impl.JcrPackageDefinitionImpl unwrapping package sling/distribution:socialpubsync-vlt_1463337181554_ebb27ad9-a861-4405-9342-d64c916654e2:0.0.1
15.05.2016 18:33:01.820 *INFO* [sling-oak-observation-7422] org.apache.jackrabbit.vault.packaging.impl.JcrPackageDefinitionImpl unwrapping package sling/distribution:socialpubsync-vlt_1463337181554_58811273-5861-48fe-95d2-4aff367b99c3:0.0.1
15.05.2016 18:33:02.023 *INFO* [sling-oak-observation-7430] com.adobe.cq.social.sync.impl.PublisherSyncServiceImpl Handing these paths to the distribution subsystem: [/home/users/C/Cw-5avWqilmqsNn5hCvK/profile]
15.05.2016 18:33:02.023 *INFO* [sling-oak-observation-7430] org.apache.sling.distribution.agent.impl.SimpleDistributionAgent [agent][socialpubsync-reverse] REQUEST-START DSTRQ4: ADD paths=[/home/users/C/Cw-5avWqilmqsNn5hCvK/profile], user=communities-user-admin
15.05.2016 18:33:02.273 *INFO* [sling-oak-observation-7430] org.apache.jackrabbit.vault.packaging.impl.JcrPackageDefinitionImpl unwrapping package sling/distribution:socialpubsync-vlt_1463337182039_f34f4fa6-10b9-42eb-8740-4da9d4d38f99:0.0.1
要进行调试,请执行以下操作:
禁用用户同步:
在AEM创作实例上,使用管理员权限登录。
访问Web控制台。 例如, https://localhost:4502/system/console/configMgr。
找到配置Apache Sling Distribution Agent - Sync Agent Factory。
取消选中Enabled复选框。
在创作实例上禁用用户同步时,会禁用(导出程序和导入程序)端点,并且创作实例是静态的。 作者不会ping或获取vlt包。
现在,如果在发布实例上创建用户,则会在/var/sling/distribution/packages/ socialpubsync - vlt /data节点中创建vlt包。 如果作者将这些包推送到其他服务,则会将其推送到其他服务。 您可以下载并提取此数据,以检查将哪些所有属性推送到其他服务。
转到发布者,然后在发布者上创建用户。 因此,会创建事件。
检查在用户创建时创建的日志🔗的顺序。
检查是否在/var/sling/distribution/packages/socialpubsync-vlt/data上创建了vlt包。
现在,在AEM创作实例上启用用户同步。
在发布者上,在Apache Sling Distribution Agent - Sync Agent Factory中更改导出程序或导入程序端点。
我们可以下载并提取包数据,以检查将哪些属性推送到其他发布者,以及哪些数据丢失。