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
-
Accédez à l’application CRXDE lite
/crx/de/index.jsp
et connectez-vous en tant qu’ administrateur (sur le système source). -
Accédez à Outils
=>
Requête. -
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"]
. -
Cliquez sur Exécuter, puis copiez le chemin d’accès du noeud utilisateur administrateur dans les résultats dans un fichier texte.
-
Répétez l’étape 3 avec une requête pour l’utilisateur anonyme :
/jcr:root/home/users//element(*,rep:User)[ @rep:principalName="anonymous"]
. -
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.
-
Téléchargez le fichier jar crx2oak ou oak-upgrade correspondant à la version Oak que vous utilisez :
- Oak-upgrade : https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-upgrade
- Crx2Oak : Référentiel Maven
-
Téléchargez le fichier jar sur le serveur AEM.
-
Arrêtez AEM (instances source et de destination).
-
Remplacez le nom du fichier jar dans la commande ci-dessous.
-
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. -
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
-
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 &
-
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 :
-
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 -
Accédez au gestionnaire de modules,
http://host:port/crx/packmgr/index.jsp
et connectez-vous en tant que administrateur. -
Créez le package users.
-
Ajoutez un filtre à la configuration du package pour
/home/users
avec ces règles d'exclusion (sur le/home/users
filtre) :- exclude /home/users/.*/.tokens
- exclude /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- exclude /home/users/K/Kj1406Qo9IDODc_nk5Ib
- exclude /home/users/a/admin
- exclude /home/users/a/anonymous
- exclude /home/users/system
- exclude /home/users/geometrixx
- exclude /home/users/media
- exclude /home/users/projects
- exclude /home/users/mac
-
Créez le package.
-
Téléchargez le package.
-
Décompressez le fichier zip du package sur votre ordinateur :
jar -xvf users.zip META-INF/vault/filter.xml
. -
Ouvrez le fichier
META-INF/vault/filter.xml
dans un éditeur de texte. -
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>
-
Recompressez le contenu du package modifié pour qu’il inclue la modification.
jar -uvf users.zip META-INF/vault/filter.xml
-
Créez un package groups contenant une règle de filtre
/home/groups
. -
Répétez les étapes 1 à 10 pour le package de groupes.
-
(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. -
Installez le package d’utilisateurs sur le nouveau système.
-
Installez le package de groupes sur le nouveau système.
-
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.
-
Accédez à
http://src-aem-host:port/crx/packmgr/index.jsp,
et connectez-vous en tant que admin. -
Créez un package nommé ACL-migration.
-
Cliquez sur le bouton Modifier .
-
Sélectionnez l’onglet Avancé et définissez Mode de gestion AC sur Fusionner.
-
Enregistrez.
-
Créez le package et téléchargez-le.
-
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
-
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
-
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>")
-
Exécutez le script python à partir du dossier dans lequel
data.json
a été créé et enregistrez la sortie surMETA-INF/vault/filter.xml
(en remplaçant le contenu existant defilter.xml
) :python generate-packge-filter.py > META-INF/vault/filter.xml
-
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
-
Téléchargez le fichier zip dans le gestionnaire de packages de l’instance source :
http://src-aem-host:port/crx/packmgr/index.jsp
-
Cliquez sur Créer ou Recréer pour créer le package.
-
Téléchargez le package à partir du serveur AEM source.
-
Téléchargez le package dans le gestionnaire de packages AEM serveur de destination :
http://dst-aem-host:port/crx/packmgr/index.jsp
-
Cliquez sur Installer pour l’installer.
-
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