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

Область применения: организация.

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

FileNotFoundError: [Errno 2]

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

FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'C:\\Users\\USER\\.pex\\install\\pycryptodome [...]'

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

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

 

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

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

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

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

 

Тайм-аут UMAPI

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

2018-01-01 11:49:42 28102 ПРЕДУПРЕЖДЕНИЕ umapi - Тайм-аут UMAPI... сервис недоступен (код 429 при попытке 1)
2018-01-01 11:49:42 28102 ПРЕДУПРЕЖДЕНИЕ umapi - Следующая попытка через 42 секунды...

Совет: Если тайм-аут меньше 30 минут, эти предупреждающие сообщения появляются, когда достигнута квота API-вызовов в течение одной минуты. UST имеет экспоненциальный механизм перехода в пассивный режим для повторных попыток, что увеличивает время между повторными попытками. Сценарий останавливается после трех неудачных попыток.

Здесь рекомендуется позволить сценарию выполниться до конца.

Если тайм-аут превышает 1000 секунд, это может быть связано с ограничением частоты запуска каждого экземпляра инструмента синхронизации пользователей. Если наблюдается, что экземпляр запускается слишком часто, он будет ограничен на период от 30 до 75 минут. Тайм-аут просто на некоторое время приостанавливает UST (то есть это не критическая ошибка с остановкой), однако UST знает, как восстановиться и продолжить синхронизацию сразу после этого.

Сценарий распознает, когда одновременно запускаются два экземпляра, поэтому новый экземпляр не может быть запущен, пока не завершится работа первоначального. В этом случае в журнале UST может появиться сообщение об ошибке, указывающее на то, что 'процесс уже выполняется'.

Вот несколько рекомендаций для оптимальной производительности в отношении частоты запуска:

  • пересмотрите частоту запланированной задачи и убедитесь, что она настроена на повторение с интервалом не менее 2 часов
  • пересмотрите время запуска запланированной задачи, чтобы она не начиналась в :00 или :30 минут (избегайте пиковой активности)
  • если требуется запускать инструмент чаще, рассмотрите возможность использования UST со стратегией push (дельтой изменений), а не с полной синхронизацией
  • адаптируйте график запуска UST к рабочему дню вашей организации, когда пользователям необходимо предоставление доступа (например, если вашей организации не нужно изменять предоставление доступа пользователям ночью, не запускайте задачи синхронизации в это время)

 

 

error.user.belongs_to_another_org

Пример записи в журнале:

2018-01-01 11:49:42 28102 ОШИБКА umapi.action - Ошибка в requestID: action_1 (Пользователь: {'user': 'myuser@domain2.com', 'requestID':'action_1'}, Команда: {'createFederatedID': {'email': 'myuser@domain2.com', 'country': 'US', 'option': 'ignoreIfAlreadyExists', 'firstname': 'fname', 'lastname': 'lname'}}): код: "error.user.belongs_to_another_org" сообщение: "Нельзя пригласить пользователя из принадлежащего другой организации источника аутентификации"

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

 

 

error.user.type_mismatch

Пример записи в журнале:

2018-01-01 12:34:23 13383 ОШИБКА umapi.action - Ошибка в requestID: action_6 (Пользователь: {'user': 'user@domain.com', 'requestID': 'action_6'}, Команда: {'createEnterpriseID': {'email': 'user@domain.com', 'option': 'updateIfAlreadyExists', 'firstname': 'test', 'lastname': 'user', 'country': 'US'}}): код: "error.user.type_mismatch" сообщение: "Запрошенный тип пользователя для приглашения не соответствует заявленному типу домена"

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

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

Не удалось выполнить PEX-файл, отсутствуют совместимые зависимости для:
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 ОТЛАДКА umapi - umapi: чтение данных закрытого ключа из файла C:\path\to\private.key
2018-01-01 09:52:23 7920 КРИТИЧЕСКАЯ main - umapi configuration.enterprise: Ошибка расшифровки закрытого ключа, либо неверный пароль, либо: Формат ключа RSA не поддерживается

Советы:

