다음을 통해 공유


온-프레미스 애플리케이션 프로비전 문제 해결

테스트 연결 문제 해결

프로비전 에이전트와 ECMA(Extensible Connectivity) 호스트를 구성한 후에는 Microsoft Entra 프로비전 서비스에서 프로비전 에이전트, ECMA 호스트 및 애플리케이션으로의 연결을 테스트할 차례입니다. 이 엔드투엔드 테스트를 수행하려면 Azure Portal의 애플리케이션에서 연결 테스트를 선택합니다. 초기 에이전트를 할당하거나 연결을 테스트하기 전에 에이전트를 변경한 후 10~20분 정도 기다려야 합니다. 이 시간 이후 연결 테스트에 실패한 경우 다음 문제 해결 단계를 시도합니다.

  1. 에이전트와 ECMA 호스트가 실행되고 있는지 확인합니다.

    1. 에이전트가 설치된 서버에서 시작>실행>Services.msc로 이동하여 서비스를 엽니다.

    2. 서비스에서 Microsoft Entra Connect 프로비전 에이전트, Microsoft ECMA2Host, 서비스가 있는지와 서비스 상태가 실행 중인지 확인합니다.

      ECMA 서비스가 실행 중임을 보여 주는 스크린샷

  2. ECMA 커넥터 호스트 서비스가 요청에 응답하는지 확인합니다.

    1. 에이전트가 설치된 서버에서 PowerShell을 시작합니다.
    2. ECMA 호스트가 설치된 폴더(예: C:\Program Files\Microsoft ECMA2Host)로 변경합니다.
    3. 하위 디렉터리 Troubleshooting으로 변경합니다.
    4. 해당 디렉터리에서 TestECMA2HostConnection.ps1 스크립트를 실행합니다. 메시지가 표시되면 커넥터 이름과 비밀 토큰을 인수로 제공합니다.
      PS C:\Program Files\Microsoft ECMA2Host\Troubleshooting> .\TestECMA2HostConnection.ps1
      Supply values for the following parameters:
      ConnectorName: CORPDB1
      SecretToken: ************
      
    5. 이 스크립트는 ECMA 커넥터 호스트가 작동하고 요청에 응답하고 있는지 확인하기 위해 SCIM GET 또는 POST 요청을 보냅니다. 출력에 HTTP 연결이 성공했다고 표시되지 않으면 서비스가 실행 중이고 올바른 비밀 토큰이 제공되었는지 확인합니다.
  3. Azure Portal에서 애플리케이션으로 이동한 다음, 관리자 연결, 에이전트 드롭다운 목록을 차례로 선택하여 에이전트가 활성 상태인지 확인합니다.

  4. 제공한 비밀 토큰이 온-프레미스 비밀 토큰과 동일한지 확인합니다. 온-프레미스로 이동하여 비밀 토큰을 다시 제공한 다음, Azure Portal에 복사합니다.

  5. Azure Portal에서 애플리케이션에 하나 이상의 에이전트를 할당했는지 확인합니다.

  6. 에이전트를 할당한 후 등록이 완료되도록 10~20분 정도 기다려야 합니다. 연결 테스트는 등록이 완료될 때까지 작동하지 않습니다.

  7. 만료되지 않은 유효한 인증서를 사용하고 있는지 확인합니다. 인증서 만료 날짜를 보려면 ECMA 호스트의 설정 탭으로 이동합니다. 인증서가 만료된 경우 Generate certificate를 클릭하여 새 인증서를 생성합니다.

  8. VM의 작업 표시줄로 이동한 다음, Microsoft Entra Connect 프로비전 에이전트를 검색하여 프로비전 에이전트를 다시 시작합니다. 중지를 마우스 오른쪽 단추로 클릭하고 시작을 선택합니다.

  9. ECMA 커넥터 호스트 및 프로비저닝 에이전트를 다시 시작하고 초기 가져오기가 완료되기를 기다린 후에도 The ECMA host is currently importing data from the target application이 계속 표시되는 경우 Azure Portal에서 애플리케이션에 대한 프로비저닝 구성을 취소하고 시작해야 할 수 있습니다.

  10. Azure Portal에서 테넌트 URL을 제공하는 경우 URL이 다음 패턴을 따르는지 확인합니다. localhost를 해당 호스트 이름으로 바꿀 수 있지만 필수는 아닙니다. connectorName을 ECMA 호스트에서 지정한 커넥터 이름으로 바꿉니다. 오류 메시지 '잘못된 리소스'는 일반적으로 URL이 예상된 형식을 따르지 않음을 나타냅니다.

    https://localhost:8585/ecma2host_connectorName/scim
    
  11. 다음 폴더로 이동하여 프로비전 에이전트 로그를 검토합니다. C:\ProgramData\Microsoft\Azure AD Connect Provisioning Agent\Trace

    1. 다음 오류가 표시되면 서비스 계정 "NT SERVICE\AADConnectProvisioningAgent"를 "Performance Log Users"라는 로컬 그룹에 추가하세요. 이는 계정이 원하는 레지스트리 키 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib에 액세스할 수 있도록 허용하여 "메트릭 수집기를 초기화할 수 없음" 예외 오류를 제거합니다.
