當部署為publish farm時,成員需要能夠登錄並查看其任何發佈節點上的資料。
製作環境不需要在發佈環境中建立的使用者和使用者群組(使用者資料)。
在製作環境中建立的大部分使用者資料,都會保留在製作環境中,而非複製到發佈例項。
一個發佈執行個體上進行的註冊和修改必須與其他發佈執行個體同步,才能存取相同的使用者資料。
自AEM 6.1起,當啟用使用者同步時,系統會自動在伺服器陣列中的發佈執行個體間同步使用者資料,且不會在製作時建立。
使用者資料及其ACL會儲存在Oak Core(Oak JCR下方的層)中,並使用Oak API存取。 若是不經常更新,則使用Sling Content Distribution(Sling散發)將使用者資料與其他發佈執行個體同步是合理的。
使用Sling分送來同步使用者,與傳統復寫相比的優點如下:
在發佈時建立的使 用者、使 用者設定 ** 檔和使用者群組不會在作者上建立
Sling分送會在jcr事件中設定屬性,因此可在發佈端事件接聽程式中運作,而不需擔心無限復寫回圈
Sling發佈只會將使用者資料傳送至非原始發佈例項,消除不必要的流量
🔗 同步包含用戶節點中的ACLsset
如果需要工作階段,建議您使用SSO解決方案或使用黏著工作階段,並讓客戶在切換至其他發佈者時登入。
不支援*administrators *組的同步,即使啟用了用戶同步。 相反,「導入差異」失敗將記錄在錯誤日誌中。
因此,當部署為發佈伺服器陣列時,如果將使用者新增至*administrators *group,則必須在每個發佈執行個體上手動進行修改。
預設情況下,用戶同步為disabled
。
啟用用戶同步涉及修改existing OSGi配置。
啟用使用者同步後,不應新增任何設定。
使用者同步需仰賴製作環境來管理使用者資料分配,即使使用者資料並非建立在製作上亦然。 大部分(但並非全部)的設定會在製作環境中進行,每個步驟都可清楚識別要在製作或發佈上執行。
以下是啟用用戶同步所需的步驟,後面是Troubleshooting部分:
如果已在一個發佈商上建立了用戶和用戶組,建議在配置和啟用用戶同步之前,手動將用戶資料同步到所有發佈商。
啟用使用者同步後,只會同步新建立的使用者和群組。
確認已安裝最新程式碼:
啟用用戶同步
論作者
以管理員權限登入
訪問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 Granite Distribution - 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
預設設定適用於單一發佈執行個體。 由於啟用用戶同步的原因是同步多個發佈實例(例如對於發佈場),因此需要將其他發佈實例添加到同步代理工廠。
新增發佈例項:
論作者
以管理員權限登入
訪問Web控制台
找到Apache Sling Distribution Agent - Sync Agents Factory
選取要開啟以進行編輯的現有設定(鉛筆圖示)
驗證 Name
: socialpubsync
導出
器端點每個發佈器都應有一個導出器端點。例如,如果有2個發佈者,localhost:4503和4504,則應有2個項目:
匯入
工具端點每個發佈工具都應有匯入工具端點。例如,如果有2個發佈者,localhost:4503和4504,則應有2個項目:
選擇Save
(可選)同步其他JCR節點
如果有需要在多個發佈執行個體間同步的自訂資料,則:
在每個發佈例項上:
以管理員權限登入
訪問Web控制台
找到AEM Communities User Sync Listener
選取要開啟以進行編輯的現有設定(鉛筆圖示)
驗證 Name
: socialpubsync-scheduled-trigger
節點類型
這是要同步的節點類型清單。 此處需要列出sling:Folder以外的任何節點類型(sling:folder需另行處理)。
要同步的節點類型的預設清單:
可忽略的屬性
這是在偵測到任何變更時將忽略的屬性清單。 對這些屬性所做的更改可能會作為其他更改的副作用而同步(因為同步始終在節點級別),但對這些屬性所做的更改本身不會觸發同步。
要忽略的預設屬性:
可忽略節點
同步期間將完全忽略的子路徑。 這些子路徑下的任何內容將隨時同步。
要忽略的預設節點:
分佈式資料夾
大部分的Sling:Folders會遭到忽略,因為不需要同步。 此處列出幾個例外。
要同步的預設資料夾
如果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。
為了正確同步更新,必須修改保管庫包生成器以便用戶同步:
每個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
根據設計,在發佈環境中建立的使用者和設定檔(自行註冊)不會出現在製作環境中。
當拓撲為publish farm且已正確配置用戶同步時,*user *和user profile會使用Sling分發在整個發佈場中同步。
根據設計,在發佈環境中建立的使用者資料不會出現在製作環境中,反之亦然。
當使用使用者管理與安全性控制台在發佈環境中新增使用者時,使用者同步會將新使用者及其群組成員資格同步至其他發佈執行個體(如有必要)。 使用者同步也會同步透過安全性主控台建立的使用者群組。
若要讓使用者同步離線,若要移除發佈者或手動同步資料,發佈佇列必須空白且安靜。
要檢查分發隊列的狀態,請執行以下操作:
在作者上:
在/var/sling/distribution/packages
中查找條目
distrpackage_*
命名的資料夾節點使用包管理器
查找掛起的包(尚未安裝)
socialpubsync-vlt*
命名communities-user-admin
建立當發佈佇列為空時,停用使用者同步:
論作者
Enabled
核取方塊完成任務後,要重新啟用用戶同步:
論作者
Enabled
核取方塊用戶同步診斷是一種工具,用於檢查配置並嘗試識別任何問題。
在作者上,只需從主控台導覽至工具、操作、診斷、使用者同步診斷。
只要進入用戶同步診斷控制台,就會顯示結果。
這是未啟用「使用者同步」時顯示的內容:
從製作環境執行診斷時,傳遞/失敗結果將包含[INFO]區段,顯示已設定的發佈例項清單以供確認。
清單中包含每個發佈執行個體的URL,該執行個體將對該執行個體執行診斷。 url參數syncUser
附加至診斷URL,其值設定為在步驟2中建立的授權同步用戶。
注意 :在啟動URL之前,已授 權的 同步使用者必須已登入該發佈執行個體。
當使用者同步無法運作時,最常見的問題是其他設定是added。 *existing *default configuration hould be a edited(現有預設配置應為edited)。
以下是編輯預設設定在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
使用者群組的成員,該群組的權限不應變更。
獲授權的使用者應在所有發佈執行個體上明確擁有下列權限和限制:
路徑 | jcr:all | rep:glob |
---|---|---|
/home | X | */activities/&ast |
/home/users | X | */activities/&ast |
/home/groups | X | */activities/&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在兩個或多個發佈執行個體之間相符,則使用者群組同步將會失敗。
在存在使用者和使用者群組的發佈者上:
建立套 件 /home
編輯套件時
/home
Overwrite
在其他發佈例項上:
要配置或啟用用戶同步,請轉至步驟1:Apache Sling Distribution Agent — 同步代理工廠
發佈例項無法使用時,如果日後重新上線,則不應將其移除。 變更會排入發佈者佇列,一旦重新上線,就會處理變更。
如果發佈例項永遠不會重新上線,如果永久離線,則必須移除它,因為佇列累積會在製作環境中造成相當大的磁碟空間使用。
發佈者關閉時,製作記錄會有類似的例外:
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中移除發佈者,發佈佇列必須空白且安靜。
在作者上:
按照步驟7從兩個伺服器清單中刪除發佈者:
Exporter Endpoints
Importer Endpoints
重新啟用用戶同步
Enabled
核取方塊