用户同步

简介

当部署为发布场时,成员需要能够登录并查看其任何发布节点上的数据。

在发布环境中创建的用户和用户组(用户数据)在创作环境中不是必需的。

在创作环境中创建的大多数用户数据都打算保留在创作环境中,而不是复制到发布实例。

在一个发布实例上进行的注册和修改需要与其他发布实例同步,以便它们能够访问同一用户数据。

从AEM 6.1开始,启用用户同步后,用户数据将自动在场中的发布实例间同步,而不是在作者身上创建。

Sling分发

用户数据及其ACL存储在Oak Core中,即Oak JCR下的层,并使用Oak API进行访问。 如果更新不频繁,则使用Sling内容分发(Sling分发)将用户数据与其他发布实例同步是合理的。

与传统复制相比,使用Sling分发进行用户同步的好处有:

  • 用户、用 户概 要文件和 在发布 时创建的用户组不是在作者上创建的

  • Sling分发在jcr事件中设置属性,使得可以在发布端事件监听器中执行操作,而无需考虑无限的复制循环

  • Sling分发仅将用户数据发送到非源发布实例,消除了不必要的流量

  • 步中包含用户节点中的ACLset

NOTE

如果需要会话,建议使用SSO解决方案,或使用粘性会话,并在客户切换到其他发布者时让其登录。

CAUTION

不支持​administrators​组的同步,即使启用了用户同步。 相反,“导入差异”失败将记录在错误日志中。

因此,当部署是发布场时,如果用户被添加到​*administrators​组或从中删除,则必须在每个发布实例上手动进行修改。

启用用户同步

NOTE

默认情况下,用户同步为disabled

启用用户同步涉及修改​现有 OSGi配置。

不应因启用用户同步而添加新配置。

用户同步依赖于作者环境来管理用户数据分发,即使用户数据不是在作者身上创建的。 许多(但并非全部)配置都发生在创作环境中,每个步骤都清楚地标识是在创作还是发布时执行。

以下是启用用户同步所需的步骤,后面是疑难解答部分:

前提条件

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

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

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

1. Apache Sling Distribution Agent —— 同步代理工厂

启用用户同步

2.创建授权用户

配置
权限此授权用户将在步骤3中用于配置创作时的Sling分发。

CAUTION

必须创建新用户。

  • 分配的默认用户为​**admin**。
  • 不使用communities-user-admin user.

