Migration d’utilisateurs, de groupes et de listes de contrôle d’accès entre instances AEM

Cet article propose différentes manières de migrer des utilisateurs et des groupes avec des autorisations ACL dans AEM d’un serveur à un autre ou d’une instance AEM à une autre.

Description description

Environnement

Adobe Experience Manager (AEM)

Problème/Symptômes

Migration des utilisateurs et des groupes avec des autorisations ACL dans AEM d’un serveur vers un autre ou d’une instance AEM vers une autre.

Résolution resolution

Étape 1 : Rechercher les administrateurs et les utilisateurs anonymes

  1. Accédez à l’application CRXDE lite /crx/de/index.jsp et connectez-vous en tant qu’ administrateur (sur le système source).

  2. Accédez à Outils => Requête.

  3. Dans la zone Query inférieure, saisissez cette requête pour trouver l’utilisateur administrateur : /jcr:root/home/users//element(*,rep:User)[ @rep:principalName="admin"].

  4. Cliquez sur Exécuter, puis copiez le chemin d’accès du noeud utilisateur administrateur dans les résultats dans un fichier texte.

  5. Répétez l’étape 3 avec une requête pour l’utilisateur anonyme : /jcr:root/home/users//element(*,rep:User)[ @rep:principalName="anonymous"].

  6. Cliquez sur Exécuter, puis copiez le chemin d’accès du noeud utilisateur anonyme dans les résultats dans un fichier texte (vous disposez donc de deux chemins d’accès, l’un pour "admin" et l’autre pour "anonymous").
    Par exemple :

    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv - utilisateur administrateur sur le système source
    /home/users/K/Kj1406Qo9IDODc_nk5Ib - utilisateur anonyme sur le système source

Étape 2A : migration des utilisateurs et des groupes (à l’aide de Crx2Oak ou Oak-upgrade)

Les utilisateurs et les groupes peuvent être migrés entre les instances d’AEM à l’aide des outils crx2oak ou oak-upgrade.

  1. Téléchargez le fichier jar crx2oak ou oak-upgrade correspondant à la version Oak que vous utilisez :

    1. Oak-upgrade : https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
    2. Crx2Oak : Référentiel Maven
  2. Téléchargez le fichier jar sur le serveur AEM.

  3. Arrêtez AEM (instances source et de destination).

  4. Remplacez le nom du fichier jar dans la commande ci-dessous.

  5. Remplacez /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv,/home/users/K/Kj1406Qo9IDODc_nk5Ib dans le paramètre de partie --exclude-paths de la commande ci-dessous par les chemins d’accès des administrateurs et des utilisateurs anonymes de votre système source.

  6. Modifiez les chemins en ligne pour qu'ils correspondent à votre instance (ajoutez segment-old: avant le chemin si nécessaire, voir ici) :

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

  7. Exécutez ensuite la commande sur le shell du serveur :

    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. Une fois l’opération terminée, passez à l’étape 3 pour migrer les listes de contrôle d’accès.  Si vous ne pouvez pas migrer à l’aide de Crx2Oak, suivez plutôt les étapes de migration de package ci-dessous.

Étape 2B : Migrer des utilisateurs et des groupes (à l’aide de packages)

Si les utilisateurs n’ont pas été importés automatiquement via l’authentification LDAP/SAML ou Crx2Oak (étape 2A ci-dessus), vous pouvez regrouper les utilisateurs et les groupes.

Dans ce cas, vous créez deux packages distincts sur l’ancien système (à l’exclusion des administrateurs et des utilisateurs anonymes prêts à l’emploi).

