ユーザーの同期

はじめに

デプロイメントがパブリッシュファームの場合、メンバーはログインして、任意のパブリッシュノードでそのデータを確認できる必要があります。

パブリッシュ環境で作成されたユーザーとユーザーグループ(ユーザーデータ)は、オーサー環境では必要ありません。

オーサー環境で作成されたほとんどのユーザーデータはオーサー環境に残るものと想定されており、パブリッシュインスタンスにはコピーされません。

他のパブリッシュインスタンスが同じユーザーデータにアクセスするには、1 つのパブリッシュインスタンスに加えられた登録と変更をそれらのパブリッシュインスタンスに同期する必要があります。

AEM 6.1以降では、ユーザー同期が有効になっている場合、ユーザーデータはファーム内のパブリッシュインスタンス間で自動的に同期され、オーサー環境では作成されません。

Sling 配布

ユーザーデータは、ACLと共に、Oak JCRの下のレイヤーであるOak Coreに保存され、Oak APIを使用してアクセスされます。 頻繁に更新されない場合は、Slingコンテンツ配布(Sling配布)を使用してユーザーデータを他のパブリッシュインスタンスと同期するのが適切です。

従来のレプリケーションと比較して、Sling配布を使用したユーザー同期のメリットは次のとおりです。

  • パブリッシュインスタンスで作成されたユーザー​、ユーザープロファイル​​およびユーザーグループ​**​がオーサー環境に作成されません

  • Sling 配布により JCR イベントにプロパティが設定されることで、レプリケーションが無限に繰り返されることなく、パブリッシュ側のイベントリスナーで実行できます

  • Sling 配布は派生元でないパブリッシュインスタンスにのみユーザーデータを送信するので、不要なトラフィックが発生しません

  • 🔗 ユーザーノード内のACLssetが同期に含まれる

メモ

セッションが必要な場合は、SSOソリューションを使用するか、スティッキーセッションを使用し、別のパブリッシャーに切り替えられた場合は顧客にログインすることをお勧めします。

注意

ユーザー同期が有効化されている場合でも、administrators グループの同期はサポートされません。代わりに、「差分をインポート」できないエラーがエラーログに記録されます。

したがって、デプロイメントがパブリッシュファームの場合、ユーザーが​*administrators​グループに追加または削除された場合は、各パブリッシュインスタンスで手動で変更をおこなう必要があります。

ユーザー同期の有効化

メモ

デフォルトでは、ユーザー同期はdisabledです。

ユーザー同期を有効にするには、OSGi の既存の​**​設定を変更する必要があります。

ユーザー同期を有効にした結果、新しい設定が追加されることはありません。

ユーザー同期では、オーサー環境で作成されていないユーザーデータでもその配布の管理はオーサー環境に依存します。すべての設定はオーサー環境で行われるわけではありませんが、各手順で、オーサー環境とパブリッシュ環境のどちらで実行するかが明確に示されます。

次にユーザー同期の有効化に必要な手順と、トラブルシューティングの節を示します。

前提条件

  1. ユーザーとユーザーグループが既に1つのパブリッシャー上に作成されている場合は、ユーザー同期を設定して有効にする前に、すべてのパブリッシャーにユーザーデータを手動で同期することをお勧めします。

ユーザー同期を有効にすると、新規に作成されたユーザーおよびグループのみが同期されるようになります。

  1. 最新のコードがインストールされていることを確認します。

1. Apache Sling Distribution Agent - Sync Agents Factory

ユーザー同期の有効化

  • オーサー環境で

    • 管理者権限でログインします

    • Web コンソールにアクセスします

    • Apache Sling Distribution Agent - Sync Agents Factoryを探します

      • 編集用に開く既存の設定を選択します(鉛筆アイコン)。
        nameを確認します。socialpubsync

      • Enabledチェックボックスを選択します。

      • Saveを選択します。

2. 承認済みユーザーの作成

