デプロイメントがパブリッシュファームであるとき、メンバーはすべてのパブリッシュノードにログインしてその中のデータを閲覧できる必要があります。
パブリッシュ環境で作成されたユーザーとユーザーグループ(ユーザーデータ)は、オーサー環境では必要ありません。
オーサー環境で作成されたほとんどのユーザーデータはオーサー環境に残るものと想定されており、パブリッシュインスタンスにはコピーされません。
他のパブリッシュインスタンスが同じユーザーデータにアクセスするには、1 つのパブリッシュインスタンスに加えられた登録と変更をそれらのパブリッシュインスタンスに同期する必要があります。
AEM 6.1 では、ユーザー同期を有効にすると、ユーザーデータがファーム内のパブリッシュインスタンス全体に自動的に同期され、オーサー環境には作成されません。
ユーザーデータは ACL と共に Oak JCR の下のレイヤーの Oak Core に格納され、Oak API を使用してアクセスできます。アップデートの頻度が少ない場合は、Sling コンテンツ配布(Sling 配布)を使用してユーザーデータを他のパブリッシュインスタンスに同期するのが適切です。
従来のレプリケーションと比較して、Sling 配布を使用してユーザーを同期する利点は次のとおりです。
パブリッシュインスタンスで作成されたユーザー、ユーザープロファイルおよびユーザーグループがオーサー環境に作成されません
Sling 配布により JCR イベントにプロパティが設定されることで、レプリケーションが無限に繰り返されることなく、パブリッシュ側のイベントリスナーで実行できます
Sling 配布は派生元でないパブリッシュインスタンスにのみユーザーデータを送信するので、不要なトラフィックが発生しません
ユーザーノードで設定された ACL が同期に含まれます
セッションが必要な場合は、SSO ソリューションか定着セッションを使用して、別のパブリッシュインスタンスに切り替わった際にはお客様にログインしてもらうことをお勧めします。
ユーザー同期が有効化されている場合でも、administrators グループの同期はサポートされません。代わりに、「差分のインポート」が失敗した旨を示すログがエラーログに記録されます。
このため、デプロイメントがパブリッシュファームで、管理者グループに対してユーザーが追加または削除された場合、変更は各パブリッシュインスタンスに対して手動で実行する必要があります。
デフォルトでは、ユーザー同期は disabled
になっています。
ユーザー同期を有効にするには、OSGi の既存の設定を変更する必要があります*。*
ユーザー同期を有効にした結果、新しい設定が追加されることはありません。
ユーザー同期では、オーサー環境で作成されていないユーザーデータでもその配布の管理はオーサー環境に依存します。すべてではありませんが、設定の大多数はオーサー環境にあり、それをオーサー環境またはパブリッシュ環境で実行するかどうかは各手順で明確に識別します。
ユーザー同期の有効化に必要な手順と、トラブルシューティングの節を以下に示します。
ユーザー同期を有効にすると、新規に作成されたユーザーおよびグループのみが同期されるようになります。
ユーザー同期の有効化
オーサー環境で
管理者権限でログインします
Web コンソールにアクセスします
Apache Sling Distribution Agent - Sync Agents Factory
を見つけます。
編集する既存の設定を選択します(鉛筆アイコン)
検証 name
:socialpubsync
「Enabled
」チェックボックスをオンにします
「Save
」を選択します。
権限の設定
この承認済みユーザーが手順 3 のオーサー環境での Sling 配布の設定に使用されます。
各パブリッシュインスタンスで
管理者権限でログインします
セキュリティコンソールにアクセスします
新しいユーザーを作成します
usersync-admin
このユーザーを administrators
ユーザーグループに追加します
Allow jcr:all
制限付きで rep:glob=*/activities/*
新しいユーザーを作成する必要があります。
admin
です。communities-user-admin user.
を使用しないでください。CRXDE Lite にアクセスします
/home
ノードを選択します
右側のペインで「Access Control
」タブを選択します
+
ボタンを選択して、ACL エントリを追加します
Allow
jcr:all
*/activities/*
「すべて保存」を選択します。
関連トピック
権限の設定
administrators
ユーザーグループのメンバーである承認済みユーザーがすべてのパブリッシュインスタンスで作成されたら、ユーザーデータをオーサー環境からパブリッシュ環境に同期する権限があるので、その承認済みユーザーをオーサー環境で識別する必要があります。
オーサー環境で
ユーザー同期の有効化
各パブリッシュインスタンスで:
管理者権限でサインインします。
Web コンソールにアクセスします
Apache Sling Distribution Agent - Queue Agents Factory
を見つけます
編集する既存の設定を選択します(鉛筆アイコン)
検証 Name
:socialpubsync-reverse
「Enabled
」チェックボックスをオンにします
「Save
」を選択します。
各パブリッシュインスタンスで繰り返します
グループ同期の有効化
各パブリッシュインスタンスで:
管理者権限でサインインします。
Web コンソールにアクセスします
Adobe Social Sync - Diff Observer Factory
を見つけます
編集する既存の設定を選択します(鉛筆アイコン)。
agent name
が socialpubsync-reverse
であることを確認します
「Enabled
」チェックボックスをオンにします
「Save
」を選択します
(オプション)ポーリング間隔の変更
デフォルトでは、オーサー環境では 30 秒ごとに変更をポーリングします。この間隔を変更するには、以下の手順を実行します。
オーサー環境で
管理者権限でログインします
Web コンソールにアクセスします
Apache Sling Distribution Trigger - Scheduled Triggers Factory
を見つけます
編集する既存の設定を選択します(鉛筆アイコン)。
Name
が socialpubsync-scheduled-trigger
であることを確認します「Interval in Seconds
」に任意の間隔を指定します
「Save
」を選択します。
デフォルトの設定は、単一のパブリッシュインスタンス用の設定です。ユーザー同期を有効にする理由は、複数のパブリッシュインスタンス(パブリッシュファーム用になど)を同期することなので、追加のパブリッシュインスタンスを Sync Agents Factory に追加する必要があります。
パブリッシュインスタンスを追加するには:
オーサー環境で
管理者権限でログインします
Web コンソールにアクセスします
Apache Sling Distribution Agent - Sync Agents Factory
を見つけます。
Name
:socialpubsync
エクスポーターエンドポイント
各パブリッシュインスタンスにエクスポーターエンドポイントが必要です。例えば、パブリッシュインスタンスが 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
」を選択します
(オプション)追加の JCR ノードの同期
複数のパブリッシュインスタンス間で同期するカスタムデータがある場合は、次のようにします。
各パブリッシュインスタンスで:
管理者権限でサインインします。
Web コンソールにアクセスします
https://localhost:4503/system/console/configMgr
AEM Communities User Sync Listener
を見つけます。
編集する既存の設定を選択します(鉛筆アイコン)
次を確認しますName
:socialpubsync-scheduled-trigger
ノードタイプ
同期するノードタイプのリストです。sling:Folder 以外のすべてのノードタイプがここにリストされます(sling:folder は別個に処理されます)。
同期されるノードタイプのデフォルトのリストは次のとおりです。
Ignorable Properties
何らかの変更が検出された場合に無視されるプロパティのリストです。これらのプロパティに対する変更は、他の変更の副作用として同期される場合がありますが(同期は常にノードレベルで行われるので)、これらのプロパティに対する変更そのものが同期をトリガーすることはありません。
無視されるデフォルトのプロパティは次のとおりです。
Ignorable Nodes
同期中に完全に無視されるサブパスです。このサブパスの下にあるものはどのタイミングでも同期されません。
無視されるデフォルトのノードは次のとおりです。
Distributed Folders
同期が不要であるのでほとんどの sling:Folders は無視されます。数少ない例外を次に示します。
同期されるデフォルトのフォルダーは次のとおりです。
2 つ以上のパブリッシュインスタンスで Sling ID が一致すると、ユーザーグループの同期が失敗します。
Sling ID がパブリッシュファームの複数のパブリッシュインスタンスで同じである場合、ユーザーグループは同期されません。
すべての Sling ID の値が異なることを確認するには、各パブリッシュインスタンスで次の手順を実行します。
http://<host>:<port>/system/console/status-slingsettings
を参照してください。あるパブリッシュインスタンスの Sling ID が他のパブリッシュインスタンスの Sling ID と一致する場合は、次のようにします。
Sling ID が一致するパブリッシュインスタンスの一方を停止する
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*
パブリッシュインスタンスを開始する
Sling ID が一意であることを確認する
すべてのパブリッシュインスタンスの Sling ID が一意になるまでこの手順を繰り返します。
更新が適切に同期されるようにするには、ユーザー同期用に Vault Package Builder を変更する必要があります。
各 AEM パブリッシュインスタンスで
Web コンソールにアクセスします
Apache Sling Distribution Packaging - Vault Package Builder Factory
を見つけます。
Builder name: socialpubsync-vlt
編集アイコンを選択します。
2 つを追加 Package Node Filters
:
/home/users|-.*/.tokens
/home/users|-.*/rep:cache
ポリシーの処理:
既存の rep:policy ノードを新しいノードで上書きするには、3 つ目のパッケージフィルターを追加します
/home/users|+.*/rep:policy
ポリシーが配布されないようにするには、次のように設定します
Acl Handling:
IGNORE
仕様上、パブリッシュ環境で作成されたユーザーとプロファイル(自己登録)は、オーサー環境では表示されません。
トポロジーがパブリッシュファームであり、ユーザー同期が正しく設定されると、Sling 配布を使用してユーザーとユーザープロファイルがパブリッシュファーム間で同期されます。
仕様上、パブリッシュ環境で作成されたユーザーデータは、オーサー環境では表示されません。その反対も同様です。
ユーザー管理およびセキュリティコンソールを使用してパブリッシュ環境で新しいユーザーを追加すると、ユーザーの同期機能により、新しいユーザーとそのグループメンバーシップがその他のパブリッシュインスタンスに同期されます(必要な場合)。ユーザー同期により、セキュリティコンソールによって作成されたユーザーグループも同期されます。
パブリッシュインスタンスを削除したり、データを手動で同期したりするためにユーザー同期をオフラインにするには、配布キューが空であり、静止している必要があります。
配布キューの状態をチェックするには:
オーサー環境で:
CRXDE Lite を使用する場合
/var/sling/distribution/packages
内で次のエントリを探します
distrpackage_*
という名前パターンを持つフォルダーノードパッケージマネージャーを使用する場合
(まだインストールされていない)保留中のパッケージを探します
socialpubsync-vlt*
という名前パターンを持つものcommunities-user-admin
配布キューが空である場合は、ユーザー同期を無効にします。
オーサー環境で
Enabled
」チェックボックスをオフにしますタスク完了後にユーザー同期を再び有効にするには:
オーサー環境で
Enabled
」チェックボックスをオンにしますユーザー同期診断は、設定をチェックして問題の特定を試みるツールです。
オーサー環境で、メインコンソールからツール/操作/診断/ユーザー同期診断の順に移動します。
結果はユーザー同期診断コンソールに表示されます。
ユーザー同期が有効になっていない場合は、次のように表示されます。
診断がオーサー環境から実行された場合は、成否の結果に[情報]セクションが含まれています。このセクションには、設定済みのパブリッシュインスタンスのリストが確認用に表示されます。
このリストには、診断が実行される各パブリッシュインスタンスの URL が記載されています。URL パラメーター syncUser
が診断の URL に追加され、その値は手順 2 で作成した承認済み同期ユーザー に設定されています。
注意:URL を起動するには、承認済み同期ユーザーがそのパブリッシュインスタンスに既にログインしている必要があります。
ユーザー同期が正しく機能しないのは、主に余分な設定が追加されていることが原因です。代わりに、既存のデフォルト設定を編集する必要があります。
Web コンソールに表示される、編集されたデフォルトの設定は次のとおりです。複数のインスタンスが表示される場合は、追加の設定を削除してください。
ログに次の内容が表示される場合:
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
グループのメンバーであるので、すべてのパブリッシュインスタンスに対する次の権限があります。
path | 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 の節を参照してください
ユーザーおよびユーザーグループが存在するパブリッシュインスタンスで、以下を行います。
/home
のパッケージを作成します
パッケージの編集時
/home
Overwrite
その他のパブリッシュインスタンスで:
ユーザー同期を設定したり、有効にしたりするには、手順 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 からパブリッシュインスタンスを削除するには、配布キューが空であり、静止している必要があります。
オーサー環境で:
手順 7 に従って、次の両方のサーバーリストからパブリッシュインスタンスを削除します。
Exporter Endpoints
Importer Endpoints
ユーザー同期を再び有効にする
Enabled
」チェックボックスをオンにします