Communities用户同步 communities-user-synchronization

CAUTION
AEM 6.4已结束扩展支持,本文档将不再更新。 有关更多详细信息,请参阅 技术支助期. 查找支持的版本 此处.

简介 introduction

在AEM Communities中,从发布环境(取决于配置的权限)中, 网站访客 可能 成员,创建 用户组,并编辑其 成员资料.

用户数据 是用于表示 用户, 用户配置文件用户组.

成员 是用于表示 用户 已在发布环境中注册,而不是在创作环境中注册的用户。

有关用户数据的更多信息,请访问 管理用户和用户组.

在发布场中同步用户 synchronizing-users-across-a-publish-farm

根据设计,在发布环境中创建的用户数据不会显示在创作环境中。

在创作环境中创建的大多数用户数据都打算保留在创作环境中,并且不会同步或复制到发布实例。

拓扑发布场,则对一个发布实例进行的注册和修改需要与其他发布实例同步。 成员需要能够登录并查看其任何发布节点上的数据。

启用用户同步后,将在场中的发布实例之间自动同步用户数据。

用户同步设置说明 user-sync-setup-instructions

有关如何在发布场中启用同步的详细分步说明,请参阅

后台用户同步 user-sync-in-the-background

sling-dist-workflow

  • VLT包:是一个zip文件,其中包含在发布者上所做的所有更改,需要在发布者之间分发。 发布者上的更改会生成由更改事件侦听器选取的事件。 这会创建一个包含所有更改的vlt包。

  • 分发包:包含Sling的分发信息。 这是有关内容需要分发的位置以及内容最后分发的时间的信息。

当…… what-happens-when

从“社区站点”控制台发布站点 publish-site-from-communities-sites-console

在作者中,从 社区站点控制台,效果为 复制 关联页面,Sling则分发动态创建的社区用户组,包括其成员资格。

用户在发布时创建或编辑配置文件 user-is-created-or-edits-profile-on-publish

根据设计,在发布环境中创建的用户和配置文件(例如,通过自注册、社交登录、LDAP身份验证)不会显示在创作环境中。

当拓扑为 发布场 和用户同步已正确配置, 用户用户配置文件 会使用Sling分发在发布场中同步。

在发布时创建新社区组 new-community-group-is-created-on-publish

尽管从发布实例启动,但社区组创建(这会导致新站点页面和新用户组)实际上会发生在创作实例上。

在此过程中,新站点页面会复制到所有发布实例。 动态创建的社区用户组及其成员身份将Sling分发到所有发布实例。

使用安全控制台创建用户或组 users-or-user-groups-are-created-using-security-console

根据设计,在发布环境中创建的用户数据不会显示在创作环境中,反之亦然。

用户管理和安全 控制台用于在发布环境中添加新用户,用户同步会将新用户及其组成员资格同步到其他发布实例(如果需要)。 用户同步还将同步通过安全控制台创建的用户组。

用户在发布时发布内容 user-posts-content-on-publish

对于用户生成的内容(UGC),将通过 已配置SRP.

最佳实践 bestpractices

默认情况下,用户同步为 已禁用. 启用用户同步涉及修改 现有 OSGi配置。 由于启用了用户同步,因此不应添加新配置。

用户同步依赖于创作环境来管理用户数据分发,即使用户数据不是在创作时创建的。

前提条件

  1. 如果用户和用户组已在一个发布者上创建,则建议 手动同步 在配置和启用用户同步之前,将用户数据发送给所有发布者。

    启用用户同步后,仅会同步新创建的用户和组。

  2. 确保已安装最新代码:

要在AEM Communities上启用用户同步,必须进行以下配置。 确保这些配置正确无误,以防止Sling内容分发失败。

Apache Sling Distribution Agent — 同步代理工厂 apache-sling-distribution-agent-sync-agents-factory

此配置会在发布者中获取要同步的内容。 配置位于创作实例上。 作者必须跟踪所有位于其中的发布者以及同步所有信息的位置。