如何添加ACL

  • 访问CRXDE Lite

  • 选择/home节点

  • 在右窗格中,选择Access Control选项卡

  • 选择+按钮以添加ACL项

    • 主要: 搜索为用户同步创建的用户
    • 类型: Allow
    • 特权: jcr:all
    • 制代表:glob: */activities/*
    • 选择​确定
  • 选择​全部保存

另请参阅

3.AdobeGranite分发——加密密码传输机密提供程序

配置权限

在所有发布实例上创建了授权用户​administrators​用户组的成员后,必须在作者身上将该授权用户识别为具有从作者同步用户数据到发布的权限。

  • 在作者

    • 以管理员权限登录

    • 访问Web控制台

    • 定位com.adobe.granite.distribution.core.impl.CryptoDistributionTransportSecretProvider.name

    • 选择要打开进行编辑的现有配置(铅笔图标)
      验证property name:socialpubsync-publishUser

    • 在步骤2中将用户名和密码设置为在发布时创建的授权用户

      • 例如usersync-admin

4. Apache Sling Distribution Agent —— 队列代理工厂

启用用户同步

  • 在发布:

    • 以管理员权限登录

    • 访问Web控制台

    • 定位Apache Sling Distribution Agent - Queue Agents Factory

      • 选择要打开进行编辑的现有配置(铅笔图标)
        验证Name:socialpubsync-reverse

      • 选中Enabled复选框

      • 选择Save

    • 重复

5.Adobe Social同步——差异观察器工厂

启用组同步

  • 在每个发布实例上:

6. Apache Sling分发触发器——计划触发器工厂

(可选)修改轮询间隔

默认情况下,作者每30秒对更改进行轮询一次。 要更改此间隔:

  • 在作者

    • 以管理员权限登录

    • 访问Web控制台

    • 定位Apache Sling Distribution Trigger - Scheduled Triggers Factory

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

        • 验证 Name: socialpubsync-scheduled-trigger
      • Interval in Seconds设置为所需的间隔

      • 选择Save

为多个发布实例配置

默认配置用于单个发布实例。 由于启用用户同步的原因是同步多个发布实例(如发布场),因此需要将其他发布实例添加到同步代理工厂。

7. Apache Sling Distribution Agent —— 同步代理工厂

添加发布实例:

  • 导出
    器端点每个发布者应有一个导出器端点。例如,如果有2个发布者,localhost:4503和4504,则应有2个条目:

    • https://localhost:4503/libs/sling/distribution/services/exporters/socialpubsync-reverse
    • https://localhost:4504/libs/sling/distribution/services/exporters/socialpubsync-reverse
  • 导入
    程序端点每个发布者应有一个导入程序端点。例如,如果有2个发布者,localhost:4503和4504,则应有2个条目:

    • https://localhost:4503/libs/sling/distribution/services/importers/socialpubsync
    • https://localhost:4504/libs/sling/distribution/services/importers/socialpubsync
  • 选择Save

8.AEM Communities用户同步监听器

(可选)同步其他JCR节点

如果有自定义数据需要在多个发布实例之间同步,则:

  • 在每个发布实例上:

    • 以管理员权限登录

    • 访问Web控制台

      • 例如https://localhost:4503/system/console/configMgr
    • 定位AEM Communities User Sync Listener

    • 选择要打开进行编辑的现有配置(铅笔图标)
      验证Name:socialpubsync-scheduled-trigger

  • 节点
    类型这是要同步的节点类型的列表。除sling:Folder以外的任何节点类型都需要在此列出(sling:folder是单独处理的)。
    要同步的节点类型的默认列表:

    • rep:用户
    • nt:unstructured
    • nt:资源
  • 可忽
    略属性这是在检测到任何更改时将忽略的属性列表。对这些属性所做的更改可能会作为其他更改的副作用进行同步(因为同步始终处于节点级别),但对这些属性所做的更改本身不会触发同步。
    要忽略的默认属性:

    • cq:lastModified
  • 可忽略
    的节点在同步过程中将完全忽略的子路径。这些子路径下的任何内容将随时同步。
    要忽略的默认节点:

    • .tokens
    • 系统
  • 分布
    式文件夹大多数sling:文件夹被忽略,因为不需要同步。此处列出了少数例外。
    要同步的默认文件夹

    • 细分/评分
    • 社交/关系
    • 活动

9.唯一Sling ID

CAUTION

如果Sling ID在两个或多个发布实例之间匹配,则用户组同步将失败。

如果发布场中多个发布实例的Sling ID相同,则用户组将不会同步。

要验证所有Sling ID值是否不同,请在每个发布实例上:

  1. 浏览至http://<host>:<port>/system/console/status-slingsettings
  2. 检查​Sling ID​的值

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

  1. 停止具有匹配Sling ID的发布实例之一

  2. 在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*

  3. 开始发布实例

    • 启动时,将为其分配一个新的Sling ID
  4. 验证​Sling ID​现在是唯一的

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

Vault Package Builder工厂

为了使更新正确同步,必须修改用于用户同步的保险存储包生成器:

  • 在每个AEM发布实例上

  • 访问Web控制台

  • 找到Apache Sling Distribution Packaging - Vault Package Builder Factory

    • Builder name: socialpubsync-vlt
  • 选择编辑图标

  • 添加两个Package Node Filters:

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

    • 要用新节点覆盖现有rep:policy节点,请添加第三个包过滤器:

      • /home/users|+.*/rep:policy
    • 要防止策略被分发,请设置

      • Acl Handling: IGNORE

保管库包生成器工厂

当……时会发生什么情况

发布时用户自注册或编辑用户档案

根据设计,在发布环境(自注册)中创建的用户和用户档案不会显示在创作环境中。

当拓扑为发布场且用户同步已正确配置时,使用Sling分发在发布场上同步*user *和​用户用户档案

用户或用户组是使用安全控制台创建的

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

当使用用户管理和安全控制台在发布环境中添加新用户时,用户同步将根据需要将新用户及其组成员关系同步到其他发布实例。 用户同步还将同步通过安全控制台创建的用户组。

