Enumeración de varios errores comunes al ejecutar User Sync Tool y sugerencias para resolverlos
Archivo no encontrado: [Núm. error 2]
Salida de error de consola de ejemplo:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\USER\\.pex\\install\\pycryptodome [...]'
Puede aparecer en Windows debido a rutas superiores a 256 caracteres.
Sugerencia: Cree una variable de entorno denominada PEX_ROOT con el valor C:\pex (si el script se ejecuta en la unidad C:; de lo contrario, cambie la letra a la unidad que corresponda). A veces es necesario reiniciar el sistema para que surta efecto.
No se puede abrir el archivo user-sync.pex: [Núm. error 2]
Salida de error de consola de ejemplo:
python: can't open file 'user-sync.pex': [Errno 2] No such file or directory
Sugerencia: Ejecute la línea de comandos python dentro de la carpeta donde se ubica el archivo user-sync.pex.
Se ha excedido el tiempo de espera de UMAPI
Salida de error de consola de ejemplo:
2018-01-01 11:49:42 28102 WARNING umapi - UMAPI timeout...service unavailable (code 429 on try 1)
2018-01-01 11:49:42 28102 WARNING umapi - Next retry in 42 seconds...
Sugerencia: Estos mensajes de advertencia son normales. Cuando está ocupado, el servidor responde con el código HTTP 429; por lo tanto, se podría resolver volviéndolo a intentar. User Sync Tool tiene un mecanismo de retroceso exponencial para volver a intentar la llamada que incrementa el intervalo de tiempo entre reintentos. El script se detiene después de tres reintentos incorrectos.
error.user.belongs_to_another_org
Ejemplo de entrada de registro (modo de depuración):
2018-01-01 11:49:42 28102 ERROR umapi.action - Error in 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: "Illegal to invite user from another organization's owned auth src"
Sugerencia: El dominio utilizado para crear la cuenta podría no estar reclamado o no ser de confianza dentro de sus organizaciones. Debe aparecer una bandera o punto verde para los dominios activos en Admin Console -> Configuración. Si no es así, se puede resolver completando el proceso de reclamación del dominio.
Ejemplo de entrada de registro (modo de depuración):
2018-01-01 12:34:23 13383 ERROR umapi.action - Error in 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: "The user type requested for the invite does not match the claimed domain type"
Sugerencia: Se intenta crear un tipo de cuenta federatedID, pero se crea el directorio para el uso de Enterprise o a la inversa. Busque el atributo user_identity_type dentro del archivo user-sync-config.yml. Modifique el valor según el tipo de directorio que se muestra en Admin Console (valor en Configuración > Identidad > Dominios > Tipo de directorio para el dominio indicado).
Ejemplo de entrada de registro (modo de depuración):
Salida de error de consola de ejemplo:
Failed to execute PEX file, missing compatible dependencies for:
pyyaml
cryptography
cffi
umapi-client
pycryptodome
pyldap
psutil
user-sync
Sugerencias:
a) Compruebe si en el sistema está instalada la versión de 32 bits de Python. Para solucionar el problema, desinstale la versión de 32 bits e instale la de 64 bits.
b) Compruebe si la versión de user-sync.pex que ha descargado de GitHub iguala su versión de Python y el tipo de sistema operativo. Por ejemplo, user-sync-v2.3-win64-py365.Se debe descargar el archivo zip para Windows de 64 bits y Python 3.
Usar la versión de Python más reciente no siempre es buena idea. Para tratar de igualar la versión Python, se integró .pex en primer lugar. Compruebe el sufijo del archivo .zip descargado para identificar la versión de Python que sería adecuada. Para el ejemplo anterior (user-sync-v2.3-win64-py365.zip), se puede identificar Python 3.6.5.
Error al descifrar la clave privada
Ejemplo de entrada de registro (modo de depuración):
2018-01-01 09:52:23 7920 DEBUG umapi - umapi: reading private key data from file C:\path\to\private.key
2018-01-01 09:52:23 7920 CRITICAL main - umapi configuration.enterprise: Error decrypting private key, either the password is wrong or: RSA key format is not supported
Sugerencias:
a) En ocasiones, la clave privada puede contener caracteres sin fecha o líneas vacías que se han insertado por error. Intente quitar las líneas vacías o vuelva a generar el par de claves privadas y públicas.
b) No utilice el atributo umapi_private_key_data si ejecuta el script en Windows. Cifre la llave y almacene esa contraseña en el Administrador de credenciales.
c) Pruebe una clave privada RSA256 /2048 bits, si usa un formato diferente.
d) Es posible que configure secure_priv_key_pass_key: umapi_private_key_passphrase dentro del archivo connector-umapi.yml. En tal caso, asegúrese de que coincidan la entrada del almacén de credenciales con este valor y los valores asociados (consulte a continuación).
No hay ningún valor en el almacenamiento seguro para el usuario...
Ejemplo de entrada de registro (modo de depuración):
2018-01-01 09:52:23 7920 CRITICAL main - umapi CRITICAL main - umapi configuration.enterprise: No value in secure storage for user "someUUIDvalue@AdobeOrg", key "umapi_api_key"
Sugerencias:
a) Es posible que falte la entrada del almacén de credenciales para umapi_api_key. Cree la entrada en el almacén de credenciales. Encontrará documentación de ayuda aquí.
b) Puede ser que el valor se haya añadido al almacén de credenciales con otra cuenta de usuario. Sin embargo, esta entrada no existe para el usuario actualmente conectado. Añádala, si es necesario, o cambie de cuenta de usuario.
error.internal.exceptionflys / error.unauthorized
Salida de error de consola de ejemplo:
umapi_client.error.RequestError: Request Error (401): {"lastPage":false,"result":"error.internal.exceptionflys","message":"Failed to exchange token"}
OR
"umapi_client.error.RequestError: Request Error (401): {"lastPage":false,"result":"error.unauthorized","message":"Failed to authenticate provided token"}"
Sugerencia: Puede suceder que en Admin Console -> Configuración -> Configuración de autenticación se haya elegido una opción distinta de La más fácil para los usuarios (La contraseña nunca caduca). Si está activada la opción Más segura o La más segura, la contraseña de la cuenta técnica vinculada con la integración puede caducar.
Para solucionar el problema, se debe crear otra integración. Asegúrese de que los metadatos también se renueven en el archivo conector-umapi.yml.
En este sentido se ha implementado una corrección, pero esta puede afectar a las integraciones que se hayan creado antes de octubre de 2018.
No se ha podido establecer una nueva conexión [Núm. error 10061]
Salida de error de consola de ejemplo:
ConnectionError: HTTPSConnectionPool(host='usermanagement.adobe.io', port=443): Max retries exceeded with url: /v2/usermanagement/users/someUUID@AdobeOrg/0?directOnly=True (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x00000000027B9630>: Failed to establish a new connection: [Errno 10061] No connection could be made because the target machine actively refused it',))
Sugerencia:
Se relaciona con el hecho de que User Sync Tool no pueda conectarse a los puntos finales de la API pública. La configuración local puede impedir el acceso debido a las reglas del servidor de seguridad, el tráfico de bloqueo del proxy, la configuración de la cuenta para el acceso a Internet, etcétera.
En algunos casos, puede resultar útil añadir estas dos variables de entorno:
http_proxy y el valor asociado de formato http://<proxy_host>:<port>
https_proxy y el valor asociado de formato https://<proxy_host>:<port>
En otros casos, lo útil puede ser permitir el acceso a estos puntos finales:
ims-na1.adobelogin.com:443
usermanagement.adobe.io:443
Solo puede resolverse localmente autorizando el acceso a los puntos finales anteriores para la cuenta que se ejecuta.
Ejemplo de entrada de registro (modo de depuración):
2017-07-07 09:01:37 4916 CRITICAL main - Connection to org [...] at endpoint https://usermanagement.adobe.io/v2/usermanagement failed: Unable to authorise against https://ims-na1.adobelogin.com/ims/exchange/jwt: Response Code: 400, Response Text: {"error_description":"The metascopes in the JWT are not a subset of the metascopes in the binding.","error":"invalid_scope"}
Sugerencia: Acceda a la integración que ha creado en https://console.adobe.io/projects y compruebe las API que figuran en el menú de la izquierda. Compruebe que User Management API se haya añadido como servicio (aparece en la lista).
No se han encontrado enlaces válidos para la combinación de organización y cuenta técnica
Ejemplo de entrada de registro (modo de depuración):
2017-07-07 09:01:37 4916 CRITICAL main - UMAPI connection to org id 'someUUIDvalue@AdobeOrg' failed: Unable to authorize against https://ims-na1.adobelogin.com/ims/exchange/jwt:
Response Code: 400, Response Text: {"error_description":"No valid bindings were found for organization and technical account combination","error":"invalid_token"}
Sugerencias:
a) Puede deberse a que el valor tech_acct dentro del archivo connector-umapi.yml corresponde a un valor que no es el ID de cuenta técnica dentro de la integración en https://console.adobe.io. Verifique el valor del ID de cuenta técnica de la integración actual y cópielo en este archivo.
b) También puede deberse a que ha caducado el certificado público de la integración. Renueve la clave privada y la pública. A continuación, cargue la clave pública y sustituya la clave privada antigua por la clave nueva. Compruebe la ruta dentro del archivo connector-umapi.yml para que señale al archivo correcto.
c) Compruebe si la integración se ha efectuado para la organización correcta. Seleccione la organización en la lista desplegable de la esquina superior izquierda en https://console.adobe.io/integrations. Después, compruebe el valor del ID de cuenta técnica de la integración activa y otros metadatos (ID de organización, secreto e ID de cliente).
SSL: CERTIFICATE_VERIFY_FAILED
Ejemplo de entrada de registro (modo de depuración):
2017-07-07 09:01:37 4916 CRITICAL main - UMAPI connection to org id 'someUUIDvalue@AdobeOrg' failed: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
Sugerencia: Puede deberse a que se ha activado alguna inspección de SSL en el servidor proxy (opción de entorno local)
Solución 1: Obtenga el certificado de la CA del servidor de seguridad en formato PEM (se supone que su nombre es thecert.crt). Si se usa el formato DER, transfórmelo a PEM mediante el comando openssl:
openssl x509 -inform DER -in thecert.crt -out thecert.pem -outform PEM
Nota: Si no está seguro de que el archivo .crt ya está o no en formato PEM, ejecute primero estas líneas de comandos y vea cuál falla.
openssl x509 -text -inform DER -in thecert.crt
openssl x509 -text -inform PEM -in thecert.crt
Si falla un DER, el archivo ya está en formato PEM; por lo tanto, cambie el nombre thecert.crt a thecert.pem; de lo contrario, transfórmelo a PEM con la primera línea de comandos openssl de arriba.
A continuación, cree una variable de entorno denominada REQUESTS_CA_BUNDLE y defina su valor como la ruta del archivo thecert.pem.
Solución 2: En Windows, en los casos en los que la herramienta se ejecuta en una unidad distinta de la que están instalados el sistema operativo y Python. En este caso, no puede alcanzar el paquete de certificaciones de CA raíz de confianza. Una solución puede ser desplazar todo el script a la unidad en la que está el sistema operativo. Si eso no es factible, el archivo cacert que contiene todas las entidades de la CA raíz de confianza debe usarse como destino de la variable REQUESTS_CA_BUNDLE env. Si un proxy inspecciona el tráfico SSL, el contenido del certificado de la CA raíz debe copiarse dentro del archivo cacert.pem para verificar los certificados.
Nota: Una instalación de Python predeterminada tendría el paquete de certificados en C:\Python36\Lib\site-packages\certifi\cacert.pem.
Solución 3: Desactive la inspección SSL en el lado del proxy para los puntos finales de la API ims-na1.adobelogin.com y usermanagement.adobe.io.
No se ha encontrado ningún grupo [...]
Ejemplo de entrada de registro (modo de depuración):
2018-01-01 09:01:37 4916 WARNING ldap - No group found for: Name_Of_The_Group
Sugerencias:
a) Este grupo no existe en LDAP con ese nombre exacto; soluciónelo añadiendo el nombre LDAP correcto del grupo.
b) El grupo no se puede detectar bajo el valor de base_dn declarado (consulte el archivo connector-ldap.yml). Cambie el valor de base_dn para que contenga el grupo mencionado (ocurre sobre todo cuando base_dn apunta a alguna OU).
Ejemplo de entrada de registro (modo de depuración):
2018-01-01 11:25:45 1 ERROR umapi.action - Error in requestID: action_1 (User: {'user': 'myuser@domain.com', 'useAdobeID': True, 'requestID': 'action_1'}, Command: {'add': {'product': ['group_name']}}): code: "error.group.not_found" message: "Group my_group_name was not found"
Sugerencia: El valor de user-group group_name de la salida de arriba no existe en Adobe; por lo tanto, continúe y créelo. Si la intención era establecer el nombre de una PLC en lugar de uno de user-group, consulte esta página de documentación para obtener una explicación más visual.
Ejemplo de entrada de registro (modo de depuración):
2018-09-05 10:58:08 96329 CRITICAL main - Connection to org some_Org_UUID@AdobeOrg at endpoint https://usermanagement.adobe.io/v2/usermanagement failed: 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): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /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
Reason: image not found
2018-09-05 10:58:08 96329 INFO main - ========== End Run (User Sync version: 2.3) (Total time: 0:00:00)
Sugerencia: Este error se registró en macOS High Sierra, al utilizar User Sync Tool versión 2.3 con Python 3.7.0. El problema se solucionó al ejecutar brew install openssl dentro de Terminal.
No se ha podido crear persona para tipo 2 o 3 [...]
Ejemplo de entrada de registro (modo de depuración):
2019-07-28 07:17:51 2220 ERROR umapi.action - Error in 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: "Could not create person for type 2 or 3. Renga result is NOT_ALLOWED, Resource is externally managed and token is missing the GROUP_SOURCE_UPDATE purpose."
En ocasiones, @claimed-domain.com lo posee una organización diferente que ha configurado un conector de Azure o de Google para administrar la sincronización de cuentas con Admin Console. A continuación, ese dominio se confía a otra organización que utiliza User Sync Tool para sincronizar cuentas con el formato @claimed-domain.com
Causa: El mensaje registrado aparece cuando User Sync Tool extrae la cuenta
user@claimed-domain.com de un servidor LDAP para crearla en la organización secundaria. Sin embargo, la cuenta aún no se ha creado o sincronizado en la organización principal a través del conector de Azure o de Google.
Sugerencia: Intente sincronizar la cuenta user@claimed-domain.com en la organización mediante el conector de Azure o de Google; a continuación, intente sincronizar de nuevo con User Sync Tool en la organización de confianza.
Error inesperado de LDAP al leer [...]
Ejemplo de entrada de registro (modo de depuración):
2018-09-05 10:58:08 96329 6348 CRITICAL main - Unexpected LDAP failure reading group info: {'desc': 'Referral', 'info': 'Referral:\nldap://domain.local/DC=sub,DC=domain,DC=local'}
Causa posible: El grupo o los grupos de interés se encuentran en un subdominio, pero el valor del host es uno de los dominios raíz.
Sugerencia: Cambie el valor de host a uno de los subdominios en los que se pueden encontrar grupos de usuarios. Si los usuarios o los grupos de interés se encuentran en el dominio raíz y en sus subdominios, utilice el puerto de catálogo global del dominio raíz. Modifique los grupos de los subdominios para que sean de tipo Universal en lugar de Global. Ejemplo de valor de host que utiliza catálogo global: ldap ldap://domain.local:3268 o ldaps://domain.local:3269
En este último caso, si se utiliza el puerto de catálogo global, asegúrese de que el valor de base_dn no tome ningún valor:
base_dn: ""