Outil User Sync : erreurs courantes

Liste de certaines erreurs courantes lors de l’exécution de l’utilitaire UST et conseils pour les résoudre

FileNotFoundError: [Errno 2]

Exemple de sortie d’erreur de console :

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\USER\\.pex\\install\\pycryptodome [...]'

Peut apparaître sous Windows à cause des chemins > 256 caractères.

Conseil : créez une variable d’environnement nommée PEX_ROOT avec la valeur C:\pex (si le script est exécuté à partir du lecteur C:, ou modifiez la lettre pour qu’elle corresponde). Parfois, un redémarrage du système est nécessaire pour appliquer les modifications.

 

can't open file 'user-sync.pex': [Errno 2]

Exemple de sortie d’erreur de console :

python: can't open file 'user-sync.pex': [Errno 2] No such file or directory

Conseil : assurez-vous d’exécuter la ligne de commande python à partir du dossier où se trouve le fichier user-sync.pex.

 

UMAPI timeout

Exemple de sortie d’erreur de console :

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...

Conseil : Ces messages d’avertissement sont normaux. Lorsque qu’il est occupé, le serveur répond avec le code HTTP 429 : une nouvelle tentative peut donc résoudre le problème. L’UST est doté d’un mécanisme de retour en arrière exponentiel pour réessayer l’appel, ce qui augmente la durée entre les tentatives. Le script s’arrête après trois tentatives échouées.

error.user.belong_to_another_org

Exemple d’entrée de journal (mode débogage) :

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"

Conseil : le domaine utilisé pour créer le compte peut ne pas être déposé/approuvé au sein de vos organisations. Un drapeau ou un point vert doit apparaître pour les domaines actifs dans Admin Console -> Paramètres. Si ce n’est pas le cas, compléter le processus de revendication de domaine peut résoudre le problème.

error.user.type_mismatch

Exemple d’entrée de journal (mode débogage) :

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"

Conseil : une tentative est effectuée pour créer un compte de type FederatedID, mais le répertoire est créé pour une utilisation en entreprise ou inversement. Recherchez l’attribut user_identity_type dans le fichier user-sync-config.yml. Modifiez la valeur en fonction du type de répertoire affiché dans la Admin Console (Paramètres > Identité > Domaines > Valeur du type de répertoire pour le domaine donné).

Exemple d’entrée de journal (mode débogage) :

Dépendances manquantes

Exemple de sortie d’erreur de console :

Failed to execute PEX file, missing compatible dependencies for:
pyyaml
cryptography
cffi
umapi-client
pycryptodome
pyldap
psutil
user-sync

Conseils :

a) Vérifiez si la version de Python que vous avez installée dans votre système est la version 32 bits. Désinstallez la version 32 bits et installez la version 64 bits pour résoudre le problème.

b) Vérifiez si la version user-sync.pex que vous avez téléchargée à partir de GitHub correspond à votre version de Python et à votre type de système d’exploitation. Par exemple, user-sync-v2.3-win64-py365.zip doit être téléchargé pour Windows 64 bits et Python 3.

Utiliser la dernière version de Python n’est pas toujours le meilleur choix. Le .pex a été construit en premier, il vaut mieux essayer de faire correspondre la version de Python. Référez-vous au suffixe du fichier .zip téléchargé pour identifier la version de Python qui correspond. Dans l’exemple ci-dessus (user-sync-v2.3-win64-py365.zip), on peut identifier Python 3.6.5.

Erreur de déchiffrement de la clé privée

Exemple d’entrée de journal (mode débogage) :

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

Conseils :

a) Parfois, la clé privée peut contenir des caractères non datés ou des lignes vides insérés par erreur. Essayez de supprimer les lignes vides ou de régénérer la paire clé privée et clé publique.

b) N’utilisez pas l’attribut umapi_private_key_data si vous exécutez le script sous Windows. Il vaut mieux chiffrer la clé et sauvegarder ce mot de passe dans le Gestionnaire d’informations identification.

c) Essayez une clé privée de longueur RSA256/2048 bits si vous utilisez un format différent.

d) Il est possible que vous configuriez la clé secure_private_key_pass_key: umapi_private_key_passphrase dans le fichier connector-umapi.yml. Dans ce cas, assurez-vous que l’entrée dans la sauvegarde d’informations d’identification pour cette valeur et les valeurs associées correspondent (voir ci-dessous).

Gestionnaire d’informations identification Windows

Aucune valeur dans le stockage sécurisé pour l’utilisateur...

Exemple d’entrée de journal (mode débogage) :

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"

Conseils :