権限の設定​この承認済みユーザーが手順 3 のオーサー環境での Sling 配布の設定に使用されます。

注意

新しいユーザーを作成する必要があります。

  • デフォルトで割り当てられるユーザーは admin です。
  • コンテンツに communities-user-admin user.

ACL の追加方法

  • CRXDE Lite にアクセスします

  • /homeノードを選択します。

  • 右側のウィンドウで、「Access Control」タブを選択します。

  • +ボタンを選択して、ACLエントリを追加します。

    • プリンシパル:ユーザー同期用に作成されたユーザーを検索​**
    • Allow
    • 権限: jcr:all
    • ​Restrictionsrep:glob: */activities/*
    • OK」を選択します。
  • すべて保存」を選択します。

関連トピック

3. Adobe Granite Distribution - Encrypted Password Transport Secret Provider

権限の設定

承認済みユーザー( administrators​userグループのメンバー)がすべてのパブリッシュインスタンスで作成されたら、その承認済みユーザーは、オーサー環境でオーサー環境からパブリッシュ環境へのユーザーデータの同期権限を持つと識別される必要があります。

  • オーサー環境で

    • 管理者権限でログインします

    • Web コンソールにアクセスします

    • com.adobe.granite.distribution.core.impl.CryptoDistributionTransportSecretProvider.nameを探します

    • 編集用に開く既存の設定を選択します(鉛筆アイコン)。
      property nameを確認します。socialpubsync-publishUser

    • 手順 2 でパブリッシュ環境で作成した承認済みユーザーのユーザー名とパスワードを設定します

      • 例: usersync-admin

4. Apache Sling Distribution Agent - Queue Agents Factory

ユーザー同期の有効化

  • パブリッシュ環境で:

    • 管理者権限でサインインします。

    • Web コンソールにアクセスします

    • Apache Sling Distribution Agent - Queue Agents Factoryを探します

      • 編集用に開く既存の設定を選択します(鉛筆アイコン)。
        Nameを確認します。socialpubsync-reverse

      • Enabledチェックボックスを選択します。

      • Saveを選択します。

    • 繰り返し​各パブリッシュインスタンス

5. Adobe Social Sync - Diff Observer Factory

グループ同期の有効化

  • 各パブリッシュインスタンスで:

    • 管理者権限でサインインします。

    • Web コンソールにアクセスします

    • Adobe Social Sync - Diff Observer Factory​を探します

      • 編集する既存の設定を選択します(鉛筆アイコン)

        検証 agent name: socialpubsync-reverse

      • Enabledチェックボックスを選択します。

      • Saveを選択します。

6. Apache Sling Distribution Trigger - Scheduled Triggers Factory

(オプション)ポーリング間隔の変更

デフォルトでは、オーサー環境では 30 秒ごとに変更をポーリングします。この間隔を変更するには:

  • オーサー環境で

    • 管理者権限でログインします

    • Web コンソールにアクセスします

    • Apache Sling Distribution Trigger - Scheduled Triggers Factoryを探します

      • 編集する既存の設定を選択します(鉛筆アイコン)

        • 検証 Name: socialpubsync-scheduled-trigger
      • Interval in Secondsを目的の間隔に設定します。

      • Saveを選択します。

複数のパブリッシュインスタンスの設定

デフォルトの設定は、単一のパブリッシュインスタンス用の設定です。ユーザー同期を有効にする理由は、パブリッシュファームの場合など、複数のパブリッシュインスタンスを同期するためです。追加のパブリッシュインスタンスをSync Agents Factoryに追加する必要があります。

7. Apache Sling Distribution Agent - Sync Agents Factory

パブリッシュインスタンスを追加するには:

  • オーサー環境で

  • Exporter Endpoints 各パブリッシャーにエクスポーターエンドポイントが必要です。例えば、パブリッシャーが localhost:4503 と 4504 の 2 つの場合、次の 2 つのエントリが必要です。

    • https://localhost:4503/libs/sling/distribution/services/exporters/socialpubsync-reverse
    • https://localhost:4504/libs/sling/distribution/services/exporters/socialpubsync-reverse
  • インポー
    ターエンドポイント各パブリッシャーにインポーターエンドポイントが必要です。例えば、パブリッシャーが localhost:4503 と 4504 の 2 つの場合、次の 2 つのエントリが必要です。

    • https://localhost:4503/libs/sling/distribution/services/importers/socialpubsync
    • https://localhost:4504/libs/sling/distribution/services/importers/socialpubsync
  • Saveを選択します。

8. AEM Communities User Sync Listener

(オプション)追加の JCR ノードの同期

複数のパブリッシュインスタンス間で同期するカスタムデータがある場合は、次のようにします。

  • 各パブリッシュインスタンスで:

    • 管理者権限でサインインします。

    • Web コンソールにアクセスします

      • 例: https://localhost:4503/system/console/configMgr
    • AEM Communities User Sync Listenerを探します

    • 編集用に開く既存の設定を選択します(鉛筆アイコン)。
      Nameを確認します。socialpubsync-scheduled-trigger

  • Node Types 同期するノードタイプのリストです。sling:Folder 以外のすべてのノードタイプがここにリストされます(sling:folder は別個に処理されます)。 同期されるノードタイプのデフォルトのリストは次のとおりです。

    • rep:User
    • nt:unstructured
    • nt:resource
  • Ignorable Properties 何らかの変更が検出された場合に無視されるプロパティのリストです。これらのプロパティに対する変更は、他の変更の副作用として同期される場合がありますが(同期は常にノードレベルでおこなわれるので)、これらのプロパティに対する変更そのものが同期をトリガーすることはありません。 無視されるデフォルトのプロパティは次のとおりです。

    • cq:lastModified
  • Ignorable Nodes 同期中に完全に無視されるサブパスです。このサブパスの下にあるものはどのタイミングでも同期されません。 無視されるデフォルトのノードは次のとおりです。

    • .tokens
    • system
  • Distributed Folders 同期が不要であるのでほとんどの sling:Folders は無視されます。数少ない例外を次に示します。 同期されるデフォルトのフォルダーは次のとおりです。

    • segments/scoring
    • social/relationships
    • activities

9. 一意の Sling ID

注意

2 つ以上のパブリッシュインスタンスで 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 Factory

更新が適切に同期されるようにするには、ユーザー同期用に Vault Package Builder を変更する必要があります。

  • 各 AEM パブリッシュインスタンスで

  • Web コンソールにアクセスします

  • Apache Sling Distribution Packaging - Vault Package Builder Factoryを探します。

    • Builder name: socialpubsync-vlt
  • 編集アイコンを選択します。

  • 2つの<a0/を追加します。Package Node Filters

    • /home/users|-.*/.tokens
    • /home/users|-.*/rep:cache
  • ポリシーの処理:

    • 既存の rep:policy ノードを新しいノードで上書きするには、3 つ目のパッケージフィルターを追加します

      • /home/users|+.*/rep:policy
    • ポリシーが配布されないようにするには、次のように設定します

      • Acl Handling: IGNORE