Unable to initialize metrics collector, exception: 'System.UnauthorizedAccessException: Access to the registry key 'Global' is denied.
  1. ECMA 호스트를 구성할 때 Windows 서버의 호스트 이름과 일치하는 제목의 인증서를 제공해야 합니다. ECMA 호스트에서 생성한 인증서는 이 작업을 자동으로 수행하지만 테스트 목적으로만 사용해야 합니다.
Error code: SystemForCrossDomainIdentityManagementCredentialValidationUnavailable

Details: We received this unexpected response from your application: Received response from Web resource. Resource: https://localhost/Users?filter=PLACEHOLDER+eq+"8646d011-1693-4cd3-9ee6-0d7482ca2219" Operation: GET Response Status Code: InternalServerError Response Headers: Response Content: An error occurred while sending the request. Please check the service and try again.

ECMA 호스트를 구성하거나, 이벤트 뷰어에서 로그를 보거나, ECMA 호스트 서비스를 시작할 수 없음

다음 문제를 해결하려면 ECMA 호스트 구성 마법사를 관리자 권한으로 실행합니다.

  • ECMA 호스트 마법사를 열 때 오류가 표시됩니다.

    ECMA 마법사 오류 스크린샷

  • ECMA 호스트 마법사를 구성할 수 있지만 ECMA 호스트 로그를 볼 수 없습니다. 이 경우 관리자 권한으로 ECMA 호스트 구성 마법사를 열고 종단 간 커넥터를 설정해야 합니다. 기존 커넥터를 내보낸 후 다시 가져오면 이 단계를 간소화할 수 있습니다.

    호스트 로그 스크린샷

  • ECMA 호스트 마법사를 구성할 수 있지만 ECMA 호스트 서비스를 시작할 수 없습니다.

    호스트 서비스 스크린샷

자세한 로깅 켜기

기본적으로 ECMA 커넥터 호스트의 switchValueVerbose로 설정되어 있습니다. 이 설정은 문제 해결에 도움이 되는 자세한 로깅을 내보냅니다. 내보내는 로그 수를 오류로만 제한하려는 경우 세부 정보 표시를 Error로 변경할 수 있습니다. Windows 통합 인증을 없이 SQL 커넥터를 사용하는 경우 연결 문자열이 로그에 내보내지지 않도록 하려면 switchValueError로 설정하는 것이 좋습니다. 세부 정보를 오류로 변경하려면 아래와 같이 두 위치 모두에서 switchValue를 "오류"로 업데이트합니다.

자세한 서비스 로깅의 파일 위치는 C:\Program Files\Microsoft ECMA2Host\Service\Microsoft.ECMA2Host.Service.exe.config입니다.

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <startup>  
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /> 
    </startup> 
    <appSettings> 
      <add key="Debug" value="true" /> 
    </appSettings> 
    <system.diagnostics> 
      <sources> 
    <source name="ConnectorsLog" switchValue="Error"> 
          <listeners> 
            <add initializeData="ConnectorsLog" type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ConnectorsLog" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, Callstack"> 
              <filter type=""/> 
            </add> 
          </listeners> 
        </source> 
        <!-- Choose one of the following switchTrace:  Off, Error, Warning, Information, Verbose --> 
        <source name="ECMA2Host" switchValue="Error"> 
          <listeners>  
            <add initializeData="ECMA2Host" type="System.Diagnos

