User Sync Tool — распространенные ошибки

Список некоторых распространенных ошибок при запуске UST и советы по их устранению

FileNotFoundError: [Errno 2]

Пример вывода ошибки консоли:

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

Может возникнуть в Windows, если в путях более 256 символов.

Совет. Создайте переменную среды с именем PEX_ROOT и значением C:\pex (если сценарий выполняется с диска C:, иначе измените букву диска соответствующим образом). Иногда требуется перезапуск системы, чтобы изменения вступили в силу.

 

не удается открыть файл 'user-sync.pex': [Errno 2]

Пример вывода ошибки консоли:

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

Совет. Убедитесь, что вы запустили командную строку python из папки, где находится файл user-sync.pex.

 

Тайм-аут UMAPI

Пример вывода ошибки консоли:

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

Совет. Эти предупреждения — нормальное явление. Когда сервер занят, он возвращает HTTP-код 429, поэтому повторная попытка может устранить проблему.UST включает экспоненциальный механизм перехода в пассивный режим для повторных попыток, что увеличивает время между повторными попытками. Сценарий останавливается после трех неудачных попыток.

error.user.belongs_to_another_org

Пример записи журнала (режим отладки):

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"

Совет. Домен, используемый для создания учетной записи, может быть невостребованным/ненадежным в ваших организациях. Зеленый флажок или точка должны отображаться для активных доменов в Admin Console -> Настройки. Если это не так, выполнение процесса востребования домена может решить проблему.

error.user.type_mismatch

Пример записи журнала (режим отладки):

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"

Совет. Предпринимается попытка создать учетную запись типа Federated ID, но каталог создается для Enterprise, или наоборот. Найдите атрибут user_identity_type в файле user-sync-config.yml. Измените значение в соответствии с типом каталога, показанным в Admin Console (Настройки > Идентификация > Домены > Тип каталога значение для данного домена).

Пример записи журнала (режим отладки):

Отсутствующие зависимости

Пример вывода ошибки консоли:

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

Советы:

a) Проверьте, установлена ли в вашей системе 32-разрядная версия Python. Удалите 32-разрядную и установите 64-разрядную версию, чтобы устранить проблему.

b) Проверьте, соответствует ли версия user-sync.pex, загруженная с GitHub, версии Python и типу операционной системы. Например, user-sync-v2.3-win64-py365.zip-файл должен быть загружен для 64-разрядной версии Windows и Python 3.

Не всегда рекомендуется использовать последнюю версию Python. При подборе подходящей для Python версии лучше использовать изначально созданный файл .pex. Посмотрите на суффикс загруженного файла .zip, чтобы определить, какая версия Python будет работать. В примере выше (user-sync-v2.3-win64-py365.zip) можно идентифицировать Python 3.6.5.

Ошибка расшифровки закрытого ключа

Пример записи журнала (режим отладки):

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

Советы:

a) Иногда закрытый ключ может содержать недатированные символы или пустые строки, вставленные по ошибке. Попробуйте удалить пустые строки или восстановить пару закрытого и открытого ключа.

b) Не используйте атрибут umapi_private_key_data, если вы выполняете сценарий в Windows. Вместо этого зашифруйте ключ и сохраните этот пароль в Диспетчере учетных данных.

c) Попробуйте закрытый ключ RSA256 длиной 2048 бит, если вы используете другой формат.

d) Возможно, что вы установили secure_priv_key_pass_key: umapi_private_key_passphrase в файле connector-umapi.yml. В этом случае убедитесь, что запись в Хранилище учетных данных для этого ключа и связанных с ним значений совпадают (см. ниже).

Диспетчер учетных данных Windows

Нет значения для пользователя в безопасном хранилище...

Пример записи журнала (режим отладки):

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"

Советы:

a) Запись в Хранилище учетных данных для umapi_api_key может отсутствовать. Создание записи в Хранилище учетных данных. Справочную документацию можно найти здесь.

b) Возможно, значение было добавлено в Хранилище учетных данных под другой учетной записью пользователя. Однако для текущего пользователя эта запись отсутствует. Добавьте ее, если необходимо, или переключите учетные записи пользователей.

error.internal.exceptionflys / error.unauthorized


		
	





Пример вывода ошибки консоли:

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

Совет. Возможно, в меню Admin Console -> Настройки -> Настройки аутентификации не выбран параметр Самая простая для пользователей (Пароль не устаревает никогда). Если выбран параметр Более надежная или Самая надежная, может истечь срок действия пароля технической учетной записи, связанной с интеграцией.

Для устранения проблемы следует создать новую интеграцию. Убедитесь, что метаданные также обновлены в файле connector-umapi.yml.

Для этого было развернуто исправление, но оно может повлиять на интеграции, созданные до октября 2018 года.

Не удалось установить новое соединение [Errno 10061]

Пример вывода ошибки консоли:

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

Совет.

Это связано с тем, что UST не удается подключиться к общедоступным конечным точкам API. Локальные настройки могут препятствовать доступу  из-за правил брандмауэра, блокировки трафика прокси-сервером, настроек учетных для доступа в Интернет и т. д.

В некоторых ситуациях может помочь добавление этих двух переменных среды:

http_proxy и связанное значение формата http://<host proxy>:<port>

https_proxy и связанное значение формата https://<host proxy>:<port>

В других случаях может помочь разрешение доступа к этим конечным точкам:

ims-na1.adobelogin.com:443

usermanagement.adobe.io:443

Локально проблему можно устранить только путем предоставления доступа к указанным выше конечным точкам для действующей учетной записи.

Метаобласти в JWT не являются подмножеством метаобластей в привязке.

Пример записи журнала (режим отладки):

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

