遷移使用者、群組以及 AEM 執行個體之間的 ACL
本文提供在AEM中將ACL許可權的使用者和群組從一台伺服器移轉至另一台伺服器或從一個AEM執行個體移轉至另一個執行個體的不同方式。
說明 description
環境
Adobe Experience Manager (AEM)
問題/症狀
將AEM中具有ACL許可權的使用者和群組從一台伺服器遷移到另一台伺服器或從一個AEM執行個體遷移到另一台伺服器。
解析度 resolution
步驟 1:找到管理員和匿名使用者
-
前往CRXDE Lite應用程式
/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"]
。 -
按一下 執行,並將結果中匿名使用者節點的路徑複製到文字檔案中(所以現在您有兩個路徑,一個用於「管理員」,一個用於「匿名」)。
例如:/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
– 來源系統上的管理員使用者/home/users/K/Kj1406Qo9IDODc_nk5Ib
– 來源系統上的匿名使用者
步驟2A:移轉使用者和群組(使用Crx2Oak或Oak-upgrade)
可以使用 crx2oak 或者 oak-upgrade 工具將使用者和群組在 AEM 執行個體之間遷移。
-
下載和您正在使用的Oak版本相符的crx2oak或oak-upgrade jar:
- Oak-upgrade:https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
- Crx2Oak:Maven 存放庫
-
將jar檔案上傳到AEM伺服器。
-
停止AEM (來源和目標執行個體)。
-
在下面的命令中替換 jar 檔案的名稱。
-
將下列命令的
--exclude-paths
部分引數中的/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
,/home/users/K/Kj1406Qo9IDODc_nk5Ib
取代為您來源系統的管理員和匿名使用者的路徑。 -
線上上修改路徑以符合您的執行個體(如有需要,在路徑前新增
segment-old:
,請參閱這裡):/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository
-
然後在伺服器的殼層上執行命令:
code language-none 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
的封裝設定:- 排除/home/users/。*/.tokens
- 排除/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- 排除/home/users/K/Kj1406Qo9IDODc_nk5Ib
- 排除/home/users/a/admin
- 排除/home/users/a/anonymous
- 排除/home/users/system
- 排除/home/users/geometrixx
- 排除/home/users/media
- 排除/home/users/projects
- 排除/home/users/mac
-
建置套件。
-
下載套件。
-
在您的電腦上解壓縮套件 zip 檔:
jar -xvf users.zip META-INF/vault/filter.xml
-
以文字編輯器開啟檔案
META-INF/vault/filter.xml
。 -
將模式= merge 新增至
<filter ...>
標籤,例如:code language-none <?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
的 群組 套件。 -
對群組套件重複步驟1至10。
-
(僅限升級)如果執行到較新AEM版本的移轉,則安裝新的本機AEM執行個體 (舊版本 (搭配
nosamplecontent
),然後安裝使用者套件,然後安裝群組套件。 然後,在該執行個體上執行就地升級到新版本。 這會將使用者轉換為新的 Oak 表示方式。就地升級後,再次重新封裝使用者以將它們移植到您的預期升級執行個體。對使用者群組執行相同的操作。 -
在新系統上安裝使用者套件。
-
在新系統上安裝群組套件。
-
如果您要從較舊的AEM版本移轉至6.3,請移至
/useradmin
UI並將使用者復寫接收者新增至 管理員 群組。
步驟 3.遷移 ACL
請注意,執行這些命令的電腦必須是Mac作業系統、Linux或Windows (使用Cygwin),且已安裝curl、python和Java SDK。
-
前往
http://src-aem-host:port/crx/packmgr/index.jsp,
並以 管理員 身分登入。 -
建立名為 ACL-migration 的封裝。
-
按一下 編輯 按鈕。
-
選取 進階 標籤,並將 AC處理模式 設定為 合併。
-
儲存。
-
建置套件並下載。
-
在檔案系統上,對封裝執行此命令以解壓縮
META-INF/vault/filter.xml
檔案:jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
-
在同一目錄中,執行此命令以從來源執行個體下載
/content
下ACL路徑的json檔案(設定使用者名稱、密碼和正確的主機):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程式碼:\code language-none 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>")
-
從建立
data.json
的相同資料夾中執行Python指令碼,並將輸出儲存到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