Lista de alguns dos erros comuns ao executar o UST e dicas para resolvê-los
FileNotFoundError: [Errno 2]
Exemplo de saída de erro do console:
FileNotFoundError: [Errno 2] Este arquivo ou diretório não existe: 'C:\\Users\\USER\\.pex\\install\\pycryptodome [...]'
Pode aparecer no Windows devido a caminhos com mais de 256 caracteres.
Dica: Crie uma variável de ambiente chamada PEX_ROOT com o valor C:\pex (se o script for executado a partir do C: ou alterar a letra para corresponder). Às vezes, é necessário reiniciar o sistema para que ele entre em vigor.
não é possível abrir o arquivo 'user-sync.pex': [Errno 2]
Exemplo de saída de erro:
python: não é possível abrir o arquivo 'user-sync.pex': [Errno 2] Não existe esse arquivo ou diretório
Dica: Certifique-se de executar a linha de comando python de dentro da pasta onde o usuário-sync.pex está localizado.
Exemplo de saída de erro do log:
2018-01-01 11:49:42 28102 AVISO umapi - Tempo limite da UMAPI... serviço indisponível (código 429 na tentativa 1)
2018-01-01 11:49:42 28102 AVISO umapi - Próxima tentativa em 42 segundos...
Dica: Se o tempo limite for inferior a 30 minutos, essas mensagens de aviso são recebidas quando a cota de chamadas de API a serem feitas em um minuto foi atingida. O UST vem com um mecanismo de retirada exponencial para repetir a chamada, aumentando o tempo entre as novas tentativas. O script é interrompido após três tentativas fracassadas.
A recomendação aqui é deixar o script executar até o fim.
Se o tempo limite for superior a 1000 segundos, isso seria uma limitação relacionada à frequência de execução de cada instância da ferramenta de sincronização de usuários.Se for observado que uma instância está sendo executada com mais frequência, ela será limitada entre 30 e 75 minutos.Embora o tempo limite apenas coloque o UST em espera por um período de tempo (portanto, não é um erro crítico de interrupção), o UST saberá se recuperar e continuar a sincronização logo em seguida.
Como o script reconhece quando duas instâncias são iniciadas ao mesmo tempo, nenhuma nova instância pode ser acionada até que a instância inicial tenha terminado de ser executada. Nesse caso, uma mensagem de erro pode aparecer no log do UST referindo-se a 'um processo já está em andamento'.
Aqui estão algumas recomendações para melhor desempenho, em relação à frequência de execução:
- revise a frequência da tarefa agendada e certifique-se de que ela esteja configurada para repetir com pelo menos 2 horas de intervalo
- revise o horário de acionamento da tarefa agendada para que não comece no minuto :00 ou :30 (evite o pico de atividade de tráfego)
- se for necessário executar a ferramenta com mais frequência, reflita sobre a possibilidade de usar o UST com estratégia de notificação por push (delta de alterações) em vez de sincronização completa
- adapte o cronograma de tempo de execução do UST ao dia útil da sua organização, quando os usuários precisam ser provisionados (por exemplo, se a sua organização não precisar modificar o provisionamento de usuários à noite, não execute tarefas de sincronização durante esse período)
error.user.pertence_to_another_org
Exemplo de entrada do log:
2018-01-01 11:49:42 28102 ERROR umapi.action - Erro no requestID: action_1 (User: {'user': 'myuser@domain2.com', 'requestID':'action_1'}, Command: {'createFederatedID': {'email': 'myuser@domain2.com', 'country': 'US', 'option': 'ignoreIfAlreadyExists', 'firstname': 'fname', 'lastname': 'lname'}}): code: "error.user.belongs_to_another_org" message: "É ilegal convidar um usuário do SRC de autenticação de propriedade de outra organização"
Dica: o domínio usado para criar a conta pode não ser reivindicado/confiável nas suas organizações. Um sinalizador ou ponto verde deve ser exibido para os domínios ativos em Admin Console -> Configurações. Caso contrário, concluir o processo de reivindicação de domínio pode resolvê-lo.
Exemplo de entrada do log:
2018-01-01 12:34:23 13383 ERROR umapi.action - Erro no requestID: action_6 (User: {'user': ‘user@domain.com’, 'requestID': 'action_6'}, Command: {'createEnterpriseID': {'email': 'user@domain.com', 'option': 'updateIfAlreadyExists', 'firstname': 'test', 'lastname': 'user', 'country': ‘US’}}): code: "error.user.type_mismatch" message: "O tipo de usuário solicitado para o convite não corresponde ao tipo de domínio reivindicado"
Dica: faz-se uma tentativa de criar um tipo de conta com federatedID, mas o diretório é criado para uso corporativo ou vice-versa. Pesquise o atributo user_identity_type no arquivo user-sync-config.yml. Modifique o valor de acordo com o tipo de diretório exibido no Admin Console (Configurações > Identidade > Domínios > valor do tipo de Diretório para o domínio especificado).
Exemplo de saída de erro do console:
Falha ao executar o arquivo PEX, faltam dependências compatíveis para:
pyyaml
cryptography
cffi
umapi-client
pycryptodome
pyldap
psutil
user-sync
Dicas:
a) Verifique se a versão do Python instalada no sistema é a versão de 32 bits. Desinstale o sistema de 32 bits e instale a versão de 64 bits para corrigir o problema.
b) Verifique se a versão user-sync.pex baixada do GitHub corresponde à versão do Python e ao tipo de sistema operacional. Por exemplo, user-sync-v2.3-win64-py365.zip deve ser baixado para Windows de 64 bits e Python 3.
Usar a versão mais recente de Python nem sempre é uma boa ideia. Tentar combinar com a versão Python seria ótimo, o .pex foi criado em primeiro lugar. Siga o sufixo do arquivo .zip baixado para identificar qual versão do Python funcionaria. Para o exemplo acima (user-sync-v2.3-win64-py365.zip), é possível identificar o Python 3.6.5.
Erro ao descriptografar a chave privada
Exemplo de entrada no log:
2018-01-01 09:52:23 7920 DEBUG umapi - umapi: leitura de dados de chave privada do arquivo C:\path\to\private.key
2018-01-01 09:52:23 7920 CRITICAL main - umapi configuration.enterprise: Erro ao descriptografar a chave privada; ou a senha está incorreta, ou o formato da chave RSA é incompatível
Dicas:
a) se o problema não puder ser identificado rapidamente, é mais rápido reemitir o par de chaves
b) Não use o atributo umapi_private_key_data se você estiver executando o script no Windows. Em vez disso, criptografe a chave e armazene a senha no Gerenciador de credenciais.
c) Experimente uma chave privada RSA256/2048 bits, se você tiver usado um formato diferente para emitir o par de chaves
d) É possível que você configure o secure_priv_key_pass_key: umapi_private_key_passwords dentro do arquivo connector-umapi.yml. Nesse caso, certifique-se de que a entrada no Repositório de credenciais para este valor e os valores associados correspondem (veja abaixo).
Nenhum valor no armazenamento seguro para o usuário...
Exemplo de entrada no log:
2018-01-01 09:52:23 7920 CRITICAL main - umapi CRITICAL main - umapi configuration.enterprise: Nenhum valor no armazenamento seguro para o usuário "someUUIDvalue@AdobeOrg", chave "umapi_api_key"
Dicas:
a) A entrada do Repositório de credenciais de umapi_api_key pode estar ausente. Crie a entrada no Repositório de credenciais. A documentação de ajuda pode ser encontrada aqui.
b) Pode ser que o valor tenha sido adicionado ao Repositório de credenciais em outra conta de usuário. No entanto, para o usuário conectado no momento, essa entrada está ausente. Adicione-o, se necessário, ou mude as contas de usuário.
error.internal.exceptionflys / error.unauthorised
Exemplo de saída de erro:
umapi_client.error.RequestError: Erro na solicitação (401): {"lastPage":false,"result":"error.internal.exceptionflys","message":"Falha ao trocar token"}
OU
"umapi_client.error.RequestError: Erro na solicitação (401): {"lastPage":false,"result":"error.unauthorized","message":"Falha ao autenticar o token fornecido"}"
Dica: pode ser que, em Admin Console -> Configurações -> Configurações de autenticação, haja outra opção escolhida diferente da opção Mais fácil para os usuários (a senha nunca vence). Se a opção Mais seguro ou Completamente seguro estiver ativada, ela poderá expirar a senha da Conta técnica vinculada à integração.
Para corrigir o problema, uma nova integração deve ser criada. Certifique-se de que os metadados também sejam renovados no arquivo connector-umapi.yml.
Uma correção foi implantada para ela, mas pode afetar integrações criadas antes de outubro de 2018.
Falha ao estabelecer uma nova conexão [Erro 10061]
Exemplo de saída de erro:
ConnectionError: HTTPSConnectionPool(host='usermanagement.adobe.io', port=443): Número máximo de tentativas excedido com URL: /v2/usermanagement/users/someUUID@AdobeOrg/0?directOnly=True (Causado por NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x00000000027B9630>: Falha ao estabelecer uma nova conexão: [Errno 10061] Não foi possível estabelecer uma conexão porque a máquina de destino a recusou ativamente',))
Dica:
Está relacionado a que o UST não pode se conectar aos endpoints de API públicos. As configurações locais podem impedir o acesso devido a regras de firewall, proxy bloqueando o tráfego, configurações de conta para acesso à Internet e muito mais.
Em algumas situações, pode ajudar adicionar a variável de ambiente https_proxy com um valor como:
http://<endereçoProxy>:<porta> OU https://<endereçoProxy>:<porta>
Em outros casos, permitir o acesso a esses endpoints pode ajudar:
ims-na1.adobelogin.com:443
usermanagement.adobe.io:443
Isso só pode ser resolvido localmente, limpando o acesso aos endpoints acima da conta em execução.
Exemplo de entrada no log:
2017-07-07 09:01:37 4916 CRITICAL main - A conexão com a organização [...] no ponto de acesso https://usermanagement.adobe.io/v2/usermanagement falhou: não foi possível autorizar em relação a https://ims-na1.adobelogin.com/ims/exchange/jwt: Response Code: 400, Response Text: {"error_description":"Os metaescopos no JWT não são um subconjunto dos metaescopos na vinculação.","error":"invalid_scope"}
Dica: acesse a integração criada em https://developer.adobe.com/console/projects e verifique o menu esquerdo, onde as APIs estão listadas. Verifique se a API do User Management foi adicionada como um serviço (aparece na lista).
Não foram encontrados vínculos válidos para combinação de conta técnica e organização
Exemplo de entrada de registro (modo de depuração):
2017-07-07 09:01:37 4916 CRITICAL main - UMAPI a conexão com o ID da organização 'someUUIDvalue@AdobeOrg' falhou: não foi possível autorizar em relação a https://ims-na1.adobelogin.com/ims/exchange/jwt:
Response Code: 400, Response Text: {"error_description":"Nenhuma vinculação válida foi encontrada para a combinação de organização e conta técnica","error":"invalid_token"}
Dicas:
a) Isso pode ocorrer porque o valor de tech_acct no arquivo connector-umapi.yml corresponde a outro valor diferente do ID da conta técnica na integração em https://developer.adobe.com/console/projects. Verifique o valor do ID da conta técnica da integração atual e copie-o para este arquivo.
b) Também pode ocorrer porque o certificado público da integração expirou. Renove a chave privada e pública. Em seguida, faça upload da chave pública e substitua a chave privada antiga pela nova chave. Verifique o caminho dentro do arquivo connector-umapi.yml para apontar para o arquivo correto.
c) Verificar se a integração foi feita para a organização correta. Selecione a organização na lista suspensa localizada no canto superior esquerdo em https://developer.adobe.com/console/projects. Em seguida, verifique o valor da ID da conta técnica da integração ativa junto com outros metadados (ID da organização, segredo e ID do cliente).
SSL: CERTIFICATE_VERIFY_FAILED
Exemplo de entrada no log
2017-07-07 09:01:37 4916 CRITICAL main - UMAPI a conexão com o ID da organização 'someUUIDvalue@AdobeOrg' falhou: [SSL: CERTIFICATE_VERIFY_FAILED] falha ao verificar o certificado (_ssl.c:661)
Dica: Isso é causado pela inspeção SSL ativada no servidor proxy local
Solução 1: obtenha o certificado da CA da raiz do proxy no formato PEM (presuma que seu nome seja thecert.crt). Se o formato DER for usado, transforme-o em PEM usando o comando openssl:
openssl x509 -inform DER -in thecert.crt -out thecert.pem -outform PEM
Observação: visualizar o conteúdo do certificado e ver uma string codificada em base64 entre as linhas
-----BEGIN CERTIFICATE----- e -----END CERTIFICATE----- significa que você tem o arquivo formatado em PEM.
Em seguida, crie uma variável de ambiente chamada REQUESTS_CA_BUNDLE e defina seu valor como o caminho para o arquivo ert.pem.
Solução 2: em alguns casos, observou-se no Windows que, se a ferramenta for executada de uma unidade diferente do sistema operacional e do Python instalado, esse erro poderá ocorrer.Mover o script inteiro na unidade na qual o SO existe pode ser uma solução. Se não for uma opção, o arquivo cacert.pem que contém todas as CAs de raiz confiáveis podem ser copiados para a outra unidade, e seu caminho pode ser usado como valor de entrada para a variável de ambiente REQUESTS_CA_BUNDLE. Se um proxy também inspecionar o tráfego de SSL, o conteúdo do certificado da CA de raiz precisará ser copiado dentro do arquivo cacert.pem para garantir que o certificado do proxy também seja confiável.
Observação: Uma instalação padrão do Python teria o pacote de certificados em C:\Python36\Lib\site-packages\certifi\cacert.pem.
Solução3: Desative a inspeção SSL no lado do proxy para os endpoints da API ims-na1.adobelogin.com e usermanagement.adobe.io
Nenhum grupo encontrado [...]
Exemplo de entrada no log:
2018-01-01 09:01:37 4916 WARNING ldap - Nenhum grupo encontrado para: Name_Of_The_Group
Dicas:
a) Este grupo não existe no LDAP com esse nome exato; corrija-o adicionando o nome LDAP correto do grupo
b) O grupo não pode ser descoberto no base_dn declarado (consulte o arquivo connector-ldap.yml). Altere o valor de base_dn, de modo que contenha o grupo mencionado (ocorre principalmente quando base_dn aponta para algum OU em vez de ser o mais amplo possível).
Exemplo de entrada no log:
2018-01-01 11:25:45 1 ERROR umapi.action - Erro no requestID: action_1 (User: {'user': 'myuser@domain.com', 'useAdobeID': True, 'requestID': 'action_1'}, Command: {'add': {'product': ['group_name']}}): code: "error.group.not_found" message: "O grupo my_group_name não foi encontrado"
Dica: o group_name do user-group na saída acima não existe no lado da Adobe; portanto, vá em frente e crie-o. Se a intenção era definir o nome de um PLC em vez de um grupo de usuários, então consulte esta página de documentação para obter uma explicação mais visual.
Exemplo de entrada no log:
2018-09-05 10:58:08 96329 CRITICAL main - A conexão com a organização some_Org_UUID@AdobeOrg no ponto de acesso https://usermanagement.adobe.io/v2/usermanagement falhou: dlopen(/Users/user/.pex/install/cryptography-2.3-cp37-cp37m-macosx_10_12_x86_64.whl.f77d5cc74b0deef9f1df7eacfe5f5ea57ed94a63/cryptography-2.3-cp37-cp37m-macosx_10_12_x86_64.whl/cryptography/hazmat/bindings/_openssl.abi3.so, 2): Biblioteca não carregada: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenciado de: /Users/user/.pex/install/cryptography-2.3-cp37-cp37m-macosx_10_12_x86_64.whl.f77d5cc74b0deef9f1df7eacfe5f5ea57ed94a63/cryptography-2.3-cp37-cp37m-macosx_10_12_x86_64.whl/cryptography/hazmat/bindings/_openssl.abi3.so
Motivo: imagem não encontrada
2018-09-05 10:58:08 96329 INFO main - ========== Terminar execução (versão do User Sync: 2.3) (Tempo total: 0:00:00)
Dica: esse erro foi registrado em um macOS High Sierra, usando o UST v2.3 e o Python 3.7.0. Executar brew install openssl no Terminal resolveu o problema para este cenário específico.
Não foi possível criar uma pessoa para o tipo 2 ou 3 [...]
Exemplo de entrada do log:
2019-07-28 07:17:51 2220 ERROR umapi.action - Erro no requestID: action_1 (User: {'user': 'user@claimed-domain.com', 'requestID': 'action_1'}, Command: {'createFederatedID': {'email': 'user@claimed-domain.com', 'option': 'updateIfAlreadyExists', 'firstname': 'First', 'lastname': 'Last', 'country': 'US'}}): code: "error.internal.create_failed" message: "Não foi possível criar a pessoa para o tipo 2 ou 3. O resultado do Renga é NOT_ALLOWED, o recurso é gerenciado externamente e o token não possui a finalidade GROUP_SOURCE_UPDATE."
Às vezes, o @claimed-domain.com é de propriedade de uma organização diferente que configurou um conector do Azure ou do Google para gerenciar a sincronização de contas com o Admin Console. Esse mesmo domínio é então atribuído a uma organização diferente que usa a ferramenta User Sync para sincronizar contas do formato @claimed-domain.com
Causa: a mensagem registrada é exibida quando a ferramenta de sincronização extrai a conta
user@claimed-domain.com de um servidor LDAP para criá-la na organização secundária. No entanto, a conta ainda não foi criada/sincronizada na organização principal por meio do conector do Azure ou do Google.
Dica: Tente criar/sincronizar a conta user@claimed-domain.com na Organização usando o conector do Azure ou do Google e tente sincronizar novamente com o UST na Organização fiduciária.
Falha de LDAP inesperada ao ler [...]
Exemplo de entrada no log:
2018-09-05 10:58:08 96329 6348 CRITICAL main - Falha inesperada no LDAP ao ler as informações do grupo: {'desc': 'Referral', 'info': 'Referral:\nldap://domain.local/DC=sub,DC=domain,DC=local'}
Causa possível: Os grupos de interesse estão localizados em um subdomínio, mas o valor do host é um dos domínios raiz.
Dica: Altere o valor do host para um dos subdomínios em que os grupos de usuários podem ser encontrados. Se os usuários ou grupos de interesse estiverem localizados no domínio raiz e em seus subdomínios, use a porta de catálogo global no domínio raiz. Modifique os grupos no(s) subdomínio(s) para que sejam Universal em vez de Global. Exemplo de valor de host usando o catálogo global:: ldap://domain.local:3268 ou ldaps://domain.local:3269
Neste último cenário, se a porta de catálogo global for usada, certifique-se de que o valor base_dn não use nenhum valor:
base_dn: ""
error.organization.invalid_id
Exemplo de entrada no log:
2020-08-20 12:00:00 1892 ERROR main - Exceção não tratada
raise RequestError(result)
umapi_client.error.RequestError: Request Error (401): {"lastPage":false,"result":"error.organization.invalid_id",
"message":"NÃO AUTORIZADO"}
Este erro foi observado em integrações mais antigas.
A solução: crie uma nova integração (ou projeto) em https://developer.adobe.com/console/projects, ao lado da existente, usada para o mesmo propósito. A nova integração fornecerá novas credenciais, então certifique-se de atualizá-las no arquivo connector-umapi.yml. É muito possível que o keypair (chave privada/pública) seja reemitido, portanto, a nova chave privada precisa substituir a existente.
Não foi possível criar pessoa do tipo createFederatedID
Exemplo de entrada no log:
2021-01-01 18:00:00 14063 ERROR umapi.action - Erro no requestID: action_19 (User: {'user': 'some_user', 'domain': some.domain', 'requestID': 'action_19'}, Command: {'createFederatedID': {'email': 'some_user@some.domain', 'option': 'ignoreIfAlreadyExists', 'firstname': 'FName', 'lastname': 'LName, 'country': 'GB'}}): code: "error.internal.create_failed" message: "Não foi possível criar a pessoa do tipo createFederatedID"
Trata-se de um erro genérico por várias causas, mas o problema mais comum é que o domínio usado na ação de criação está sob a influência de uma configuração de sincronização do Azure ou Google.
Como verificar: faça logon no Admin Console com a conta de administrador do sistema, clique no menu “Configurações”, clique dentro do diretório que contém o domínio e, por fim, clique na guia do menu “Sincronizar”.
Há um cartão de Origem de Sincronização presente no menu Sincronização?
Se Sim, a correção depende de como a sincronização deve continuar:
-> se o conector do Azure ou Google deve ser o responsável pela sincronização, continue com a configuração da Origem de Sincronização e remova completamente o UST
-> se o UST deve ser o responsável pela sincronização, clique no botão "Ir para Configurações" e clique no botão "Remover Sincronização" na parte inferior da página; o UST deve começar a funcionar normalmente depois disso
Se Não, pode ser que o UST atual esteja sendo executado em um console no qual o domínio em questão é confiado a partir de um console diferente (organização proprietária). Esta outra Org pode ter a sincronização do Azure ou Google ativada, o que poderia levar ao erro atual.A correção nesse caso é sincronizar a conta na organização proprietária/console primeiro e, em seguida, usar o UST para criar/adicionar a conta no console atual.
Se nenhuma das situações acima se encaixar no cenário atual, é melhor entrar em contato com o Suporte Empresarial.