마법사 로깅의 파일 위치는 C:\Program Files\Microsoft ECMA2Host\Wizard\Microsoft.ECMA2Host.ConfigWizard.exe.config입니다.

      <source name="ConnectorsLog" switchValue="Error"> 
        <listeners> 
          <add initializeData="ConnectorsLog" type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ConnectorsLog" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, Callstack"> 
            <filter type=""/> 
          </add> 
        </listeners> 
      </source> 
      <!-- Choose one of the following switchTrace:  Off, Error, Warning, Information, Verbose --> 
      <source name="ECMA2Host" switchValue="Error"> 
        <listeners> 
          <add initializeData="ECMA2Host" type="System.Diagnostics.EventLogTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ECMA2HostListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, Callstack" /> 

ECMA 호스트 캐시 쿼리

ECMA 호스트에는 ECMA 호스트 마법사의 속성 페이지에서 지정한 일정에 따라 업데이트되는 애플리케이션의 사용자 캐시가 있습니다. 캐시를 쿼리하려면 아래 단계를 수행합니다.

  1. 디버그 플래그를 true로 설정합니다.

    디버그 플래그를 true로 설정하면 ECMA 호스트에서 인증이 사용하지 않도록 설정됩니다. 캐시 쿼리가 완료되면 false로 다시 설정하고 ECMA 호스트 서비스를 다시 시작해야 합니다.

    상세 서비스 로깅의 파일 위치는 C:\Program Files\Microsoft ECMA2Host\Service\Microsoft.ECMA2Host.Service.exe.config입니다.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
       <startup>  
           <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /> 
       </startup> 
       <appSettings> 
         <add key="Debug" value="true" /> 
       </appSettings> 
    
    
  2. Microsoft ECMA2Host 서비스를 다시 시작합니다.

  3. ECMA 호스트가 대상 시스템에 연결될 때까지 기다렸다가 연결된 각 시스템에서 해당 캐시를 다시 읽습니다. 연결된 시스템에 많은 사용자가 있는 경우 이 가져오기 프로세스는 몇 분 정도 걸릴 수 있습니다.

  4. {connector name}을 ECMA 호스트의 속성 페이지에 지정된 커넥터의 이름으로 바꿔서 ECMA 호스트가 설치된 서버에서 이 엔드포인트를 쿼리합니다. https://localhost:8585/ecma2host_{connectorName}/scim/cache.

    1. 에이전트가 설치된 서버에서 PowerShell을 시작합니다.
    2. ECMA 호스트가 설치된 폴더(예: C:\Program Files\Microsoft ECMA2Host)로 변경합니다.
    3. 하위 디렉터리 Troubleshooting으로 변경합니다.
    4. 해당 디렉터리에서 TestECMA2HostConnection.ps1 스크립트를 실행하고 커넥터 이름과 ObjectTypePathcache를 인수로 제공합니다. 메시지가 표시되면 해당 커넥터에 대해 구성된 비밀 토큰을 입력합니다.
      PS C:\Program Files\Microsoft ECMA2Host\Troubleshooting> .\TestECMA2HostConnection.ps1 -ConnectorName CORPDB1 -ObjectTypePath cache
      Supply values for the following parameters:
      SecretToken: ************
      
    5. 이 스크립트는 ECMA 커넥터 호스트가 작동하고 요청에 응답하고 있는지 확인하기 위해 SCIM GET 요청을 보냅니다. 출력에 HTTP 연결이 성공했다고 표시되지 않으면 서비스가 실행 중이고 올바른 비밀 토큰이 제공되었는지 확인합니다.
  5. 디버그 플래그를 다시 false로 설정하거나 캐시 조회를 완료한 후 설정을 제거합니다.

  6. Microsoft ECMA2Host 서비스를 다시 시작합니다.