Совет. Откройте созданную вами интеграцию в https://console.adobe.io/projects и просмотрите список API в левом меню. Убедитесь, что API User Management добавлено как служба (отображается в списке). 

Для комбинации учетной записи организации и технической учетной записи не найдено действительных привязок.

Пример записи журнала (режим отладки):

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

Советы:

а) Это может быть вызвано тем, что значение tech_acct в файле connector-umapi.yml соответствует другому значению, а не идентификатору технической учетной записи внутри интеграции в https://console.adobe.io. Проверьте значение идентификатора технической учетной записи из текущей интеграции и скопируйте его в этот файл.

b) Это также может быть вызвано тем, что срок действия общего сертификата из интеграции истек. Обновите закрытый и открытый ключи. Затем загрузите открытый ключ и замените старый закрытый ключ новым. Убедитесь, что путь в файле connector-umapi.yml указывает на правильный файл.

c) Проверьте, выполнена ли интеграция для правильной организации. Выберите организацию в раскрывающемся списке в верхнем левом углу на странице https://console.adobe.io/integrations. Затем проверьте значение идентификатора технической учетной записи для активной интеграции вместе с другими метаданными (идентификатор организации, секретный ключ и идентификатор клиента).

SSL: CERTIFICATE_VERIFY_FAILED

Пример записи журнала (режим отладки):

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)

Совет. Это связано с тем, что на прокси-сервере может быть включена проверка SSL (параметр локальной среды)

Решение 1. Получите сертификат корневого центра сертификации брандмауэра в формате PEM (предположим, что его имя thecert.crt). Если используется формат DER, преобразуйте его в PEM с помощью команды openssl:

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

Примечание. Если вы не уверены, имеет ли файл .crt формат PEM, сначала выполните эти командные строки и посмотрите, какая из них не работает.

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

Если не работает строка с «DER», ваш файл уже имеет формат PEM, поэтому переименуйте thecert.crt в thecert.pem, в противном случае преобразуйте его в PEM, используя первую команду openssl выше.

Затем создайте переменную среды с именем REQUESTS_CA_BUNDLE и присвойте ей значение пути к файлу thecert.pem.

Решение 2. В Windows, когда инструмент запускается не из того драйвера, которой используется ОС и Python. В этом случае не удается получить доступ к пакету сертификатов доверенных корневых центров сертификации. Перемещение всего сценария на диск, на котором установлена ОС, может решить проблему. Если этот вариант не подходит, файл cacert, содержащий все доверенные корневые центры сертификации, следует использовать в качестве цели для переменной env REQUESTS_CA_BUNDLE. Если прокси-сервер проверяет трафик SSL, содержимое сертификата корневого центра сертификации необходимо скопировать в файл cacert.pem для проверки сертификатов.

Примечание. При установке Python по умолчанию пакет сертификатов будет находиться в следующем расположении: C:\Python36\Lib\site-packages\certifi\cacert.pem.

Решение 3. Отключите проверку SSL на стороне прокси-сервера для конечных точек API ims-na1.adobelogin.com и usermanagement.adobe.io.

Группа не найдена [...]

Пример записи журнала (режим отладки):

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

Советы:

а) Эта группа не существует в LDAP с этим именем; исправьте ошибку, добавив правильное имя LDAP группы.

b) Группу не удается найти с указанным значением base_dn (см. файл connector-ldap.yml). Измените значение base_dn, чтобы оно содержало указанную группу (обычно это происходит, когда base_dn указывает на OU).

error.group.not_found

Пример записи журнала (режим отладки):

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"

Совет. Группа пользователей group_name выше не существует на стороне Adobe, поэтому создайте ее. Если целью было установить имя PLC вместо имени группы пользователей, см. эту страницу документации для более наглядного объяснения.

изображение не найдено

Пример записи журнала (режим отладки):

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) 

Совет. Эта ошибка была зарегистрирована в macOS High Sierra при использовании UST v2.3 с  Python 3.7.0. Выполнение команды brew install openssl  в Терминале устранило проблему для этого конкретного сценария.

Не удалось создать пользователя для типа 2 или 3 [...]

Пример записи журнала (режим отладки):

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

Иногда @claimed-domain.com  принадлежит другой организации, которая настроила соединитель Azure или Google для управления синхронизацией учетных записей с Admin Console. Затем этот же домен передается другой организации, которая использует User Sync Tool для синхронизации учетных записей формата @claimed-domain.com.

Причина. Зарегистрированное сообщение появляется, когда инструмент синхронизации извлекает учетную запись
 user@claimed-domain.com с сервера LDAP, чтобы создать ее в дополнительной организации. Однако учетная запись еще не создана/не синхронизирована с основной организацией через соединитель Azure или Google.

Совет. Попробуйте создать/синхронизировать учетную запись user@claimed-domain.com  в организации с помощью соединителя Azure или Google, а затем повторите попытку синхронизации с UST в доверенной организации.

Неожиданный ошибка LDAP при чтении [...]

Пример записи журнала (режим отладки):

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

Возможная причина. Требуемые группы расположены в поддомене, но значение хоста является одним из корневых доменов.

Совет. Измените значение хоста на один из поддоменов, в котором можно найти группы пользователей. Если требуемые пользователи или группы находятся как в корневом домене, так и в его поддомене(-ах), используйте порт глобального каталога в корневом домене. Измените группы в поддомене(-ах), чтобы они были универсальными, а не глобальными. Пример значения хоста с использованием глобального каталога: ldap://domain.local:3268 или ldaps://domain.local:3269

В этом последнем сценарии, если используется порт глобального каталога, убедитесь, что значение base_dn не имеет следующий вид:

base_dn: ""

 Adobe

Получайте помощь быстрее и проще

Новый пользователь?