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

本文提供在AEM中將具有ACL許可權的使用者和群組從一台伺服器遷移到另一台伺服器或從一個AEM執行個體遷移到另一個執行個體的各種方法。

說明 description

環境

Adobe Experience Manager 6.5 (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– 來源系統上的匿名使用者

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

如果不是透過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的封裝設定: (注意:如果產品​ 從AEM新增/移除 ​群組/使用者,則清單可能需要變更)

    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

(注意:建立的套件應僅包含所需的ACL)請注意,執行這些命令的電腦必須是Mac OS、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