用户同步

简介

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

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

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

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

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

Sling分发

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

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

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

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

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

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

注意

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

注意

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

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

启用用户同步

注意

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

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

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

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

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

前提条件

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

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

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

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

启用用户同步

  • 在作者

chlimage_1-387

2.创建授权用户

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

注意

必须创建新用户。

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

如何添加ACL

  • 访问CRXDE Lite

  • 选择/home节点

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

  • 选择+按钮以添加ACL项

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

chlimage_1-388

另请参阅

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

配置权限

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

  • 在作者

    • 以管理员权限登录

    • 访问Web控制台

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

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

      验证 property name : socialpubsync-publishUser

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

      • 例如usersync-admin

chlimage_1-389

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

启用用户同步

  • 在发布 :

    • 以管理员权限登录

    • 访问Web控制台

    • 定位Apache Sling Distribution Agent - Queue Agents Factory

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

        验证 Name : socialpubsync-reverse

      • 选中Enabled复选框

      • 选择Save

    • 个发布实例的重复

chlimage_1-390

5.Adobe花岗岩分布——差异观察工厂

启用组同步

  • 在每个发布实例上 :

    • 以管理员权限登录

    • 访问Web控制台

    • 定位Adobe Granite Distribution - Diff Observer Factory

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

        验证 agent name : socialpubsync-reverse

      • 选中Enabled复选框

      • 选择Save

chlimage_1-391

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

(可选)修改轮询间隔

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

  • 在作者

    • 以管理员权限登录

    • 访问Web控制台

    • 定位Apache Sling Distribution Trigger - Scheduled Triggers Factory

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

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

      • 选择Save

chlimage_1-392

为多个发布实例配置

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

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

添加发布实例:

chlimage_1-393

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

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

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

8.AEM Communities用户同步监听器

(可选)同步其他JCR节点

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

chlimage_1-394

  • 节点类型

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

    要同步的节点类型的默认列表:

    • rep:用户
    • nt:unstructured
    • nt:资源
  • 可忽略属性

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

    要忽略的默认属性:

    • cq:lastModified
  • 可忽略节点

    在同步过程中将完全忽略的子路径。 这些子路径下的任何内容将随时同步。

    要忽略的默认节点:

    • .tokens
    • 系统
  • 分布式文件夹

    大多数sling:文件夹被忽略,因为不需要同步。 此处列出了少数例外。

    要同步的默认文件夹

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

9.唯一Sling ID

注意

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

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

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

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

chlimage_1-395

如果发布实例的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 Factor

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

  • 添加两个Package Filters:

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

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

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

      • Acl Handling : IGNORE

chlimage_1-396

当……时会发生什么情况

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

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

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

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

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

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

疑难解答

如何使用户同步脱机

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

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

  • 作者:

    • 使用CRXDE Lite

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

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

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

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

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

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

使用同步诊断

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

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

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

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

chlimage_1-397

如何为发布者运行诊断

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

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

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

chlimage_1-398

配置添加不正确

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

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

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

chlimage_1-399

(作者)一个AdobeGranite分发——加密密码传输机密提供程序

chlimage_1-400

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

chlimage_1-401

(发布)一个Adobe花岗岩分布——差异观察器工厂

chlimage_1-402

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

chlimage_1-403

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

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

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 &ast;/活动/&ast;
/home/users X &ast;/活动/&ast;
/home/groups X &ast;/活动/&ast;

作为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中删除发布者,分发队列必须为空且安静。

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now