Migration d’utilisateurs, de groupes et de listes de contrôle d’accès entre instances AEM
Cet article fournit diverses méthodes pour 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 6.5 (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 : Recherche des utilisateurs administrateurs et 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 2 : migration 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 filtre/home/users
) : (Remarque : la liste peut nécessiter un changement si le produit add/remove groups/users de l’AEM).- 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 version d’AEM plus récente, installez une nouvelle instance d’AEM locale de l’ancienne version (avec
nosamplecontent
), puis installez à la fois 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. Migration des listes de contrôle d’accès
(REMARQUE : le package créé doit uniquement inclure les ACL nécessaires) 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