사용자 동기화 도구 - 일반적인 오류

UST를 실행할 때 발생하는 몇 가지 일반적인 오류 및 이를 해결할 팁 목록

FileNotFoundError: [Errno 2]

샘플 콘솔 오류 출력:

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

경로가 256자를 초과하여 Windows에 표시될 수 있습니다.

팁: C:\pex 값을 사용하여 이름이 PEX_ROOT인 환경 변수를 작성합니다(스크립트를 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 명령어 라인을 실행해야 합니다.

 

UMAPI timeout

샘플 콘솔 오류 출력:

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 -> 설정의 활성 도메인에 대한 초록 플래그 또는 점이 표시됩니다 . 그렇지 않은 경우, 도메인 요청 프로세스를 완료하면 문제를 해결할 수 있습니다.

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"

팁: federatedID 유형의 계정을 만들려 했지만 [디렉토리]가 기업용으로 생성되거나 그 반대로 생성됩니다. user-sync-config.yml 파일에서 user_identity_type 특성을 검색하십시오. Admin Console에 표시된 [디렉토리] 유형에 따라 값을 수정하십시오(지정된 도메인의 설정 > ID > 도메인 > 디렉토리 유형 값).

샘플 로그 항목(디버그 모드):

Missing dependencies

샘플 콘솔 오류 출력:

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 버전 및 OS 유형에 맞는지 확인합니다. 예: user-sync-v2.3-win64-py365.zip은 Windows 64비트 및 Python 3용으로 다운로드합니다.

최신 버전의 Python을 사용하는 것이 항상 좋은 것은 아닙니다. Python 버전에 일치하기 위해 .pex가 먼저 작성되며 이는 바람직합니다. 다운로드한 .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를 설정할 수 있습니다. 이 경우, 이 값과 연결된 값에 대한 [자격 증명 저장소]의 항목이 일치하는지 확인합니다(아래 참조).

Windows 자격 증명 관리자

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 끝점에 연결할 수 없는 것과 관련이 있습니다. 방화벽 규칙, 프록시 차단 트래픽, 인터넷 액세스를 위한 계정 설정 등의 로컬 설정으로 인해 액세스가 되지 않을 수 있습니다.

경우에 따라 다음과 같은 두 가지 환경 변수를 추가하면 도움이 될 수 있습니다.

http_proxy및 관련 형식 값 http://<호스트 프록시>:<포트>

https_proxy 및 연결된 형식 값 https://<호스트 프록시>:<포트>

다른 경우, 이러한 끝점에 대한 액세스를 허용하면 도움이 될 수 있습니다.

ims-na1.adobelogin.com:443

usermanagement.adobe.io:443

실행 중인 계정에 대해 위의 끝점에 대한 액세스를 지워 로컬에서만 해결할 수 있습니다.

The metascopes in the JWT are not a subset of the metascopes in the binding

샘플 로그 항목(디버그 모드):

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: 방화벽의 CA 인증서를 PEM 형식으로 가져옵니다(해당 이름이 thecert.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의 이름을 thecert.pem 으로 바꾸거나, 그렇지 않으면 위의 첫 번째 openssl 명령어 라인을 사용하여 PEM으로 변환합니다.

그런 다음 REQUESTS_CA_ BUNDLE이라는 환경 변수를 만들고 이 값을 tecert.pem 파일의 경로로 설정합니다.

솔루션 2: Windows에서 OS와 Python이 설치된 드라이버와 다른 드라이버를 사용하여 도구를 실행하는 경우입니다. 이 경우 신뢰할 수 있는 루트 CA 인증서의 번들에 연결할 수 없습니다. OS가 있는 드라이브에 있는 전체 스크립트를 이동하는 것이 해결책이 될 수 있습니다. 이렇게 할 수 없는 경우, 신뢰할 수 있는 모든 루트 CA를 포함하는 캐시 파일을 REQUESTS_CA_BUNDLE env 변수의 대상으로 사용해야 합니다. 프록시에서 SSL 트래픽을 검사하는 경우, 루트 CA 인증서의 내용을 cacert.pem 파일 내에 복사해야 인증서를 확인할 수 있습니다.

참고: 기본 Python 설치 시 C:\Python36\Lib\site-packages\certifi\cacert.pem에 인증서 번들이 포함됩니다.

솔루션 3: API 끝점 ims-na1.adobelogin.com 및 usermanagement.adobe.io에 대한 프록시 측의 SSL 검사를 비활성화합니다.

No group found [...]

샘플 로그 항목(디버그 모드):

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를 가리키는 경우 주로 발생).

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"

팁: 위의 출력에 있는 user-group group_name은 Adobe 측에 없으므로 이 항목을 만듭니다. 사용자 그룹 대신 PLC의 이름을 설정하려는 경우에는 문서 페이지에서 자세한 설명을 참조하십시오.

image not found

샘플 로그 항목(디버그 모드):

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) 

팁: 이 오류는 Python 3.7.0을 사용하는 UST v2.3 사용 시 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 서버에서
user@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: ""

Adobe 로고

내 계정 로그인