a) l’entrée dans la sauvegarde d’informations d’identification pour umapi_api_key peut être manquante. Créez l’entrée dans la sauvegarde d’informations d’identification. Vous trouverez la documentation d’aide ici.

b) Il se peut que la valeur ait été saisie avec un autre compte d’utilisateur dans la sauvegarde d’informations d’identification. Toutefois, pour l’utilisateur actuellement connecté, cette entrée est manquante. Si nécessaire, ajoutez-la ou changez de compte d’utilisateur.

error.internal.exceptionflys / error.unauthorized


		
	





Exemple de sortie d’erreur de console :

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"}"

Conseil : Il se peut que dans Admin Console -> Paramètres -> Paramètres d’authentification une option autre que Le plus simple pour les utilisateurs (le mot de passe n’expire jamais) soit sélectionnée. Si l’option Plus sécurisé ou Le plus sécurisé est activée, le mot de passe du compte technique lié à l’intégration peut expirer.

Pour résoudre ce problème, une nouvelle intégration doit être créée. Assurez-vous que les métadonnées soient également renouvelées dans le fichier connector-umapi.yml.

Un correctif a été déployé, mais cela peut affecter les intégrations créées avant octobre 2018.

Aucune connexion n’a pu être établie [Errno 10061]

Exemple de sortie d’erreur de console :

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',))

Conseil :

Ce problème est lié au fait que UST ne peut pas se connecter aux points de terminaison de l’API publique. Les paramètres locaux peuvent empêcher l’accès  en raison des règles de pare-feu, du blocage du trafic par proxy, des paramètres de compte pour l’accès Internet, etc.

Dans certains cas, cela peut aider à ajouter ces deux variables d’environnement :

http_proxy et la valeur associée au format http://<proxy hôte>:<port>

https_proxy et la valeur associée au format https://<proxy hôte>:<port>

Dans d’autres cas, autoriser l’accès à ces points de terminaison peut aider :

ims-na1.adobelogin.com:443

usermanagement.adobe.io:443

Ce problème peut uniquement être résolu localement en désactivant l’accès aux points de terminaison ci-dessus pour le compte en cours d’exécution.

Les métascopes dans les JWT ne sont pas un sous-ensemble des métascopes dans la liaison.

Exemple d’entrée de journal (mode débogage) :

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"}

Conseil : Accédez à l’intégration que vous avez créée à l’adresse https://console.adobe.io/projects et consultez le menu de gauche dans lequel les API sont répertoriées. Assurez-vous que l’API User Management est ajoutée en tant que service (elle apparaît dans la liste). 

Aucune liaison valide n’a été trouvée pour la combinaison entre l’organisation et le compte technique

Exemple d’entrée de journal (mode débogage) :

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"}

Conseils :

a) Cela peut être dû au fait que la valeur tech_acct dans le fichier connector-umapi.yml correspond à une autre valeur que l’ID de compte technique dans l’intégration à l’adresse https://console.adobe.io. Vérifiez la valeur d’ID de compte technique de l’intégration actuelle et copiez-la dans ce fichier.

b) Cela peut également être dû au fait que le certificat public de l’intégration a expiré. Renouvelez la clé privée et la clé publique. Ensuite, téléchargez la clé publique et remplacez l’ancienne clé privée par la nouvelle. Vérifiez le chemin d’accès dans le fichier connector-umapi.yml pour qu’il pointe vers le fichier approprié.

c) Vérifiez si l’intégration est faite pour la bonne organisation. Sélectionnez l’organisation dans la liste déroulante située dans le coin supérieur gauche à l’adresse https://console.adobe.io/integrations. Ensuite, vérifiez la valeur d’ID de compte technique pour l’intégration active avec les autres métadonnées (ID d’organisation, secret et ID client).

SSL: CERTIFICATE_VERIFY_FAILED

Exemple d’entrée de journal (mode débogage) :

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)

Conseil : Cela est dû à l’inspection SSL activée sur le serveur proxy (paramètre d’environnement local)

Solution 1 : Obtenez le CA du pare-feu au format PEM (supposons que son nom est thecert.crt). Si le format DER est utilisé, transformez-le en PEM à l’aide de la commande openssl :

openssl x509 -inform DER -in thecert.crt -out thecert.pem -outform PEM

Remarque : si vous ne savez pas si le fichier .crt est déjà au format PEM ou non, exécutez d’abord ces lignes de commande et voyez laquelle échoue.

openssl x509 -text -inform DER -in thecert.crt
openssl x509 -text -inform PEM -in thecert.crt

Si DER 1 échoue, le fichier est déjà au format PEM. Renommez donc le fichier thecert.crt en thecert.pem, sinon transformez-le en PEM en utilisant la première ligne de commande openssl ci-dessus.

