列出运行 UST 时的一些常见错误以及解决这些错误的提示
FileNotFoundError: [Errno 2]
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\USER\\.pex\\install\\pycryptodome [...]'
如果路径长度大于 256 个字符,则在 Windows 上可能会显示此错误。
提示:创建一个名为 PEX_ROOT 的环境变量,其值为 C:\pex(如果脚本是从 C: 驱动器运行的,或者请更改字母以匹配相应的驱动器)。有时,需要重新启动系统才能使该变量生效。
can't open file 'user-sync.pex': [Errno 2]
python: can't open file 'user-sync.pex': [Errno 2] No such file or directory
提示:确保从 user-sync.pex 所在的文件夹运行 python 命令行。
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...
提示:这些是正常的警告消息。当服务繁忙时,服务器会返回 429 HTTP 状态码以作为响应,因此重试可能会解决问题。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 -> 设置”中则会显示一个绿色标志或点。如果不是活动域,完成域声明过程可以解决该问题。
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"
提示:尝试创建一个 federatedID 类型的帐户,但创建的目录供企业使用;或者与之相反,创建一个 EnterpriseID 类型的帐户,但创建的目录供联合用户使用。在 user-sync-config.yml 文件中搜索属性 user_identity_type。根据 Admin Console 中显示的目录类型(给定域的设置 > 身份 > 域 > 目录类型值)修改该值。
Failed to execute PEX file, missing compatible dependencies for:
pyyaml
cryptography
cffi
umapi-client
pycryptodome
pyldap
psutil
user-sync
提示:
a) 检查您系统上安装的 Python 版本是否为 32 位版本。如果是,请卸载 32 位并安装 64 位版本以解决此问题。
b) 检查您从 GitHub 下载的 user-sync.pex 版本是否与 Python 版本和操作系统类型匹配。例如,为 Windows 64 位和 Python 3 下载 user-sync-v2.3-win64-py365.zip。
使用最新版 Python 并非总是最佳选项,尝试将最初创建的 .pex 与 Python 版本匹配会比较合理。根据下载的 .zip 文件的后缀,确定有效的 Python 版本。对于以上示例 (user-sync-v2.3-win64-py365.zip),可以确定使用 Python 3.6.5。
Error decrypting private key
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) 如果您在 Windows 中运行脚本,请不要使用 umapi_private_key_data 属性,而是应加密密钥,并将该密码存储在凭据管理器中。
c) 如果选用其他格式,请尝试使用 RSA256 /2048 位长度的私钥。
d) 您可以在 connector-umapi.yml 文件中设置 secure_priv_key_pass_key: umapi_private_key_passphrase。在这种情况下,请确保凭据存储中该值的项目与关联值的项目相匹配(请参阅下文)。
No value in secure storage for user...
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 年 10 月之前创建的集成。
Failed to establish a new connection [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 端点有关。本地设置可能由于以下原因而阻止访问:防火墙规则、代理阻止流量、帐户的 Internet 访问权限设置等原因。
在某些情况下,添加以下两个环境变量可能会有所帮助:
http_proxy,与之相关的格式值为 http://<host proxy>:<port>
https_proxy,与之相关的格式值为 https://<host proxy>:<port>
在其他情况下,允许访问以下端点可能会有所帮助:
ims-na1.adobelogin.com:443
usermanagement.adobe.io:443
本地只能通过清除运行帐户对上述端点的访问权限来解决该问题。
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 添加为服务(显示在列表中)。
No valid bindings were found for organization and technical account combination
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"}
提示:
a) 这种情况可能是由于以下原因所致:connector-umapi.yml 文件中的 tech_acct 值对应于 https://console.adobe.io 的集成中技术帐户 ID 之外的其他值。验证当前集成中技术帐户 ID 的值,并将其复制到该文件中。
b) 也可能是由于集成的公共证书过期所致。续订私钥和公钥。然后,上传公钥,并使用新密钥替换旧私钥。验证 connector-umapi.yml 文件中的路径是否指向正确的文件。
c) 检查是否为正确的组织执行了集成。在以下网址左上角的下拉列表中选择“组织”:https://console.adobe.io/integrations。然后,验证活动集成的技术帐户 ID 值以及其他元数据(组织 ID、密钥和客户 ID)。
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 格式的防火墙的 CA 证书(假定其名称为 cert.crt)。如果使用的是 DER 格式,请使用 openssl 命令将其转换为 PEM 格式:
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 重命名为 theert.pem。如果此命令行运行成功,则使用上述第一个 openssl 命令行将其转换为 PEM 格式。
接下来,创建名为 REQUESTS_CA_BUNDLE 的环境变量,并将其值设置为 thecert.pem 文件的路径。
解决方案 2:在 Windows 上,假设是从不同于安装操作系统和 Python 的驱动器上运行该工具,那么在这种情况下,它无法访问受信任的根 CA 证书的捆绑包。将整个脚本移至操作系统所在的驱动器上可以解决该问题。如果这种方案不奏效,则应将包含所有受信任根 CA 的 cacert 文件用作 REQUESTS_CA_BUNDLE 环境变量的目标。如果使用代理检查 SSL 通信,则必须在 cacert.pem 文件内复制根 CA 证书的内容以验证证书。
注意:默认情况下,Python 安装将在 C:\Python36\Lib\site-packages\certifi\cacert.pem 路径下包含证书包。
解决方案 3:在代理端,禁用 API 端点 ims-na1.adobelogin.com 和 usermanagement.adobe.io 的 SSL 检查
2018-01-01 09:01:37 4916 WARNING ldap - No group found for: Name_Of_The_Group
提示:
a) LDAP 中不存在具有该确切名称的组;请通过添加该组的正确 LDAP 名称来修复它
b) 在声明的 base_dn 下找不到该组(请参阅 connector-ldap.yml 文件)。更改 base_dn 值,以包含上述组(此方法主要用于 base_dn 指向某些 OU 的情况)。
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)
提示:使用 UST v2.3 和 Python 3.7.0 时,macOS High Sierra 上已经记录了此错误。已通过在终端内运行 brew install openssl 修复了这种特殊情况。
Could not create person for type 2 or 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 的同步。接下来,将同一域委托给使用“用户同步工具”的其他组织来同步格式为 @claimed-domain.com 的帐户
原因:当同步工具从 LDAP 服务器提取
use@claimed-domain.com 帐户以在次级组织中创建该帐户时,会显示记录的消息。但是,系统尚未通过 Azure 或 Google 连接器在主要组织中创建/存储该帐户。
提示:尝试使用 Azure 或 Google 连接器在组织中创建/同步 user@claimed-domain.com 帐户,然后重试与受托人组织中的 UST 同步。
Unexpected LDAP failure reading [...]
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: ""