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

本文提供在AEM中將ACL許可權的使用者和群組從一台伺服器移轉至另一台伺服器或從一個AEM執行個體移轉至另一個執行個體的不同方式。

說明 description

環境

Adobe Experience Manager (AEM)

問題/症狀

將AEM中具有ACL許可權的使用者和群組從一台伺服器遷移到另一台伺服器或從一個AEM執行個體遷移到另一台伺服器。

解析度 resolution

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

  1. 前往CRXDE Lite應用程式/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. 按一下 執行,並將結果中匿名使用者節點的路徑複製到文字檔案中(所以現在您有兩個路徑,一個用於「管理員」,一個用於「匿名」)。
    例如:

    /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. 將下列命令的--exclude-paths部分引數中的/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv/home/users/K/Kj1406Qo9IDODc_nk5Ib取代為您來源系統的管理員和匿名使用者的路徑。

  6. 線上上修改路徑以符合您的執行個體(如有需要,在路徑前新增segment-old:,請參閱這裡):

    /opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository

  7. 然後在伺服器的殼層上執行命令:

    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 &
    
  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. 排除/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. 將模式= 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>
    
  10. 重新壓縮修改後的套件內容,使其包含變更。

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

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

  12. 對群組套件重複步驟1至10。

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

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

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

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

步驟 3.遷移 ACL

請注意,執行這些命令的電腦必須是Mac作業系統、Linux或Windows (使用Cygwin),且已安裝curl、python和Java SDK。

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

  2. 建立名為​ ACL-migration ​的封裝。

  3. 按一下 編輯 按鈕。

  4. 選取 進階 標籤,並將 AC處理模式 設定為​ 合併

  5. 儲存。

  6. 建置套件並下載。

  7. 在檔案系統上,對封裝執行此命令以解壓縮META-INF/vault/filter.xml檔案:

    jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml

  8. 在同一目錄中,執行此命令以從來源執行個體下載/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

  9. 建立檔案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>")
    
  10. 從建立data.json的相同資料夾中執行Python指令碼,並將輸出儲存到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

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f