Ensuite, créez une variable d’environnement nommée REQUESTS_CA_BUNDLE et définissez sa valeur comme chemin d’accès au fichier thecert.pem.

Solution 2 : Sous Windows, lorsque l’outil est exécuté à partir d’un pilote différent de celui sur lequel le système d’exploitation et Python sont installés. Dans ce cas, il ne peut pas atteindre le bundle des certificats d’autorité de certification racine approuvés. Le déplacement de l’intégralité du script sur le lecteur où le système d’exploitation existe peut être une solution. S’il ne s’agit pas d’une option, le fichier de dossier contenant toutes les autorités de certification racine approuvées doit être utilisé comme cible pour la variable env REQUESTS_CA_BUNDLE. Si un proxy inspecte le trafic SSL, le contenu du certificat d’autorité de certification racine doit être copié dans le fichier cacert.pem pour vérifier les certificats.

Remarque : Une installation Python par défaut aurait le bundle de certificats à l’adresse C:\Python36\Lib\site-packages\certifi\cacert.pem.

Solution 3 : désactiver l’inspection SSL côté proxy pour les points de terminaison API ims-na1.adobelogin.com et usermanagement.adobe.io

Aucun groupe trouvé [...]

Exemple d’entrée de journal (mode débogage) :

2018-01-01 09:01:37 4916 WARNING ldap - No group found for: Name_Of_The_Group

Conseils :

a) Ce groupe n’existe pas dans LDAP sous ce nom exact ; corrigez-le en ajoutant le nom LDAP correct du groupe.

b) Le groupe n’est pas détectable sous le nom déclaré base_dn (voir le fichier connector-ldap.yml). Modifiez la valeur base_dn pour qu’elle contienne le groupe mentionné (cela se produit principalement lorsque base_dn pointe vers une unité d’organisation).

error.group.not_found

Exemple d’entrée de journal (mode débogage) :

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"

Conseil : Le groupe utilisateur group_name dans la sortie ci-dessus n’existe pas côté Adobe. Vous pouvez le créer. Si vous souhaitez définir le nom d’un PLC au lieu de celui d’un groupe d’utilisateurs, consultez cette page de documentation pour obtenir une explication plus visuelle.

image introuvable

Exemple d’entrée de journal (mode débogage) :

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) 

Conseil : cette erreur a été enregistrée sous macOS High Sierra, lors de l’utilisation de UST v2.3, à l’aide de  Python 3.7.0. L’exécution de l’installation brew de openssl à l’intérieur du Terminal l’a corrigée pour ce scénario particulier.

Impossible de créer une personne pour le type 2 ou 3 [...]

Exemple d’entrée de journal (mode débogage) :

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."

Parfois, la propriété @claimed-domain.com appartient à une autre organisation qui a configuré un connecteur Azure ou Google pour gérer la synchronisation des comptes avec Admin Console. Ce même domaine est ensuite confié à une autre organisation qui utilise l’outil User Sync pour synchroniser les comptes au format @claimed-domain.com

Cause : Le message enregistré s’affiche lorsque l’outil de synchronisation extrait le compte
 user@claimed-domain.com d’un serveur LDAP pour le créer dans l’organisation secondaire. Cependant, le compte n’est pas encore créé/synchronisé dans l’organisation principale via Azure ou Google Connector.

Conseil : essayez de créer/synchroniser le compte user@claimed-domain.com  dans l’organisation à l’aide du connecteur Azure ou Google, puis réessayez de synchroniser avec l’utilitaire UST dans l’organisation mandataire.

Erreur LDAP inattendue lors de la lecture de [...]

Exemple d’entrée de journal (mode débogage) :

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'}

Cause possible : Le ou les groupes d’intérêt sont situés dans un sous-domaine, mais la valeur hôte est l’un des domaines racine.

Conseil : Remplacez la valeur de l’hôte par l’un des sous-domaines où des groupes d’utilisateurs sont disponibles. Si des utilisateurs ou des groupes d’intérêt se trouvent dans le domaine racine et dans son ou ses sous-domaines, utilisez le port de catalogue global sur le domaine racine. Passez les groupes du ou des sous-domaines en universel au lieu de global. Exemple de valeur d’hôte utilisant le catalogue global :  ldap://domain.local:3268 ou ldaps://domain.local:3269

Dans ce dernier scénario, si le port de catalogue global est utilisé, assurez-vous que la valeur base_dn ne prend aucune valeur :

base_dn: ""

 Adobe

Recevez de l’aide plus rapidement et plus facilement

Nouvel utilisateur ?