대상 특성이 누락됨

프로비저닝 서비스는 대상 애플리케이션에서 특성을 자동으로 검색합니다. Azure Portal의 대상 특성 목록에 대상 특성이 없는 경우 다음 문제 해결 단계를 수행합니다.

  1. ECMA 호스트 구성의 특성 선택 페이지를 검토하여 특성이 선택되었는지 확인하여 Azure Portal에 노출되도록 합니다.
  2. ECMA 호스트 서비스가 실행 중인지 확인합니다.
  3. 엔터프라이즈 애플리케이션에 에이전트를 할당하고, 테스트 연결 단계를 완료하고, 관리자 자격 증명을 저장한 후 브라우저를 새로 고칩니다. 이렇게 하면 프로비전 서비스가 /schemas 요청을 수행하고 대상 특성을 검색하도록 강제합니다.
  4. ECMA 호스트 로그를 검토하여 /schemas 요청이 수행되었는지 확인하고 응답의 특성을 검토합니다. 이 정보는 문제 해결을 지원하는 데 중요합니다.

이벤트 뷰어의 로그를 zip 파일로 수집

포함된 스크립트를 사용하여 Zip 파일의 이벤트 로그를 캡처하고 내보낼 수 있습니다.

  1. 에이전트가 설치된 서버에서 시작 메뉴의 PowerShell을 마우스 오른쪽 단추로 클릭하고 Run as administrator를 선택합니다.
  2. ECMA 호스트가 설치된 폴더(예: C:\Program Files\Microsoft ECMA2Host)로 변경합니다.
  3. 하위 디렉터리 Troubleshooting으로 변경합니다.
  4. 해당 디렉터리에서 CollectTroubleshootingInfo.ps1 스크립트를 실행합니다.
  5. 스크립트는 이벤트 로그가 포함된 해당 디렉터리에 ZIP 파일을 만듭니다.

이벤트 뷰어에서 이벤트 검토

ECMA 커넥터 호스트 스키마 매핑이 구성되면 들어오는 연결을 수신 대기하도록 서비스를 시작합니다. 그런 다음, 들어오는 요청을 모니터링합니다.

  1. 시작 메뉴를 선택하고 이벤트 뷰어를 입력한 다음, 이벤트 뷰어를 선택합니다.
  2. 이벤트 뷰어에서 애플리케이션 및 서비스 로그를 펼친 다음, Microsoft ECMA2Host 로그를 선택합니다.
  3. 커넥터 호스트에서 변경 내용을 수신하면 이벤트가 애플리케이션 로그에 기록됩니다.

일반 오류

오류 해상도
파일이나 어셈블리 ‘file:///C:\Program Files\Microsoft ECMA2Host\Service\ECMA\Cache\8b514472-c18a-4641-9a44-732c296534e8\Microsoft.IAM.Connector.GenericSql.dll’ 또는 해당 종속성 중 하나를 로드할 수 없습니다. 액세스가 거부되었습니다. 네트워크 서비스 계정에 캐시 폴더에 대한 ‘모든 권한’이 있는지 확인하세요. 계정에 사용 권한이 있지만 .NET이 커넥터 DLL의 복사본을 만들려고 시도하는 경우 DLL을 전역 어셈블리 캐시에 추가해야 할 수 있습니다.
개체 DN의 LDAP 스타일이 잘못되었습니다. DN: username@domain.com" 또는 Target Site: ValidByLdapStyle ECMA 호스트의 ‘연결’ 페이지에서 ‘DN이 앵커입니다.’ 확인란이 선택되어 있지 않은지 확인하세요. ECMA 호스트의 ‘개체 유형’ 페이지에서 ‘자동 생성됨’ 확인란이 선택되어 있는지 확인하세요. 자세한 내용은 앵커 특성 및 고유 이름 정보를 참조하세요.
ExportErrorCustomContinueRun. objectClass: 구문당 값 번호가 잘못되었습니다. objectClass 특성에 대한 프로비전 특성 매핑에 디렉터리 서버에서 인식하는 개체 클래스의 이름만 포함되는지 확인합니다.