配置中的默认值适用于单个发布实例。 由于用户同步对同步多个发布实例(例如,对于发布场)非常有用,因此需要将其他发布实例添加到配置中。

内容如何同步?

创作实例ping发布者的导出程序端点。 每当在特定发布者(n)上创建或更新用户时,作者都会从其导出端点获取内容,并且 推送内容 到其他发布者(n-1,即除获取内容的发布者之外)。

配置Apache Sling同步代理配置

在AEM创作实例上:

  1. 使用管理员权限登录。

  2. 访问 Web控制台.

    例如, http://localhost:4502/system/console/configMgr.

  3. 定位 Apache Sling Distribution Agent — 同步代理工厂.

    • 选择要打开以进行编辑的现有配置(铅笔图标)。

    • 验证名称: socialpubsync.

    • 选中​ 启用 ​复选框。

    • 选择 使用多个队列.

    • 指定 导出程序端点导入程序端点 (您可以添加更多导出程序和导入程序端点)。

      这些端点定义您要从何处获取内容以及要将内容推送到何处。 作者从指定的导出程序端点获取内容,并将内容推送到发布者(而不是从中获取内容的发布者)。
      sync-agent-fact

AdobeGranite分发 — 加密密码传输密钥提供程序 adobe-granite-distribution-encrypted-password-transport-secret-provider

它使作者能够识别已授权的用户,即有权将用户数据从作者同步到发布。

已创建授权用户 在所有发布实例上,可帮助发布者与作者连接并在作者上配置Sling分发。 此授权用户具有所有必需 ACL.

每当要在发布器上安装数据或从发布器获取数据时,作者都会使用此配置中设置的凭据(用户名和密码)与发布器连接。

使用授权用户将作者与发布者连接起来

在AEM创作实例上:

  1. 使用管理员权限登录。

  2. 访问 Web控制台.

    例如, http://localhost:4502/system/console/configMgr.

  3. 定位 AdobeGranite分发 — 加密密码传输密钥提供程序.

  4. 选择要打开以进行编辑的现有配置(铅笔图标)。

    验证属性 name: socialpubsync- publishUser .

  5. 将用户名和密码设置为 授权用户.

    例如, usersync-admin

    granite-paswrd-trans

Apache Sling Distribution Agent — 队列代理工厂 apache-sling-distribution-agent-queue-agents-factory

此配置用于配置要在发布者之间同步的数据。 在 允许的根,“var/community/distribution/diff”将被激活,且创建的复制程序将从发布者中获取数据,并将其安装在其他发布者上。

配置要同步的数据(节点路径)

在AEM发布实例上:

  1. 使用管理员权限登录。

  2. 访问 Web控制台.

    例如, http://localhost:4503/system/console/configMgr.

  3. 定位 Apache Sling Distribution Agent — 队列代理工厂.

  4. 选择要打开以进行编辑的现有配置(铅笔图标)。

    验证名称: socialpubsync -reverse。

  5. 选择 已启用 复选框并保存。

  6. 指定要在中复制的节点路径 允许的根.

  7. 对每个 publish 实例。

    queue-agents-fact

AdobeGranite分布 — 差异观察器工厂 adobe-granite-distribution-diff-observer-factory

此配置会在发布者之间同步组成员资格。
如果更改某个发布者中某个群组的成员资格时,不会更新其他发布者的成员资格,请确保 ref:members 添加到 已查找属性名称.

确保成员同步

在每个AEM发布实例上:

  1. 使用管理员权限登录。

  2. 访问 Web控制台.

    例如, http://localhost:4503/system/console/configMgr.

  3. 定位 AdobeGranite分布 — 差异观察器工厂.

  4. 选择要打开以进行编辑的现有配置(铅笔图标)。

    验证 代理名称: socialpubsync -reverse**。

  5. 选中​ 启用 ​复选框。

  6. 指定 rep:members as description 对于中的属性名称 已查找属性名称,并保存。

    diff-obs

