Entorno
Adobe Experience Manager
Problema
Cómo migrar usuarios y grupos con permisos ACL en AEM de un servidor a otro o de una instancia de AEM a otra.
Solución
Paso 1: Encuentre al administrador y a los usuarios anónimos
Vaya a la aplicación CRXDE lite /crx/de/index.jsp
y entre como usuario administrador (en el sistema fuente).
Vaya a Herramientas =
Consulta.
En la parte inferior Consulta introduzca esta consulta para encontrar el usuario administrador: /jcr:root/home/users//element(*,rep:User)@rep:principalName="admin"
.
Haga clic en Ejecutar y copie la ruta del nodo de usuario administrador en los resultados a un archivo de texto.
Repita el tercer paso con una consulta para el usuario anónimo: /jcr:root/home/users//element(*,rep:User)@rep:principalName="anonymous"
.
Haga clic en Ejecutar y copie la ruta del nodo de usuario anónimo en los resultados en un archivo de texto (por lo que ahora tiene dos rutas, una para "admin" y otra para "anonymous").
Por ejemplo:
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- usuario administrador en el sistema de origen
/home/users/K/Kj1406Qo9IDODc_nk5Ib
- usuario anónimo en el sistema de origen
Paso 2A: Migración de usuarios y grupos (usando Crx2Oak) o Oak-upgrade)
Los usuarios y grupos pueden migrar entre instancias de AEM usando las herramientas crx2oak o oak-upgrade.
Descargue el jar crx2oak o oak-upgrade que coincida con la versión Oak que está utilizando:
Suba el archivo jar al servidor de AEM.
Detenga AEM (instancias de origen y destino).
Sustituya el nombre del archivo jar en el comando siguiente.
Reemplazar /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
,/home/users/K/Kj1406Qo9IDODc_nk5Ib
en el --exclude-paths
parte del parámetro del comando siguiente con las rutas del administrador y los usuarios anónimos de su sistema de origen.
Modifique las rutas en línea para que coincidan con su instancia (añada segment-old:
antes de la ruta si es necesario, consulte aquí https://jackrabbit.apache.org/oak/docs/migration.html): /opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository
A continuación, ejecute el comando en el shell del servidor:
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 &
Una vez finalizado, vaya al tercer paso para migrar las ACL. Si no puede migrar usando Crx2Oak, siga los pasos de migración de paquetes que se indican a continuación.
Paso 2B: Migrar usuarios y grupos (usando paquetes)
Si los usuarios no se importaron automáticamente mediante la autenticación LDAP/SAML o Crx2Oak (paso 2A anterior), puede empaquetar usuarios y grupos.
En este caso se crean dos paquetes separados en el sistema antiguo (excluyendo al administrador y a los usuarios anónimos de la caja).
Siga estos pasos:
Copie la ruta de los nodos de usuario anónimo y administrador de los resultados del paso 1 (Paso 1: Buscar usuarios administradores y anónimos).
Por ejemplo: /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- usuario administrador en el sistema donde está creando el paquete, o /home/users/K/Kj1406Qo9IDODc_nk5Ib
- usuario anónimo en el sistema donde está creando el paquete
Vaya a la Administrador de paquetes, http://host:port/crx/packmgr/index.jsp e inicie sesión como administrador.
Crear paquete usuarios.
Añada un filtro a la configuración del paquete para /home/users
con estas reglas de exclusión (en el filtro /home/users
):
Genere el paquete.
Descargue el paquete.
Descomprima el archivo zip del paquete en el ordenador: jar -xvf users.zip META-INF/vault/filter.xml
Abra el archivo META-INF/vault/filter.xml
en un editor de texto.
Agregar modo = combinar a filter ...
, por ejemplo:
?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
Vuelva a comprimir el contenido del paquete modificado para que incluya el cambio.
jar -uvf users.zip META-INF/vault/filter.xml
Cree un grupos paquete que contiene una regla de filtro /home/groups
.
Repita los pasos 11-14 para el paquete de grupos.
(Solo actualización) Si realiza la migración a una versión más reciente de AEM, instale una instancia local fresca de AEM de la versión antigua (con nosamplecontent), e instale el paquete de usuarios, y luego el de grupos allí. A continuación, realice una actualización in situ a la nueva versión en esa instancia. Esto convierte a los usuarios en la nueva representación de Oak Tras la actualización in situ, vuelva a empaquetar a los usuarios para portarlos a su instancia actualizada prevista. Haga lo mismo para los grupos de usuarios.
Instale el paquete de usuarios en el nuevo sistema.
Instale el paquete de grupos en el nuevo sistema.
Si va a migrar de una versión de AEM anterior a la 6.3, vaya a la /useradmin
Interfaz de usuario y agregar el receptor de replicación de usuario al administradores grupo.
Paso 3. Migrar ACL
Si puede instalar herramientas (ACS Commons) en AEM, siga estos pasos:
Descargue e instale ACS Commons.
Siga los pasos proporcionados aquí para crear un paquete ACL.
Vaya a http://aem-host:port/crx/packmgr/index.jsp e inicie sesión como administrador.
Haga clic en el paquete ACL.
Haga clic en Editar.
Seleccione la pestaña Avanzado (véase la captura de pantalla siguiente).
En el menú desplegable de AC Handling, seleccione Fusionar para evitar eliminar las ACL existentes en el sistema de destino.
Esto es especialmente importante a la hora de migrar ACL entre diferentes versiones de AEM (ya que evita eliminar las ACL de fábrica).
Si no puede instalar herramientas (ACS Commons) en AEM, siga estos pasos.
Tenga en cuenta que el equipo en el que ejecute estos comandos debe ser Mac OS, Linux o Windows (con Cygwin) con curl, python y Java SDK instalados.
Vaya a http://src-aem-host:port/crx/packmgr/index.jsp e inicie sesión como administrador.
Crear un paquete con el nombre Migración de ACL.
Haga clic en el Editar botón.
Seleccione el Avanzadas y establezca Modo de manejo de CA a Combinar.
Guardar.
Genere el paquete y descárguelo.
En el sistema de archivos, ejecute este comando en el paquete para extraer el META-INF/vault/filter.xml
archivo:
jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
En el mismo directorio, ejecute este comando para descargar un archivo json de las rutas ACL en /content
desde la instancia de origen (establezca el nombre de usuario, la contraseña y el host correcto):
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
Crear un archivo generate-package-filter.py
y pegue el código python debajo de él:
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")
Ejecute el script python desde la misma carpeta donde data.json
se creó y guardar la salida en META-INF/vault/filter.xml
(sustituyendo el contenido existente de filter.xml
):
python generate-packge-filter.py META-INF/vault/filter.xml
Use este comando para actualizar el filter.xml
dentro del archivo zip:
jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
Cargue el archivo zip al administrador de paquetes de la instancia de origen: http://src-aem-host:port/crx/packmgr/index.jsp
Haga clic en Construir o Reconstruir para construir el paquete.
Descargue el paquete del servidor AEM de origen.
Cargue el paquete en el gestor de paquetes del servidor de AEM de destino: http://dst-aem-host:port/crx/packmgr/index.jsp
Haga clic en Instalar para instalarlo.
Repita los pasos 8-16 para cualquier otra ruta cambiando el comando curl de la ruta. Por ejemplo, esto pondría las ACL bajo /etc
en lugar 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