а) если проблему не удается быстро идентифицировать, быстрее будет заново выпустить пару ключей

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 КРИТИЧЕСКАЯ main - umapi КРИТИЧЕСКАЯ main - umapi configuration.enterprise: Нет значения в безопасном хранилище для пользователя "someUUIDvalue@AdobeOrg", ключ "umapi_api_key"

Советы:

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

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

 

 

error.internal.exceptionflys / error.unauthorized

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

umapi_client.error.RequestError: Ошибка запроса (401): {"lastPage":false,"result":"error.internal.exceptionflys","message":"Не удалось обменять токен"}

ИЛИ

"umapi_client.error.RequestError: Ошибка запроса (401): {"lastPage":false,"result":"error.unauthorized","message":"Не удалось аутентифицировать предоставленный токен"}"

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

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

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

 

 

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

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

ConnectionError: HTTPSConnectionPool(host='usermanagement.adobe.io', port=443): Превышено максимальное количество попыток для URL: /v2/usermanagement/users/someUUID@AdobeOrg/0?directOnly=True (Вызвано NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x00000000027B9630>: Не удалось установить новое соединение: [Errno 10061] Не удалось установить соединение, так как конечный компьютер отверг запрос на подключение',))

Совет.

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

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

http://<адрес_прокси>:<порт> ИЛИ https://<адрес_прокси>:<порт>

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

ims-na1.adobelogin.com:443

usermanagement.adobe.io:443

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

 

 

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

Пример записи в журнале:

2017-07-07 09:01:37 4916 КРИТИЧЕСКАЯ main - Соединение с организацией [...] по конечной точке https://usermanagement.adobe.io/v2/usermanagement не удалось: Невозможно авторизоваться в https://ims-na1.adobelogin.com/ims/exchange/jwt: Код ответа: 400, Текст ответа: {&quot;error_description&quot;:&quot;Метаобласти в JWT не являются подмножеством метаобластей в привязке.&quot;,&quot;error&quot;:&quot;invalid_scope&quot;}

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

 

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

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

2017-07-07 09:01:37 4916 КРИТИЧЕСКАЯ main - Соединение UMAPI с идентификатором организации 'someUUIDvalue@AdobeOrg' не удалось: Невозможно авторизоваться в https://ims-na1.adobelogin.com/ims/exchange/jwt:
Код ответа: 400, Текст ответа: {&quot;error_description&quot;:&quot;Не найдено действительных привязок для комбинации организации и технической учетной записи&quot;,&quot;error&quot;:&quot;invalid_token&quot;}

Советы:

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

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

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

 

 

SSL: CERTIFICATE_VERIFY_FAILED

Пример записи в журнале:

2017-07-07 09:01:37 4916 КРИТИЧЕСКАЯ main - Соединение UMAPI с идентификатором организации 'someUUIDvalue@AdobeOrg' не удалось: [SSL: 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

Примечание: просмотр содержимого сертификата и наличие строки в кодировке base64 между строками
-----BEGIN CERTIFICATE----- и -----END CERTIFICATE----- означает, что у вас файл в формате PEM.

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

Решение 2. В некоторых случаях в Windows наблюдалось, что эта ошибка может произойти, если инструмент запускается не с того диска, где установлены ОС и Python. Решить проблему можно перемещением всего сценария на диск, на котором установлена ОС. Если этот вариант не подходит, файл cacert.pem, содержащий все корневые сертификаты от удостоверяющих центров, следует скопировать на другой диск, а путь к нему использовать как входное значение для переменной среды 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 ПРЕДУПРЕЖДЕНИЕ ldap - Группа не найдена для: 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 ОШИБКА umapi.action - Ошибка в requestID: action_1 (Пользователь: {'user': 'myuser@domain.com', 'useAdobeID': True, 'requestID': 'action_1'}, Команда: {'add': {'product': ['group_name']}}): код: &quot;error.group.not_found&quot; сообщение: &quot;Группа my_group_name не найдена&quot;

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

 

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

Пример записи в журнале:

2018-09-05 10:58:08 96329 КРИТИЧЕСКАЯ main - Соединение с организацией some_Org_UUID@AdobeOrg по конечной точке https://usermanagement.adobe.io/v2/usermanagement не удалось: 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): Библиотека не загружена: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Ссылка из: /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
  Причина: изображение не найдено
2018-09-05 10:58:08 96329 ИНФО main - ========== Конец выполнения (Версия User Sync: 2.3) (Общее время: 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 ОШИБКА umapi.action - Ошибка в requestID: action_1 (Пользователь: {'user': 'user@claimed-domain.com', 'requestID': 'action_1'}, Команда: {'createFederatedID': {'email': 'user@claimed-domain.com', 'option': 'updateIfAlreadyExists', 'firstname': 'First', 'lastname': 'Last', 'country': 'US'}}): код: &quot;error.internal.create_failed&quot; сообщение: &quot;Не удалось создать человека для типа 2 или 3. Результат Renga - NOT_ALLOWED, Ресурс управляется извне, и токену не хватает цели GROUP_SOURCE_UPDATE.&quot;

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

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

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

 

 

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

Пример записи в журнале:

2018-09-05 10:58:08 96329 6348 КРИТИЧЕСКАЯ main - Неожиданный сбой LDAP при чтении информации о группе: {'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: ""

 

error.organization.invalid_id

Пример записи в журнале:

2020-08-20 12:00:00 1892 ОШИБКА main - Необработанное исключение
    raise RequestError(result)
umapi_client.error.RequestError: Ошибка запроса (401): {&quot;lastPage&quot;:false,&quot;result&quot;:&quot;error.organization.invalid_id&quot;,
&quot;message&quot;:&quot;UNAUTHORIZED&quot;}

Эта ошибка наблюдалась в старых интеграциях.

Решение: создайте новую интеграцию (или проект) на https://developer.adobe.com/console/projects, рядом с существующей, используемой для той же цели. Новая интеграция предоставит новые учетные данные, поэтому обязательно обновите их в файле connector-umapi.yml. Вполне возможно, что keypair (закрытый/открытый ключ) будет переиздан, поэтому новый закрытый ключ должен заменить существующий.

 

 

Не удалось создать человека типа createFederatedID

Пример записи в журнале:

2021-01-01 18:00:00 14063 ОШИБКА umapi.action - Ошибка в requestID: action_19 (Пользователь: {'user': 'some_user', 'domain': some.domain', 'requestID': 'action_19'}, Команда: {'createFederatedID': {'email': 'some_user@some.domain', 'option': 'ignoreIfAlreadyExists', 'firstname': 'FName', 'lastname': 'LName, 'country': 'GB'}}): код: &quot;error.internal.create_failed&quot; сообщение: &quot;Не удалось создать пользователя типа createFederatedID&quot;

Это общая ошибка для нескольких причин, но обычная проблема заключается в том, что домен, используемый в действии создания, находится под влиянием настройки синхронизации Azure или Google.

Как проверить: войдите в Admin Console с учетной записью системного администратора, откройте меню «Настройки», затем нажмите внутри каталога, содержащего домен, затем нажмите на вкладку меню «Синхронизация»

Присутствует ли карточка источника синхронизации в меню Синхронизация?

Если Да, решение зависит от того, как должна продолжаться синхронизация:

-> если синхронизацию должен выполнять коннектор Azure или Google, продолжите настройку источника синхронизации и полностью удалите UST

-> если синхронизацию должен выполнять UST, нажмите кнопку «Перейти в настройки», затем — кнопку «Удалить синхронизацию» в нижней части страницы; после этого UST должен начать работать как обычно

Если Нет, возможно, что текущий UST работает с консолью, в которой рассматриваемый домен получил доверие из другой консоли (владеющей организации). В такой другой организации может быть включена синхронизация Azure или Google, что может приводить к текущей ошибке. Решение в этом случае — сначала синхронизировать учетную запись во владеющей организации/консоли, а затем использовать UST для создания/добавления учетной записи в текущей консоли.

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

 

Adobe, Inc.

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

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