Apache Sling Distribution Trigger — 计划触发器工厂 apache-sling-distribution-trigger-scheduled-triggers-factory

此配置允许您配置轮询间隔(在轮询间隔后,发布者会被Ping并由作者提取更改)以在发布者之间同步更改。

作者每30秒对发布者进行一次轮询(默认)。 如果文件夹中存在任何包 /var/sling/distribution/packages/ socialpubsync - vlt /shared,则将获取这些包并将其安装在其他发布者上。

更改轮询间隔

在AEM创作实例上:

  1. 使用管理员权限登录。

  2. 访问 Web控制台,例如, http://localhost:4502/system/console/configMgr

  3. 定位 Apache Sling Distribution Trigger — 计划触发器工厂

    • 选择要打开以进行编辑的现有配置(铅笔图标)
    • 验证 Name: socialpubsync-scheduled-trigger
    • 将间隔(以秒为单位)设置为所需的间隔并保存。

    计划触发器

AEM Communities用户同步侦听器 aem-communities-user-sync-listener

对于Sling分发中订阅和跟踪中存在差异的问题,请检查 AEM Communities用户同步侦听器 配置已设置:

  • NodeTypes
  • 可忽略属性
  • 可忽略节点
  • 分布式文件夹

要同步订阅、跟踪和通知,请执行以下操作

在每个AEM发布实例上:

  1. 使用管理员权限登录。

  2. 访问 Web控制台. 例如, http://localhost:4503/system/console/configMgr.

  3. 定位 AEM Communities用户同步侦听器.

  4. 选择要打开以进行编辑的现有配置(铅笔图标)。

    验证名称: socialpubsync-scheduled-trigger

  5. 设置以下内容 NodeTypes :

    rep:User

    nt :非结构化

    nt :resource

    rep:ACL

    sling:Folder

    sling:OrderedFolder

    此属性中指定的节点类型将同步,并且通知信息(后跟的博客和配置)将在不同的发布者之间同步。

  6. 添加要在中同步的所有文件夹 分布式文件夹. 例如,

    区段/评分

    社交/关系

    活动

  7. 设置 ignorablenodes 至:

    .tokens

    system

    rep :cache (由于我们使用置顶会话,因此无需将此节点同步到不同的发布者)

    user-sync-listner

唯一Sling ID unique-sling-id

AEM创作实例使用Sling ID来识别数据的来源,以及数据需要(或不需要)将包发送回的发布者。

确保发布场中的所有发布者都具有唯一的Sling ID。 如果发布场中多个发布实例的Sling ID相同,则用户同步将失败。 由于作者不知道从何处获取包以及在何处安装包。

确保发布场中发布者的唯一Sling ID

在每个发布实例上:

  1. 浏览到 https://主机:端口/system/console/status-slsettings.

  2. 检查的值 Sling ID.

    slingid

    如果发布实例的Sling ID与任何其他发布实例的Sling ID匹配,则:

  3. 停止一个具有匹配Sling ID的发布实例。

  4. crx-quickstart/launchpad/felix 目录,搜索并删除名为_sling.id.file的文件。

    例如,在Linux系统上:

    rm -i $(find . -type f -name sling.id.file)

    例如,在Windows系统上:

    use windows explorer and search for _sling.id.file_

  5. 启动发布实例。 启动时,会为其分配一个新的Sling ID。

  6. 验证 Sling ID 现在是唯一的。

重复这些步骤,直到所有发布实例都具有唯一的Sling ID。

保管库包生成器工厂 vault-package-builder-factory

要正确同步更新,必须修改电子仓库包生成器以进行用户同步。
/home/users, a /rep:cache 节点。 它是一个缓存,用于查找如果我们查询某个节点的主体名称,则可以直接使用此缓存。

用户同步可在 rep:cache 节点会在发布者之间同步。

