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

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

說明 description

環境

Adobe Experience Manager

問題

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

解析度 resolution

步驟 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. 按一下 執行 並將結果中的匿名使用者節點的路徑複製到一個文字檔案中(所以現在您有兩個路徑,一個用於「管理員」,一個用於「匿名」)。

    例如:

    /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 以下命令的部分引數,以及來自您來源系統的管理員和匿名使用者的路徑。

  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/usersfilter):

    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. 新增模式= 合併<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. 對群組套件重複步驟 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作業系統、Linux或Windows (使用Cygwin),且已安裝curl、python和Java SDK。

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

  2. 建立名為的套件 ACL移轉.

  3. 按一下 編輯 按鈕。

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

  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程式碼:\

    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. 執行來自相同資料夾的Python指令碼,其中 data.json 建立並儲存輸出至 META-INF/vault/filter.xml (取代現有的內容 filter.xml):

    python generate-packge-filter.py > META-INF/vault/filter.xml

  11. 使用此命令來更新 filter.xml 在zip檔案中:

    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