Ambiente
Adobe Experience Manager
Problema
Como migrar usuários e grupos com permissões de ACL no AEM de um servidor para outro ou de uma instância de AEM para outra.
Solução
Etapa 1: encontre os usuários administradores e anônimos
Vá para o aplicativo CRXDE lite /crx/de/index.jsp
e faça logon como usuário administrador (no sistema de origem).
Ir para Ferramentas =
Consulta.
Na parte inferior Query digite esta consulta para localizar o usuário administrador: /jcr:root/home/users//element(*,rep:User)@rep:principalName="admin"
.
Clique em Executar e copie o caminho do nó do usuário administrador nos resultados para um arquivo de texto.
Repita a etapa 3 com uma consulta para usuário anônimo: /jcr:root/home/users//element(*,rep:User)@rep:principalName="anonymous"
.
Clique em Executar e copie o caminho do nó anonymous user nos resultados para um arquivo de texto (então agora você tem dois caminhos, um para "admin" e outro para "anonymous").
Por exemplo:
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- usuário administrador no sistema de origem
/home/users/K/Kj1406Qo9IDODc_nk5Ib
- usuário anônimo no sistema de origem
Etapa 2A: Migrar usuários e grupos (usando o Crx2Oak ou Oak-upgrade)
Usuários e grupos podem ser migrados entre instâncias do AEM usando as ferramentas crx2oak ou oak-upgrade.
Baixe o jar crx2oak ou oak-upgrade correspondente à versão do Oak que você está usando:
Fazer upload do arquivo jar para o servidor do AEM.
Parar o AEM (instâncias de origem e de destino).
Substitua o nome do arquivo jar no comando abaixo.
Substituir /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
,/home/users/K/Kj1406Qo9IDODc_nk5Ib
no --exclude-paths
parâmetro part do comando abaixo com os caminhos dos usuários admin e anonymous do seu sistema de origem.
Modifique os caminhos na linha para corresponderem à sua instância (adicione segment-old:
antes do caminho, se necessário, consulte https://jackrabbit.apache.org/oak/docs/migration.html): /opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository
Em seguida, execute o comando no shell do 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 &
Depois de concluído, vá para a etapa 3 para migrar as ACLs. Se você não conseguir migrar usando o Crx2Oak, siga as etapas de migração de pacote abaixo.
Etapa 2B: migrar usuários e grupos (usando pacotes)
Se os usuários não forem importados automaticamente por meio da autenticação LDAP/SAML ou do Crx2Oak (etapa 2A acima), você poderá empacotar usuários e grupos.
Nesse caso, você cria dois pacotes separados no sistema antigo (excluindo usuários administrador e anônimo prontos para uso).
Siga estas etapas:
Copie o caminho dos nós de usuário anônimos e administradores dos resultados na Etapa 1 (Etapa 1: Encontre os usuários admin e anônimos) acima.
Por exemplo: /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
- usuário administrador no sistema em que você está criando o pacote, ou /home/users/K/Kj1406Qo9IDODc_nk5Ib
- usuário anônimo no sistema em que você está criando o pacote
Vá para o Gerenciador de pacotes, http://host:port/crx/packmgr/index.jsp e faça logon como administrador.
Criar pacote usuários.
Adicione um filtro à configuração de pacote para /home/users
com essas regras de exclusão (no filtro /home/users
):
Crie o pacote.
Baixe o pacote.
Descompacte o arquivo zip do pacote no seu computador: jar -xvf users.zip META-INF/vault/filter.xml
Abra o arquivo META-INF/vault/filter.xml
em um editor de texto.
Adicionar modo = mesclar para filter ...
, por exemplo:
?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
Volte a compactar o conteúdo do pacote modificado para incluir a mudança
jar -uvf users.zip META-INF/vault/filter.xml
Crie um grupos pacote que contém uma regra de filtro /home/groups
.
Repita as etapas 11 a 14 para o pacote de grupos.
(Somente atualização) Se estiver executando a migração para a versão mais recente do AEM, instale uma nova instância do AEM local da versão antiga(com nosamplecontent), instale o pacote de usuários e depois o pacote de grupos. Em seguida, execute uma atualização no local para a nova versão nessa instância. Isso converte os usuários para a nova representação do Oak. Após a atualização no local, reempacote os usuários novamente para exportá-los para a instância atualizada pretendida. Faça o mesmo para os grupos de usuários.
Instale o pacote de usuários no novo sistema.
Instale o pacote de grupos no novo sistema.
Se você estiver migrando de uma versão mais antiga do AEM para a 6.3, acesse o /useradmin
IU e adicionar o receptor de replicação do usuário ao administradores grupo.
Etapa 3. Migrar ACLs
Se você conseguir instalar ferramentas (ACS Commons) no AEM, siga estas etapas:
Baixe e instale o ACS Commons.
Siga as etapas fornecidas aqui para criar um pacote de ACL.
Ir para http://aem-host:port/crx/packmgr/index.jsp e faça logon como administrador.
Clique no pacote de ACL.
Clique em Editar.
Clique na guia Avançado (veja a captura de tela abaixo).
No menu suspenso Manuseio de AC, selecione Mesclar para evitar a remoção de ACLs existentes no sistema de destino.
Isso é especialmente importante ao migrar ACLs entre diferentes versões do AEM (já que evita a remoção de ACLs prontas para uso).
Se você não conseguir instalar ferramentas (ACS Commons) no AEM, siga estas etapas.
Observe que a máquina na qual você executa esses comandos deve ser Mac OS, Linux ou Windows (usando Cygwin) com curl, python e Java SDK instalados.
Ir para http://src-aem-host:port/crx/packmgr/index.jsp e faça logon como administrador.
Crie um pacote chamado ACL-migration.
Clique no botão Editar botão.
Selecione o Avançado guia e conjunto Modo de Manuseio de AC para Mesclar.
Salvar.
Crie o pacote e baixe-o.
No sistema de arquivos, execute este comando no pacote para extrair o META-INF/vault/filter.xml
arquivo:
jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
No mesmo diretório, execute este comando para baixar um arquivo json dos caminhos ACL em /content
na instância de origem (defina o nome de usuário, a senha e o host correto):
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
Criar um arquivo generate-package-filter.py
e cole o código python abaixo dele:
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")
Execute o script python na mesma pasta em que data.json
foi criado e salve a saída em META-INF/vault/filter.xml
(substituindo o conteúdo existente de filter.xml
):
python generate-packge-filter.py META-INF/vault/filter.xml
Use este comando para atualizar o filter.xml
no arquivo zip:
jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
Faça upload do arquivo zip para o gerenciador de pacotes da instância de origem: http://src-aem-host:port/crx/packmgr/index.jsp
Clique em Criar ou Recriar para criar o pacote.
Baixe o pacote do servidor do AEM de origem.
Faça upload do pacote para o gerenciador de pacotes do servidor de AEM de destino: http://dst-aem-host:port/crx/packmgr/index.jsp
Clique em Instalar para instalá-lo.
Repita as etapas 8 a 16 para qualquer outro caminho que altere o comando curl de caminho. Por exemplo, isso obteria as ACLs em /etc
em vez 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