Procédez de la façon suivante :

  1. Copiez le chemin d’accès des noeuds utilisateur anonymes et admin à partir des résultats de l’étape 1 (Étape 1 : Recherche des utilisateurs admin et anonyme) ci-dessus.

    Par exemple :

    /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv - utilisateur administrateur sur le système sur lequel vous créez le module, ou

    /home/users/K/Kj1406Qo9IDODc_nk5Ib - utilisateur anonyme sur le système sur lequel vous créez le package

  2. Accédez au gestionnaire de modules, http://host:port/crx/packmgr/index.jsp et connectez-vous en tant que administrateur.

  3. Créez le package users.

  4. Ajoutez un filtre à la configuration du package pour /home/users avec ces règles d'exclusion (sur le /home/usersfiltre) :

    1. exclude /home/users/.*/.tokens
    2. exclude /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
    3. exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
    4. exclude /home/users/a/admin
    5. exclude /home/users/a/anonymous
    6. exclude /home/users/system
    7. exclude /home/users/geometrixx
    8. exclude /home/users/media
    9. exclude /home/users/projects
    10. exclude /home/users/mac
  5. Créez le package.

  6. Téléchargez le package.

  7. Décompressez le fichier zip du package sur votre ordinateur : jar -xvf users.zip META-INF/vault/filter.xml.

  8. Ouvrez le fichier META-INF/vault/filter.xml dans un éditeur de texte.

  9. Ajoutez le mode = merge à la balise <filter ...>, par exemple :

    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. Recompressez le contenu du package modifié pour qu’il inclue la modification.

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

  11. Créez un package groups contenant une règle de filtre /home/groups.

  12. Répétez les étapes 1 à 10 pour le package de groupes.

  13. (Mise à niveau uniquement) Si vous effectuez une migration vers une nouvelle version d’AEM, installez une nouvelle instance locale d’AEM de l’ancienne version (avec nosamplecontent), puis installez le module Utilisateurs et le module Groupes. Effectuez ensuite une mise à niveau statique vers la nouvelle version sur cette instance. Les utilisateurs sont ainsi convertis en nouvelle représentation Oak. Après la mise à niveau sur place, effectuez un nouveau package des utilisateurs pour les transférer vers l’instance mise à niveau prévue. Faites de même pour les groupes d’utilisateurs.

  14. Installez le package d’utilisateurs sur le nouveau système.

  15. Installez le package de groupes sur le nouveau système.

  16. Si vous migrez d’une ancienne version d’AEM vers la version 6.3, accédez à l’interface utilisateur /useradmin et ajoutez le récepteur de réplication de l’utilisateur au groupe administrateurs .

Étape 3. Migrer les listes de contrôle d’accès

Notez que la machine sur laquelle vous exécutez ces commandes doit être Mac OS, Linux ou Windows (à l’aide de Cygwin) avec curl, python et Java SDK installés.

  1. Accédez à http://src-aem-host:port/crx/packmgr/index.jsp, et connectez-vous en tant que admin.

  2. Créez un package nommé ACL-migration.

  3. Cliquez sur le bouton Modifier .

  4. Sélectionnez l’onglet Avancé et définissez Mode de gestion AC sur Fusionner.

  5. Enregistrez.

  6. Créez le package et téléchargez-le.

  7. Sur le système de fichiers, exécutez la commande suivante sur le package pour extraire le fichier META-INF/vault/filter.xml :

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

  8. Dans le même répertoire, exécutez cette commande pour télécharger un fichier json des chemins d’accès ACL sous /content à partir de l’instance source (définissez le nom d’utilisateur, le mot de passe et l’hôte correct) :

    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. Créez un fichier generate-package-filter.py et collez le code python ci-dessous à l’intérieur :\

    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. Exécutez le script python à partir du dossier dans lequel data.json a été créé et enregistrez la sortie sur META-INF/vault/filter.xml (en remplaçant le contenu existant de filter.xml) :

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

  11. Utilisez cette commande pour mettre à jour le code filter.xml dans le fichier zip :

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

  12. Téléchargez le fichier zip dans le gestionnaire de packages de l’instance source : http://src-aem-host:port/crx/packmgr/index.jsp

  13. Cliquez sur Créer ou Recréer pour créer le package.

  14. Téléchargez le package à partir du serveur AEM source.

  15. Téléchargez le package dans le gestionnaire de packages AEM serveur de destination : http://dst-aem-host:port/crx/packmgr/index.jsp

  16. Cliquez sur Installer pour l’installer.

  17. Répétez les étapes 8 à 16 pour tous les autres chemins d’accès en modifiant la commande curl du chemin d’accès. Par exemple, les listes de contrôle d’accès seraient alors sous /etc au lieu de /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