環境
Adobe Experience Manager
問題
如何將AEM中具有ACL權限的使用者和群組從一部伺服器移轉至另一部伺服器,或從一部AEM例項移轉至另一部。
解決方法
步驟 1:找到管理員和匿名使用者
前往 CRXDE 精簡版應用程式 /crx/de/index.jsp
並以管理員使用者身分登入 (在來源系統上)。
前往 工具 =
查詢.
在底部 查詢 框中,輸入此查詢以查找管理員用戶: /jcr:root/home/users//element(*,rep:User)@rep:principalName="admin"
.
按一下 執行 並將結果中管理員使用者節點的路徑複製到文字檔。
對匿名用戶重複步驟3: /jcr:root/home/users//element(*,rep:User)@rep:principalName="anonymous"
.
按一下 執行 並將結果中匿名用戶節點的路徑複製到一個文本檔案(因此,現在您有兩個路徑,一個用於「admin」,另一個用於「anonymous」)。
例如:
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
– 來源系統上的管理員使用者
/home/users/K/Kj1406Qo9IDODc_nk5Ib
– 來源系統上的匿名使用者
步驟2A:移轉使用者和群組(使用Crx2Oak 或Oak-upgrade)
可以使用 crx2oak 或者 oak-upgrade 工具將使用者和群組在 AEM 執行個體之間遷移。
下載符合您所使用Oak版本的crx2oak或oak-upgrade jar:
將 jar 檔案上傳至 AEM 伺服器。
停止 AEM (來源和目標執行個體).
在下面的命令中替換 jar 檔案的名稱。
取代 /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
,/home/users/K/Kj1406Qo9IDODc_nk5Ib
在 --exclude-paths
下面命令的part參數,包含來自源系統的管理員和匿名用戶的路徑。
在線上修改路徑以和您的執行個體相符 (如有需要,在路徑前新增 segment-old:
,請參閱此處https://jackrabbit.apache.org/oak/docs/migration.html):/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository
然後在伺服器的shell上運行命令:
java -Xms2g -Xmx2g -jar oak-upgrade-1.8.12.jar \
--include-paths=/home \
--merge-paths=/home \
--exclude-paths=/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv,/home/users/K/Kj1406Qo9IDODc_nk5Ib,/home/groups/a/administrators,/home/groups/a/analytics-administrators,/home/groups/c/community-moderators,/home/groups/c/content-authors,/home/groups/c/contributor,/home/groups/community/community-groupadmin,/home/groups/community/community-sitecontentmanager,/home/groups/community/community-sitemembers,/home/groups/d/dam-users,/home/groups/default/order-administrators,/home/groups/e/everyone,/home/groups/f/forms-users,/home/groups/forms/fd-administrators,/home/groups/forms/forms-users,/home/groups/geometrixx,/home/groups/media,/home/groups/o/operators,/home/groups/projects,/home/groups/t/tag-administrators,/home/groups/t/target-activity-authors,/home/groups/u/user-administrators,/home/groups/w/workflow-editors,/home/groups/w/workflow-users,/home/users/a/admin,/home/users/a/anonymous,/home/users/mac,/home/users/media,/home/users/projects,/home/users/system,/home/rep:policy,/home/users/rep:policy,/home/groups/rep:policy \
segment-old:/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository upgradeusers.log &
完成後,請前往步驟 3 以遷移 ACL。 如果您無法使用Crx2Oak進行移轉,請改為遵循下列套件移轉步驟。
步驟 2B:遷移使用者和群組 (使用套件)
如果使用者未透過LDAP/SAML驗證或Crx2Oak自動匯入(上述步驟2A),則您可以封裝使用者和群組。
在此案例中,您會在舊系統上建立兩個不同的套件(排除管理員和匿名現成使用者)。
請依照下列步驟操作:
從步驟1的結果複製匿名和管理員使用者節點的路徑(步驟1:查找管理員和匿名用戶)。
例如: /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
— 建立套件的系統上的管理員使用者,或 /home/users/K/Kj1406Qo9IDODc_nk5Ib
— 建立包的系統上的匿名用戶
前往 封裝管理員, http://host:port/crx/packmgr/index.jsp,並以管理員身分登入。
建立套件 使用者.
將篩選器新增到 /home/users
的套件設定,並使用這些排除規則 (在 /home/users
篩選器上):
建置套件。
下載套件。
在您的電腦上解壓縮套件 zip 檔:jar -xvf users.zip META-INF/vault/filter.xml
以文字編輯器開啟檔案 META-INF/vault/filter.xml
。
新增模式= 合併 到 filter ...
標籤,例如:
?xml version="1.0" encoding="UTF-8"?
workspaceFilter version="1.0"
filter root="/home/users" mode="merge"
exclude pattern="/home/users/.*/.tokens"/
exclude pattern="/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv"/
exclude pattern="/home/users/K/Kj1406Qo9IDODc_nk5Ib"/
exclude pattern="/home/users/a/admin"/
exclude pattern="/home/users/a/anonymous"/
exclude pattern="/home/users/system"/
exclude pattern="/home/users/geometrixx"/
exclude pattern="/home/users/media"/
exclude pattern="/home/users/projects"/
exclude pattern="/home/users/mac"/
/filter
/workspaceFilter
重新壓縮修改後的套件內容,使其包含變更。
jar -uvf users.zip META-INF/vault/filter.xml
建立 群組 包含篩選規則的套件 /home/groups
.
對群組套件重複步驟 11 至 14。
(僅限升級) 如果執行到較新 AEM 版本的遷移,則安裝新的本機 AEM 執行個體 (屬於舊版本) (包含 nosamplecontent),並安裝使用者套件,然後安裝群組套件。然後在該執行個體上執行到新版本的就地升級。 這會將使用者轉換為新的 Oak 表示方式。就地升級後,再次重新封裝使用者以將它們移植到您的預期升級執行個體。對使用者群組執行相同的操作。
在新系統上安裝使用者套件。
在新系統上安裝群組套件。
如果您要從舊版AEM移轉至6.3,請前往 /useradmin
UI,並將使用者復寫接收器新增至 管理員 群組。
步驟 3.遷移 ACL
如果您可以將工具 (ACS Commons) 安裝到 AEM,則請按照以下步驟操作:
下載並安裝 ACS Commons。
按照此處提供的步驟建立 ACL 套件。
前往 http://aem-host:port/crx/packmgr/index.jsp 並以管理員身分登入。
按一下 ACL 套件。
按一下編輯。
選取進階索引標籤 (請參見下面的螢幕擷圖)。
在 AC 處理下拉式選單中選取合併,以避免移除目標系統上的現有 ACL。
在不同版本的 AEM 之間遷移 ACL 時,這一點尤其重要 (因為它可以避免移除現成可用的 ACL)。
如果您無法將工具 (ACS Commons) 安裝到 AEM,則請按照以下步驟操作。請注意,您執行這些命令的電腦必須是Mac OS、Linux或Windows(使用Cygwin),且已安裝curl、python和Java SDK。
前往 http://src-aem-host:port/crx/packmgr/index.jsp 並以管理員身分登入。
建立名為 ACL遷移.
按一下 編輯 按鈕。
選取 進階 標籤和設定 交流處理模式 to 合併.
儲存。
建置套件並下載。
在檔案系統上,對包運行此命令以提取 META-INF/vault/filter.xml
檔案:
jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
在同一目錄中,運行此命令以下載下面的ACL路徑的json檔案 /content
從源實例(設定用戶名、密碼和正確主機):
curl -u admin:admin 'http://aemhost/crx/de/query.jsp?' -G --data-urlencode '_dc=1507011481908&_charset_=utf-8&type=xpath&stmt=/jcr:root/content//element(*,rep:ACL)&showResults=true' data.json
建立檔案 generate-package-filter.py
並將python代碼貼到其下面:
import json
from pprint import pprint
with open ('data.json') as data_file:
data = json.load(data_file)
print("?xml version=\"1.0\" encoding=\"UTF-8\"?")
print("workspaceFilter version=\"1.0\"")
form item in data"results":
print("filter root=\"{path}\" /" . format(path=item "path"))
print("/workspaceFilter")
從同一資料夾運行python指令碼, data.json
已建立,並將輸出儲存至 META-INF/vault/filter.xml
(更換現有的 filter.xml
):
python generate-packge-filter.py META-INF/vault/filter.xml
使用此命令以更新 zip 檔案中的 filter.xml
:
jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
將zip檔案上傳至來源執行個體套件管理器: http://src-aem-host:port/crx/packmgr/index.jsp
按一下建置或者重新建置以建置套建。
從來源 AEM 伺服器下載套件。
將套件上傳至目的地AEM伺服器的套件管理器: http://dst-aem-host:port/crx/packmgr/index.jsp
按一下安裝以進行安裝。
對變更路徑 curl 命令的任何其他路徑重複步驟 8 至 16。例如,這將使 ACL 位於 /etc
而不是 /content
:
curl -u admin:admin 'http://aemhost/crx/de/query.jsp?' -G --data-urlencode '_dc=1507011481908&_charset_=utf-8&type=xpath&stmt=/jcr:root/etc//element(*,rep:ACL)&showResults=true' data.json