Vault Package Builder Factory

…の場合の影響

パブリッシュ環境でのユーザーの自己登録またはプロファイルの編集

仕様上、パブリッシュ環境で作成されたユーザーとプロファイル(自己登録)は、オーサー環境では表示されません。

トポロジがパブリッシュファームで、ユーザー同期が正しく設定されている場合、Sling配布を使用して、パブリッシュファーム全体で*user *および​ユーザープロファイル​が同期されます。

セキュリティコンソールでのユーザーまたはユーザーグループの作成

仕様上、パブリッシュ環境で作成されたユーザーデータは、オーサー環境では表示されません。その反対も同様です。

ユーザー管理およびセキュリティコンソールを使用してパブリッシュ環境で新しいユーザーを追加すると、ユーザーの同期機能により、新しいユーザーとそのグループメンバーシップがその他のパブリッシュインスタンスに同期されます(必要な場合)。ユーザー同期では、セキュリティコンソールを使用して作成したユーザーグループも同期されます。

トラブルシューティング

ユーザー同期をオフラインにする方法

パブリッシャーを削除したり、データを手動で同期したりするためにユーザー同期をオフラインにするには、配布キューが空であり、静止している必要があります。

配布キューの状態をチェックするには:

  • オーサー環境で:

    • CRXDE Liteを使用

      • /var/sling/distribution/packages内のエントリを探す

        • distrpackage_* _* という名前パターンを持つフォルダー名
    • パッケージマネージャーを使用する場合

      • (まだインストールされていない)保留中のパッケージを探します

        • パターンsocialpubsync-vlt*で名前が付けられる
        • 作成者: communities-user-admin