疑难解答

如何使用户同步脱机

要使用户同步脱机,要删除发布者手动同步数据,分发队列必须为空且安静。

要检查分发队列的状态,请执行以下操作:

  • 作者:

    • 使用CRXDE Lite

      • /var/sling/distribution/packages中查找条目

        • 使用模式distrpackage_*命名的文件夹节点
    • 使用包管理器

      • 查找挂起的包(尚未安装)

        • 以模式socialpubsync-vlt*命名
        • communities-user-admin创建

当分发队列为空时,禁用用户同步:

完成任务后,要重新启用用户同步:

使用同步诊断

用户同步诊断是检查配置并尝试识别任何问题的工具。

在创作时,只需通过​工具、操作、诊断、用户同步诊断从主控制台导航。

只需输入“用户同步诊断”控制台,即会显示结果。

这是未启用用户同步时显示的内容:

如何为发布者运行诊断

当从作者环境运行诊断时,通过/失败结果将包括[INFO]部分,显示已配置发布实例的列表以进行确认。

该列表中包含每个发布实例的URL,该实例将运行该实例的诊断。 url参数syncUser被附加到诊断URL中,其值设置为在步骤2中创建的​授权同步用户

注意:在启动URL之前,授 权的 sync用户必须已登录到该发布实例。

配置添加不正确

当用户同步失败时,最常见的问题是额外的配置是​added。 相反,现有的default配置应该已编辑​**。

以下是编辑后默认配置在Web控制台中的显示方式视图。 如果出现多个实例,则应删除添加的配置。

(author)一个Apache Sling Distribution Agent —— 同步代理工厂

(作者)一个Apache Sling Distribution Transport Credentials —— 基于用户凭据的DistributionTransportSecretProvider

(发布)一个Apache Sling Distribution Agent —— 队列代理工厂

(发布)一个Adobe Social同步——比较观察器工厂

(author)一个Apache Sling分发触发器——计划触发器工厂

在响应处理期间修改操作异常

如果日志中显示以下内容:

org.apache.sling.servlets.post.impl.operations.ModifyOperation Exception during response processing.

java.lang.IllegalStateException: This tree does not exist

然后验证部分2。 正确遵循“创建授权用户”。

本节介绍如何创建在所有发布实例上存在的授权用户,并在作者的“机密提供者”OSGi配置中识别这些用户。 默认情况下,用户为admin

授权用户应成为​administrators​用户组的成员,该用户组的权限不应更改。

授权用户应对所有发布实例明确具有以下权限和限制:

路径 jcr:all rep:glob
/home X /活动/
/home/users X /活动/
/home/groups X /活动/

作为administrators组的成员,授权用户应对所有发布实例具有以下权限:

路径 jcr:all jcr:read rep:write
/etc/packages/sling/distribution X
/libs/sling/distribution X
/var X
/var/eventing X X
/var/sling/distribution X X

用户组同步失败

如果Sling ID在两个或多个发布实例之间匹配,则用户组同步将失败。

请参见第9节。 唯一Sling ID

手动同步用户和用户组

要配置或启用用户同步,请转至步骤1:Apache Sling Distribution Agent - Sync Agent Factory

当发布者变为不可用时

当发布实例不可用时,如果它将来恢复联机状态,则不应删除它。 更改将排队等待发布者,一旦它重新联机,将处理更改。

如果发布实例永远不会恢复联机状态,如果它永久脱机,则必须删除它,因为队列累积将导致作者环境中出现明显的磁盘空间使用。

当发布者关闭时,创作日志将具有与以下内容类似的异常:

28.01.2016 15:57:48.475 ERROR
 [pool-12-thread-34-org_apache_sling_distribution_queue_socialpubsync_endpoint1
 (org/apache/sling/distribution/queue/socialpubsync/endpoint1)]
 org.apache.sling.distribution.agent.impl.SimpleDistributionAgent [agent][socialpubsync] could not deliver package distrpackage_1454014575838_a2b45ec8-0400-42f3-bed8-ae09b66381cb
 org.apache.sling.distribution.packaging.DistributionPackageImportException: failed in importing package ...

如何删除发布者

要从Apache Sling Distribution Agent - Sync Agent Factory中删除发布者,分发队列必须为空且安静。

在此页面上