Errori comuni durante l’esecuzione del programma UST e suggerimenti per risolverli
FileNotFoundError: [Errno 2]
Output di errore di esempio della console:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\USER\\.pex\\install\\pycryptodome [...]'
Può essere visualizzato in Windows a causa di percorsi più lunghi di 256 caratteri.
Suggerimento: crea una variabile di ambiente denominata PEX_ROOT con valore C:\pex (se lo script viene eseguito da C: o modifica la lettera dell’unità come necessario). A volte è necessario riavviare il sistema per abilitare la soluzione.
Impossibile aprire il file ’user-sync.pex’: [Errno 2]
Output di errore di esempio della console:
python: can't open file 'user-sync.pex': [Errno 2] No such file or directory
Suggerimento: assicurati di eseguire la riga di comando python dall’interno della cartella in cui si trova il file user-sync.pex.
Output di errore di esempio della 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...
Suggerimento: questi messaggi di avvertenza sono normali. Quando è occupato, il server risponde con il codice HTTP 429, quindi un nuovo tentativo potrebbe risolvere il problema. UST è provvisto di un meccanismo di back-off esponenziale per riprovare la chiamata, aumentando il tempo tra i tentativi successivi. Lo script si interrompe dopo tre tentativi non riusciti.
error.user.belongs_to_another_org
Voce di registro di esempio (modalità debug):
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"
Suggerimento: il dominio utilizzato per creare l’account potrebbe non essere considerato affidabile o registrato all’interno delle tue organizzazioni. Per i domini attivi viene visualizzato un flag o un punto verde in Admin Console -> Impostazioni. In alternativa, il completamento del processo di registrazione del dominio può risolvere il problema.
Voce di registro di esempio (modalità debug):
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"
Suggerimento: si tenta di creare un tipo di account federatedID, ma la directory viene creata per l’uso Enterprise o viceversa. Cercare l’attributo user_identity_type nel file user-sync-config.yml. Modificare il valore in base al tipo di directory mostrato in Admin Console (Impostazioni > Identità > Domini > Tipo di directory per il dominio).
Voce di registro di esempio (modalità debug):
Output di errore di esempio della console:
Failed to execute PEX file, missing compatible dependencies for:
pyyaml
cryptography
cffi
umapi-client
pycryptodome
pyldap
psutil
user-sync
Suggerimenti:
a) Verifica se la versione di Python installata sul sistema è la versione a 32 bit. Disinstalla la versione a 32 bit e installa la versione a 64 bit per risolvere il problema.
b) Verifica che la versione di user-sync.pex scaricata da GitHub corrisponda alla versione di Python e al tipo di sistema operativo in uso. Ad esempio, user-sync-v2.3-win64-py365.zip deve essere scaricato per Windows a 64 bit e Python 3.
L’utilizzo dell’ultima versione di Python non è sempre una buona idea. Se cerchi la corrispondenza con la versione Python, il file .pex creato per primo può essere ottimale. Segui il suffisso del file .zip scaricato per identificare la versione di Python che potrebbe funzionare. Per l’esempio precedente (user-sync-v2.3-win64-py365.zip), puoi identificare Python 3.6.5.
Errore durante la decrittografia della chiave privata
Voce di registro di esempio (modalità debug):
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
Suggerimenti:
a) A volte la chiave privata può contenere caratteri senza data o righe vuote inserite per errore. Prova a rimuovere le linee vuote o a rigenerare la coppia di chiavi privata e pubblica.
b) Non utilizzare l’attributo umapi_private_key_data se lo script è in esecuzione in Windows. Applica la crittografia alla chiave e memorizza la password in Gestione credenziali.
c) Se utilizzi un formato diverso, prova una chiave privata RSA256 con 2048 bit di lunghezza.
d) È possibile che tu abbia impostato secure_priv_key_pass_key: umapi_private_key_passphrase nel file connector-umapi.yml. In questo caso verifica che le voci nell’archivio credenziali per questo valore e i valori associati corrispondano (vedi di seguito).
Nessun valore nell’archiviazione sicura per l’utente...
Voce di registro di esempio (modalità debug):
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"
Suggerimenti:
a) La voce dell’archivio credenziali per umapi_api_key potrebbe non essere disponibile. Crea la voce nell’archivio credenziali. La documentazione è disponibile qui.
b) È possibile che il valore sia stato aggiunto all’archivio credenziali con un account utente diverso. Tuttavia, questa voce manca per l’utente attualmente connesso. Aggiungila se necessario o cambia account utente.
error.internal.exceptionflys / error.unauthorized
Output di errore di esempio della 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"}"
Suggerimento: è possibile che in Admin Console -> Impostazioni -> Impostazioni autenticazione sia selezionata un’opzione diversa da Easiest for users (Più semplice per gli utenti: la password non scade mai). Se l’opzione More Secure (Più sicura) o Most Secure (La più sicura) può causare la scadenza dell’account tecnico collegato all’integrazione.
Per risolvere il problema, è necessario creare una nuova integrazione. Accertati che anche i metadati siano aggiornati nel file connector-umapi.yml.
È stata implementata una correzione che può influire sulle integrazioni create prima di ottobre 2018.
Impossibile stabilire una nuova connessione [Errore 10061]
Output di errore di esempio della 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',))
Suggerimento:
Riguarda il fatto che UST non può connettersi agli endpoint API pubblici. Le impostazioni locali possono impedire l’accesso a causa di regole del firewall, traffico bloccato da proxy, impostazioni dell’account per l’accesso a Internet e altro ancora.
In alcune situazioni può essere utile aggiungere queste due variabili di ambiente:
http_proxy e valore associato con formato http://<host proxy>:<port>
https_proxy e valore associato con formato https://<host proxy>:<port>
In altri casi, potrebbe essere utile consentire l’accesso a questi endpoint:
ims-na1.adobelogin.com:443
usermanagement.adobe.io:443
Il problema può essere risolto solo localmente, cancellando l’accesso agli endpoint citati per l’account in esecuzione.
Voce di registro di esempio (modalità debug):
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"}
Suggerimento: accedi all’integrazione creata all’indirizzo https://console.adobe.io/projects e visualizza il menu a sinistra in cui sono elencate le API. Verifica che l’API User Management sia aggiunta come servizio (visualizzata nell’elenco).
Non sono state trovate associazioni valide per la combinazione di organizzazione e account tecnico
Voce di registro di esempio (modalità debug):
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"}
Suggerimenti:
a) Può essere causato dal fatto che il valore tech_acct all’interno del file connector-umapi.yml corrisponde a un valore diverso dall’ID account tecnico all’interno dell’integrazione all’indirizzo https://console.adobe.io. Verifica il valore dell’ID account tecnico dall’integrazione corrente e copialo in questo file.
b) Può anche essere causato dal fatto che il certificato pubblico dell’integrazione è scaduto. Rinnova la chiave privata e la chiave pubblica. Quindi carica la chiave pubblica e sostituisci la vecchia chiave privata con la nuova chiave. Verifica il percorso all’interno del file connector-umapi.yml per trovare al file corretto.
c) Verifica che l’integrazione sia eseguita per l’organizzazione corretta. Seleziona l’organizzazione nell’elenco a discesa situato nell’angolo superiore sinistro all’indirizzo https://console.adobe.io/integrations. Quindi verifica il valore dell’ID account tecnico per l’integrazione attiva insieme agli altri metadati (ID organizzazione, segreto e ID client).
SSL: CERTIFICATE_VERIFY_FAILED
Voce di registro di esempio (modalità debug):
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)
Suggerimento: una causa possibile è che nel server proxy sia abilitata un’ispezione SSL (impostazione dell’ambiente locale)
Soluzione 1: ottieni il certificato CA del firewall in formato PEM (si supponga che il nome sia thecert.crt). Se è utilizzato il formato DER, trasformalo in PEM mediante il comando openssl:
openssl x509 -inform DER -in thecert.crt -out thecert.pem -outform PEM
Nota: se non sei certo che il file .crt sia già in formato PEM, esegui prima queste righe di comando e controlla quale non riesce.
openssl x509 -text -inform DER -in thecert.crt
openssl x509 -text -inform PEM -in thecert.crt
Se la prima istruzione DER non riesce, il file è già in formato PEM, quindi rinominalo da thecert.crt a thecert.pem; in caso contrario, trasformalo in PEM utilizzando la prima riga di comando openssl riportata sopra.
Quindi crea una variabile di ambiente denominata REQUESTS_CA_BUNDLE e impostane il valore come percorso del file thecert.pem.
Soluzione 2: in Windows, nei casi in cui lo strumento viene eseguito da un’unità diversa da quella in cui sono installati il sistema operativo e Python. In questo caso non può raggiungere il pacchetto di certificati CA radice affidabili. Una soluzione può essere lo spostamento dell’intero script sull’unità in cui è presente il sistema operativo. Se questo non è possibile, il file cacert contenente tutte le CA radice affidabili deve essere utilizzato come destinazione per la variabile env REQUESTS_CA_BUNDLE. Se un proxy analizza il traffico SSL, il contenuto del certificato CA radice deve essere copiato nel file cacert.pem per verificare i certificati.
Nota: in un’installazione Python predefinita il pacchetto di certificati è disponibile all’indirizzoC:\Python36\Lib\site-packages\certifi\cacert.pem.
Soluzione 3: disattiva l’ispezione SSL sul lato proxy per gli endpoint API ims-na1.adobelogin.com e usermanagement.adobe.io
Nessun gruppo trovato [...]
Voce di registro di esempio (modalità debug):
2018-01-01 09:01:37 4916 WARNING ldap - No group found for: Name_Of_The_Group
Suggerimenti:
a) Questo gruppo non esiste in LDAP con lo stesso nome; correggilo aggiungendo il nome LDAP corretto del gruppo
b) Il gruppo non è individuabile sotto il valore base_dn (vedere il file connector-ldap.yml). Modifica il valore base_dn in modo che contenga il gruppo menzionato (questo si verifica principalmente quando base_dn punta a determinate unità operative).
Voce di registro di esempio (modalità debug):
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"
Suggerimento: il gruppo utenti group_name nell’output precedente non esiste presso Adobe, pertanto devi crearlo. Se l’intento era impostare il nome di un PLC anziché di un gruppo di utenti, vedi questa pagina della documentazione per una spiegazione più visiva.
Voce di registro di esempio (modalità debug):
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)
Suggerimento: questo errore è stato registrato su macOS High Sierra, con UST v2.3 e Python 3.7.0. L’esecuzione di brew install openssl nel Terminale ha risolto questo scenario specifico.
Impossibile creare una persona per il tipo 2 o 3 [...]
Voce di registro di esempio (modalità debug):
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."
A volte, @claimed-domain.com appartiene a un’organizzazione diversa che ha configurato un connettore Azure o Google per gestire la sincronizzazione degli account con Admin Console. Lo stesso dominio viene quindi affidato a un’altra organizzazione che utilizza lo strumento di sincronizzazione degli utenti per sincronizzare gli account con formato @claimed-domain.com
Causa: il messaggio registrato viene visualizzato quando lo strumento Sincronizza estrae l’account
user@claimed-domain.com da un server LDAP per crearlo nell’organizzazione secondaria. Tuttavia l’account non è ancora stato creato/connesso all’organizzazione principale tramite il connettore Azure o Google.
Suggerimento: prova a creare/sincronizzare l’account user@claimed-domain.com nell’organizzazione utilizzando il connettore Azure o Google, quindi riprova a eseguire la sincronizzazione con l’account UST nell’organizzazione trustee.
Errore di lettura LDAP imprevisto [...]
Voce di registro di esempio (modalità debug):
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'}
Possibile causa: il gruppo o i gruppi di interesse si trovano in un sottodominio, ma il valore host è uno dei domini principali.
Suggerimento: cambia il valore host impostandolo su uno dei sottodomini in cui è possibile trovare i gruppi di utenti. Se gli utenti o i gruppi di interesse si trovano sia nel dominio radice che nei relativi sottodomini, utilizza la porta del catalogo globale nel dominio radice. Modifica i gruppi dei sottodomini in modo che siano Universal anziché Global. Esempio di valore host che utilizza il catalogo globale: ldap://domain.local:3268 o ldaps://domain.local:3269
In quest’ultimo scenario, se viene utilizzata la porta del catalogo globale, verifica che il valore base_dn non richieda alcun valore:
base_dn: ""