确保在发布者之间正确同步更新

在每个AEM发布实例上:

  1. 访问 Web控制台,例如, http://localhost:4503/system/console/configMgr.

  2. 找到 Apache Sling Distribution包 — 保险库包生成器工厂生成器名称:socialpubsync-vlt。

  3. 选择编辑图标。

  4. 添加两个包过滤器:

    • /home/users|-.\*/.tokens
    • /home/users|**+**.\*/rep:cache
  5. 策略处理

    • 覆盖现有代表 :policy 添加第三个包过滤器的节点:

      /home/users|**+**.\*/rep:policy

    • 要防止策略被分发,请设置

      Acl处理:忽略

vault-package-builder-factory

对AEM Communities中的Sling分发进行故障诊断 troubleshoot-sling-distribution-in-aem-communities

如果Sling分发失败,请尝试以下调试步骤:

  1. 检查 未正确添加配置. 请确保未添加或编辑多个配置,而是应编辑现有的默认配置。

  2. 检查配置. 确保 配置 已在AEM创作实例中正确设置,如 最佳实践.

  3. 检查授权用户权限. 如果包安装不正确,请检查 授权用户 在第一个Publish实例中创建的ACL正确。

    要验证此项,请不要使用 已创建授权用户 更改 AdobeGranite分发 — 加密密码传输密钥提供程序 在创作实例上进行配置,以使用管理员用户凭据。 现在,再次尝试安装包。 如果用户同步与管理员凭据的同步正常,则意味着创建的发布用户没有适当的ACL。

  4. 检查差异观察器工厂配置. 如果仅特定节点未在发布场之间同步(例如,组成员未同步),请确保 AdobeGranite分布 — 差异观察器工厂 配置已启用,并且 rep:members已查找属性名称.

  5. 检查AEM Communities用户同步侦听器配置。 如果已创建的用户已同步,但订阅和以下内容无法正常工作,请确保AEM Communities用户同步侦听器配置已:

    • 节点类型 — 设置为 rep:用户, nt:unstructured, nt:resource, rep:ACL, sling:Folder ​和 sling:OrderedFolder
    • 可忽略节点 — 设置为 .tokens, 系统 ​和 rep:cache
    • 分布式文件夹 — 设置为要分发的文件夹
  6. 检查在发布实例上创建用户时生成的日志. 如果已正确设置上述配置,但用户同步仍无法正常工作,请检查在用户创建时生成的日志。

    检查日志的顺序是否相同,如下所示:

    code language-shell
    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
    

    要进行调试,请执行以下操作:

    1. 禁用用户同步:

    2. 在AEM创作实例上,使用管理员权限登录。

      1. 访问 Web控制台. 例如, http://localhost:4502/system/console/configMgr.

      2. 找到配置 Apache Sling Distribution Agent — 同步代理工厂.

      3. 取消选择 已启用 复选框。

      在创作实例上禁用用户同步时,会禁用(导出程序和导入程序)端点,并且创作实例是静态的。 的 vlt 创作不会ping或获取包。

      现在,如果在发布实例上创建用户,则 vlt 包创建于 /var/sling/distribution/packages/ socialpubsync - vlt /data 节点。 如果作者将这些包推送到其他服务,则会将其推送到其他服务。 您可以下载并提取此数据,以检查将哪些所有属性推送到其他服务。

    3. 转到发布者,然后在发布者上创建用户。 因此,会创建事件。

    4. 检查 日志顺序,创建时。

    5. 检查 vlt 包创建于 /var/sling/distribution/packages/socialpubsync-vlt/data.

    6. 现在,在AEM创作实例上启用用户同步。

    7. 在发布者上,在 Apache Sling Distribution Agent — 同步代理工厂.

      我们可以下载并提取包数据,以检查将哪些属性推送到其他发布者,以及哪些数据丢失。

recommendation-more-help
5d37d7b0-a330-461b-814d-068612705ff6