들어오는 SCIM 요청 이해

프로비전 에이전트 및 커넥터 호스트에 대해 Microsoft Entra ID가 수행하는 요청은 SCIM 프로토콜을 사용합니다. 호스트에서 앱으로 수행된 요청은 앱이 지원하는 프로토콜을 사용합니다. 호스트에서 에이전트와 Microsoft Entra ID로 수행된 요청은 SCIM을 사용합니다. 자습서: Microsoft Entra ID에서 SCIM 엔드포인트에 대한 프로비전 개발 및 계획에서 SCIM 구현에 대해 자세히 알아볼 수 있습니다.

Microsoft Entra 프로비전 서비스는 일반적으로 각 프로비전 주기를 시작할 때, 주문형 프로비전을 수행하기 전 및 연결 테스트가 선택될 때의 세 가지 상황에서 더미 사용자를 확인하기 위해 get-user 호출을 수행합니다. 이 검사는 대상 엔드포인트를 사용할 수 있고 Microsoft Entra 프로비전 서비스에 SCIM 호환 응답을 반환하는지 확인합니다.

프로비저닝 에이전트 문제를 해결하려면 어떻게 하나요?

다음과 같은 오류 시나리오가 발생할 수 있습니다.

에이전트를 시작하지 못함

다음과 같은 오류 메시지가 표시될 수 있습니다.

“‘Microsoft Entra Connect 프로비전 에이전트’ 서비스를 시작하지 못했습니다. 시스템 서비스를 시작할 수 있는 권한이 있는지 확인하세요.”

이 문제는 일반적으로 설치 관리자(NT SERVICE\AADConnectProvisioningAgent)에서 만든 로컬 NT 서비스 로그인 계정에 권한이 적용되지 않도록 하는 그룹 정책으로 인해 발생합니다. 이러한 사용 권한은 서비스를 시작하는 데 필요합니다.

이 문제를 해결하려면

  1. 관리자 계정으로 서버에 로그인합니다.
  2. 서비스를 탐색하거나 시작>실행>Services.msc로 이동하여 서비스를 엽니다.
  3. 서비스에서 Microsoft Entra Connect 프로비전 에이전트를 두 번 클릭합니다.
  4. 로그온 탭에서 이 계정을 도메인 관리자로 변경합니다. 그런 다음, 서비스를 다시 시작합니다.

이 테스트는 에이전트가 포트 443을 통해 Azure와 통신할 수 있는지 확인합니다. 브라우저를 열고 에이전트가 설치된 서버에서 이전 URL로 이동합니다.

에이전트 시간이 초과하거나 인증서가 잘못됨

에이전트를 등록하려고 시도할 때 다음과 같은 오류 메시지가 나타날 수 있습니다.

에이전트가 시간 초과되었음을 보여 주는 스크린샷

이 문제는 일반적으로 에이전트가 하이브리드 ID 서비스에 연결할 수 없기 때문에 발생하며 HTTP 프록시를 구성해야 합니다. 이 문제를 해결하려면 아웃바운드 프록시를 구성합니다.

프로비저닝 에이전트는 아웃바운드 프록시 사용을 지원합니다. 에이전트 구성 파일 C:\Program Files\Microsoft Azure AD Connect Provisioning Agent\AADConnectProvisioningAgent.exe.config를 편집하여 에이전트를 구성할 수 있습니다. 파일의 끝 쪽으로 닫는 </configuration> 태그 바로 앞에 다음 줄을 추가합니다. [proxy-server][proxy-port] 변수를 프록시 서버 이름 및 포트 값으로 바꿉니다.

    <system.net>
        <defaultProxy enabled="true" useDefaultCredentials="true">
            <proxy
                usesystemdefault="true"
                proxyaddress="http://[proxy-server]:[proxy-port]"
                bypassonlocal="true"
            />
        </defaultProxy>
    </system.net>

보안 오류로 인해 에이전트를 등록하지 못함

클라우드 프로비저닝 에이전트를 설치할 때 오류 메시지가 나타날 수 있습니다.

