遷移使用者、群組以及 AEM 執行個體之間的 ACL

說明

環境
Adobe Experience Manager

問題
如何將AEM中具有ACL權限的使用者和群組從一部伺服器移轉至另一部伺服器,或從一部AEM例項移轉至另一部。

解析度

解決方法

步驟 1:找到管理員和匿名使用者

  1. 前往 CRXDE 精簡版應用程式 /crx/de/index.jsp 並以管理員使用者身分登入 (在來源系統上)。

  2. 前往 工具 = 查詢.

  3. 在底部 查詢 框中,輸入此查詢以查找管理員用戶: /jcr:root/home/users//element(*,rep:User)@rep:principalName="admin".

  4. 按一下 執行 並將結果中管理員使用者節點的路徑複製到文字檔。

  5. 對匿名用戶重複步驟3: /jcr:root/home/users//element(*,rep:User)@rep:principalName="anonymous".

  6. 按一下 執行 並將結果中匿名用戶節點的路徑複製到一個文本檔案(因此,現在您有兩個路徑,一個用於「admin」,另一個用於「anonymous」)。

    例如:

    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv– 來源系統上的管理員使用者

    /home/users/K/Kj1406Qo9IDODc_nk5Ib– 來源系統上的匿名使用者

步驟2A:移轉使用者和群組(使用Crx2Oak 或Oak-upgrade)

可以使用 crx2oak 或者 oak-upgrade 工具將使用者和群組在 AEM 執行個體之間遷移。

  1. 下載符合您所使用Oak版本的crx2oak或oak-upgrade jar:

    1. Oak-upgrade:https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
    2. Crx2Oak:Maven 存放庫
  2. 將 jar 檔案上傳至 AEM 伺服器。

  3. 停止 AEM (來源和目標執行個體).

  4. 在下面的命令中替換 jar 檔案的名稱。

  5. 取代 /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv,/home/users/K/Kj1406Qo9IDODc_nk5Ib 在 --exclude-paths 下面命令的part參數,包含來自源系統的管理員和匿名用戶的路徑。

  6. 在線上修改路徑以和您的執行個體相符 (如有需要,在路徑前新增 segment-old:,請參閱此處https://jackrabbit.apache.org/oak/docs/migration.html):/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository

  7. 然後在伺服器的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 &
    
  8. 完成後,請前往步驟 3 以遷移 ACL。  如果您無法使用Crx2Oak進行移轉,請改為遵循下列套件移轉步驟。

步驟 2B:遷移使用者和群組 (使用套件)

如果使用者未透過LDAP/SAML驗證或Crx2Oak自動匯入(上述步驟2A),則您可以封裝使用者和群組。

在此案例中,您會在舊系統上建立兩個不同的套件(排除管理員和匿名現成使用者)。

請依照下列步驟操作:

  1. 從步驟1的結果複製匿名和管理員使用者節點的路徑(步驟1:查找管理員和匿名用戶)。

    例如: /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv — 建立套件的系統上的管理員使用者,或 /home/users/K/Kj1406Qo9IDODc_nk5Ib — 建立包的系統上的匿名用戶

  2. 前往 封裝管理員http://host:port/crx/packmgr/index.jsp,並以管理員身分登入。

  3. 建立套件 使用者.

  4. 將篩選器新增到 /home/users 的套件設定,並使用這些排除規則 (在 /home/users 篩選器上):

    1. 排除/home/users/。*/.tokens
    2. 排除/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
    3. 排除/home/users/K/Kj1406Qo9IDODc_nk5Ib
    4. 排除/home/users/a/admin
    5. 排除/home/users/a/anonymous
    6. 排除/home/users/system
    7. exclude /home/users/geometrixx
    8. 排除/home/users/media
    9. 排除/home/users/projects
    10. 排除/home/users/mac
  5. 建置套件。

  6. 下載套件。

  7. 在您的電腦上解壓縮套件 zip 檔:jar -xvf users.zip META-INF/vault/filter.xml

  8. 以文字編輯器開啟檔案 META-INF/vault/filter.xml

  9. 新增模式= 合併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
    
  10. 重新壓縮修改後的套件內容,使其包含變更。

    jar -uvf users.zip META-INF/vault/filter.xml

  11. 建立 群組 包含篩選規則的套件 /home/groups.

  12. 對群組套件重複步驟 11 至 14。

  13. (僅限升級) 如果執行到較新 AEM 版本的遷移,則安裝新的本機 AEM 執行個體 (屬於舊版本) (包含 nosamplecontent),並安裝使用者套件,然後安裝群組套件。然後在該執行個體上執行到新版本的就地升級。 這會將使用者轉換為新的 Oak 表示方式。就地升級後,再次重新封裝使用者以將它們移植到您的預期升級執行個體。對使用者群組執行相同的操作。

  14. 在新系統上安裝使用者套件。

  15. 在新系統上安裝群組套件。

  16. 如果您要從舊版AEM移轉至6.3,請前往 /useradmin UI,並將使用者復寫接收器新增至 管理員 群組。

步驟 3.遷移 ACL

如果您可以將工具 (ACS Commons) 安裝到 AEM,則請按照以下步驟操作:

  1. 下載並安裝 ACS Commons。

  2. 按照此處提供的步驟建立 ACL 套件。

  3. 前往 http://aem-host:port/crx/packmgr/index.jsp 並以管理員身分登入。

  4. 按一下 ACL 套件。

  5. 按一下編輯。

  6. 選取進階索引標籤 (請參見下面的螢幕擷圖)。

  7. 在 AC 處理下拉式選單中選取合併,以避免移除目標系統上的現有 ACL。

    在不同版本的 AEM 之間遷移 ACL 時,這一點尤其重要 (因為它可以避免移除現成可用的 ACL)。

如果您​無法​將工具 (ACS Commons) 安裝到 AEM,則請按照以下步驟操作。請注意,您執行這些命令的電腦必須是Mac OS、Linux或Windows(使用Cygwin),且已安裝curl、python和Java SDK。

  1. 前往 http://src-aem-host:port/crx/packmgr/index.jsp 並以管理員身分登入。

  2. 建立名為 ACL遷移.

  3. 按一下 編輯 按鈕。

  4. 選取 進階 標籤和設定 交流處理模式 to 合併.

  5. 儲存。

  6. 建置套件並下載。

  7. 在檔案系統上,對包運行此命令以提取 META-INF/vault/filter.xml 檔案:

    jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  8. 在同一目錄中,運行此命令以下載下面的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
    
  9. 建立檔案 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")
    
  10. 從同一資料夾運行python指令碼, data.json 已建立,並將輸出儲存至 META-INF/vault/filter.xml (更換現有的 filter.xml):

    python generate-packge-filter.py  META-INF/vault/filter.xml
    
  11. 使用此命令以更新 zip 檔案中的 filter.xml

    jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
    
  12. 將zip檔案上傳至來源執行個體套件管理器: http://src-aem-host:port/crx/packmgr/index.jsp

  13. 按一下建置或者重新建置以建置套建。

  14. 從來源 AEM 伺服器下載套件。

  15. 將套件上傳至目的地AEM伺服器的套件管理器: http://dst-aem-host:port/crx/packmgr/index.jsp

  16. 按一下安裝以進行安裝。

  17. 對變更路徑 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

本頁內容