配布キューが空である場合は、ユーザー同期を無効にします。

タスク完了後にユーザー同期を再び有効にするには:

ユーザー同期診断

ユーザー同期診断は、設定をチェックして問題の特定を試みるツールです。

オーサー環境では、メインコンソールから​ツール/運営/診断/ユーザー同期診断を実行します。

結果はユーザー同期診断コンソールに表示されます。

ユーザー同期が有効になっていない場合は、次のように表示されます。

パブリッシャーに対する診断の実行方法

オーサー環境から診断を実行すると、パス/失敗の結果には、確認用に設定されたパブリッシュインスタンスのリストを表示する[INFO]セクションが含まれます。

このリストには、診断が実行される各パブリッシュインスタンスの URL が記載されています。urlパラメーターsyncUserが診断URLに追加され、その値が手順2で作成した​許可された同期ユーザー​に設定されます。

注意:URL を起動するには、承認済み同期ユーザー​**​がそのパブリッシュインスタンスに既にログインしている必要があります。

正しく追加されていない設定

ユーザー同期が正しく機能しないのは、主に余分な設定が追加されていることが原因です。**​代わりに、既存のデフォルト設定は​編集​されているはずです。

Web コンソールに表示される、編集されたデフォルトの設定は次のとおりです。複数のインスタンスが表示される場合は、追加した設定を削除する必要があります。

(オーサー)Apache Sling Distribution Agent - Sync Agents Factory 1 つ

(オーサー)Apache Sling Distribution トランスポート認証情報 - ユーザ認証情報に基づく DistributionTransportSecretProvider 1 つ

(パブリッシュ)Apache Sling Distribution Agent - Queue Agents Factory 1 つ

(パブリッシュ)Adobe Social Sync - Diff Observer Factory 1 つ

(オーサー)Apache Sling Distribution Trigger - Scheduled Triggers Factory 1 つ

応答処理中の操作の例外の変更

ログに次の内容が表示される場合:

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

java.lang.IllegalStateException: This tree does not exist

次に、セクション2を確認します。 承認済みユーザーの作成に正しく従っていました。

この節では、すべてのパブリッシュインスタンスに存在する承認済みユーザーを作成し、それらをオーサー環境の「秘密鍵プロバイダー」OSGi 設定で特定する方法について説明します。デフォルトでは、ユーザーはadminです。

承認済みユーザーは administrators ユーザーグループのメンバーにして、そのグループの権限は変更しないでください。

承認済みユーザーは、すべてのパブリッシュインスタンスに対する次の権限および制限を明示的に保持している必要があります。

path jcr:all rep:glob
/home X /activities/
/home/users X /activities/
/home/groups X /activities/

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

ユーザーグループ同期の失敗

2 つ以上のパブリッシュインスタンスで Sling ID が一致すると、ユーザーグループの同期が失敗します。

9.一意の Sling ID の節を参照してください

ユーザーおよびユーザーグループの手動同期

ユーザー同期を設定または有効にするには、手順1に進みます。Apache Sling Distribution Agent - Sync Agents 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 Agents Factory からパブリッシャーを削除するには、配布キューが空であり、静止している必要があります。

このページ