이 문제는 일반적으로 에이전트가 로컬 PowerShell 실행 정책으로 인해 PowerShell 등록 스크립트를 실행할 수 없기 때문에 발생합니다.

이 문제를 해결하려면 서버에서 PowerShell 실행 정책을 변경합니다. 머신 및 사용자 정책이 Undefined 또는 RemoteSigned로 설정되어 있어야 합니다. Unrestricted으로 설정된 경우 이 오류가 표시됩니다. 자세한 내용은 PowerShell 실행 정책을 참조하세요.

로그 파일

기본적으로 에이전트는 최소한의 오류 메시지 및 스택 추적 정보를 내보냅니다. 추적 로그는 C:\ProgramData\Microsoft\Azure AD Connect Provisioning Agent\Trace 폴더에서 확인할 수 있습니다.

에이전트 관련 문제 해결을 위해 자세한 정보를 수집하려면 다음을 수행합니다.

  1. AADCloudSyncToolsMicrosoft Entra Connect 클라우드 동기화용 PowerShell 모듈에 설명된 대로 AADCloudSyncTools PowerShell 모듈을 설치합니다.

  2. Export-AADCloudSyncToolsLogs PowerShell cmdlet을 사용하여 정보를 캡처합니다. 다음 스위치를 사용하여 데이터 수집을 세부적으로 튜닝합니다. 올바른 사용:

    • SkipVerboseTrace(기본값 = false): 자세한 정보 로그를 캡처하지 않고 현재 로그만 내보내려는 경우
    • TracingDurationMins(기본값 = 3분): 다른 캡처 기간을 지정하려는 경우
    • OutputPath(기본값 = 사용자 문서): 다른 출력 경로를 지정하려는 경우

Microsoft Entra ID를 사용하면 클라우드에서 프로비전 서비스를 모니터링하고 온-프레미스에서 로그를 수집할 수 있습니다. 프로비저닝 서비스는 동기화 프로세스의 일부로 평가된 각 사용자에 대해 로그를 내보냅니다. 이러한 로그는 Azure Portal UI, API 및 Log Analytics를 통해 사용할 수 있습니다. ECMA 호스트는 온-프레미스 로그도 생성합니다. 수신된 각 프로비전 요청과 Microsoft Entra ID로 전송된 응답을 보여 줍니다.

에이전트 설치 실패

  • System.ComponentModel.Win32Exception: The specified service already exists 오류는 이전 ECMA 호스트가 제거되지 않았음을 나타냅니다. 호스트 애플리케이션을 제거합니다. 프로그램 파일로 이동한 다음, ECMA 호스트 폴더를 제거합니다. 백업을 위해 구성 파일을 저장하는 것이 좋습니다.

  • 다음 오류는 필수 조건이 충족되지 않았음을 나타냅니다. .NET 4.7.1이 설치되어 있는지 확인합니다.

      Method Name : <>c__DisplayClass0_1 : 
      RegisterNotLoadedAssemblies Error during load assembly: System.Management.Automation.resources.dll
      --------- Outer Exception Data ---------
      Message: Could not load file or assembly 'file:///C:\Program Files\Microsoft ECMA2Host\Service\ECMA\System.Management.Automation.resources.dll' or one of its dependencies. The system cannot find the file specified.
    
    

SQL을 사용하여 ECMA 커넥터 호스트를 구성하려고 하면 잘못된 LDAP 스타일 DN 오류가 발생함

기본적으로 일반 SQL 커넥터는 첫 번째 연결 페이지에서 ‘DN이 앵커입니다.’ 특성이 선택되어 있지 않으면 LDAP 스타일을 사용하여 DN을 채울 것으로 예상합니다. Invalid LDAP style DN 또는 Target Site: ValidByLdapStyle 오류 메시지에서 DN 필드에는 커넥터가 예상하는 LDAP 스타일 DN이 아닌 UPN(사용자 계정 이름)이 포함됨을 알 수 있습니다.

이 오류 메시지를 해결하려면 커넥터를 구성할 때 개체 형식 페이지에서 자동 생성이 선택되어 있는지 확인합니다.

자세한 내용은 앵커 특성 및 고유 이름 정보를 참조하세요.

다음 단계