Microsoft Entra 인증 워크플로

적용 대상: Configuration Manager(현재 분기)

이 문서는 Microsoft Entra ID에 조인된 Windows 디바이스의 Configuration Manager 클라이언트 설치 및 등록 프로세스에 대한 기술 참조입니다. 디바이스 인증에 대한 워크플로 프로세스를 자세히 설명합니다.

참고

Windows 클라이언트는 Microsoft Entra 테넌트를 조인할 때 WPJ(작업 공간 조인) 인증서를 받습니다. 인증서를 찾을 수 없는 경우 Configuration Manager 클라이언트는 Microsoft Entra 토큰을 요청할 수 없습니다. 토큰이 없으면 클라이언트는 Configuration Manager 사이트 시스템에서 Microsoft Entra 인증에 Configuration Manager 보안 토큰 서비스(CCM_STS) 통신 채널을 사용할 수 없습니다.

클라이언트 설치

이 워크플로 샘플에서는 다음 ccmsetup 명령줄 속성을 사용하여 인터넷을 통해 Windows 디바이스에 Configuration Manager 클라이언트를 설치했습니다.

CCMHOSTNAME="CMG.CLOUDAPP.NET/CCM_Proxy_MutualAuth/72186325152220500" SMSSITECODE="MEM"

Microsoft Entra 인증을 사용하는 CcmSetup의 워크플로 다이어그램

1. ccmsetup에서 정보 요청 Microsoft Entra

인터넷에서 설치된 클라이언트는 Microsoft Entra 인증을 사용하려면 특정 명령줄 속성이 필요합니다. 인터넷 ccmsetup의 명령줄에 이러한 속성을 포함할 수 있지만 필수는 아닙니다. Microsoft Entra 속성을 사용하지 않으면 ccmsetup은 CMG(클라우드 관리 게이트웨이)에서 및 AADRESOURCEURI 속성을 요청합니다AADCLIENTAPPID. 디바이스의 Microsoft Entra TenantID를 참조로 사용합니다. Configuration Manager 클라이언트의 TenantID를 온보딩하지 않은 경우 CMG는 클라이언트 설치를 계속하기 위해 ccmsetup에 필요한 속성을 제공하지 않습니다.

다음 항목은 클라이언트의 ccmsetup.log 에 기록됩니다.

Getting AAD info from CMG 'CMG.CLOUDAPP.NET'
SMS CCM 5.0: Host=CMG.CLOUDAPP.NET, Path=/CCM_Proxy_ServerAuth/AADAuthInfo?TenantID=9aaf466a-3f40-4468-b3cd-f0010f21f05a, Port=443, Protocol=https, CcmTokenAuth=0, Flags=0x1304, Options=0xe0
Created connection on port 443
Enabled SSL revocation check.

중요

ccmsetup 중에 디바이스는 CMG 서버 인증 인증서의 유효성을 검사해야 합니다. 체인 유효성 검사를 위해 CMG 서버 인증 인증서에 대한 루트 CA(인증 기관) 인증서를 클라이언트에서 사용할 수 있어야 합니다. PKI를 사용하는 경우 루트 CA가 인터넷에 게시되지 않은 경우 루트 CA 인증서를 디바이스의 루트 CA 저장소에 추가합니다.

루트 CA CRL(인증서 해지 목록)이 인터넷에 게시되지 않은 경우 ccmsetup 명령줄에 매개 변수를 추가 /nocrlcheck 합니다.

2. 토큰 요청 Microsoft Entra

Windows Azure AD 도메인 가입 디바이스에서 ccmsetup은 Microsoft Entra 속성을 사용하여 ADALOperation 공급자를 호출하는 Microsoft Entra 토큰을 요청합니다. 다음 항목은 클라이언트의 ccmsetup.log 에 기록됩니다.

Getting AAD (device) token with: ClientId = 0b7c8ab3-9ea1-4ffa-b2b9-8ffdd944bd8b, ResourceUrl = https://ConfigMgrService, AccountId = https://login.microsoftonline.com/common/oauth2/token

디바이스 토큰 요청이 실패하면 ccmsetup은 Microsoft Entra 사용자 토큰을 요청하기 위해 뒤로 돌아갑니다. 디바이스가 Microsoft Entra 디바이스 또는 사용자 토큰을 가져올 수 없는 경우 ccmsetup은 계속되지 않습니다.

참고

디바이스에 유효한 PKI 클라이언트 인증 인증서가 있는 경우 ccmsetup은 항상 인증서를 선호합니다. 이 경우 클라이언트는 PKI 클라이언트로 설치되고 Microsoft Entra 인증을 사용하지 않습니다.

WAM token request failed. Status 5, Details 'AAD WAM extension error'
Failed to get AAD token..
Unknown error (Error: D0090016; Source: Unknown)
Failed to get AAD token for 'S-1-5-18' from WAM API. Error 0xd0090016
Falling back to get user 'S-1-5-21-1527250992-855612568-2252598708-1604' token for system...
Getting AAD (user) token with: ClientId = 0b7c8ab3-9ea1-4ffa-b2b9-8ffdd944bd8, ResourceUrl = https://ConfigMgrService, AccountId = 149FC29A-ECE3-123-A3C1-123456F035A6E
Retrieved AAD token for AAD user 'e8838041-db7a-42d5-b9ae-78813910e4cc'

3. 클라이언트 토큰 요청 Configuration Manager

클라이언트는 Microsoft Entra 토큰을 사용하여 CCM(Configuration Manager 클라이언트) 토큰을 요청합니다. ccmsetup과 사이트 간의 운영 통신은 CCM 토큰을 권한 부여 토큰으로 사용합니다(CcmTokenAuth=1).

3.1 클라이언트가 CCM 토큰 요청을 CMG로 보냅니다.

다음 항목은 클라이언트의 ccmsetup.log 에 기록됩니다.

Getting CCM Token from STS server 'cmg.cloudapp.net/CCM_PROXY_MutualAuth/72186325152220500'
Getting CCM Token from https://cmg.cloudapp.net/CCM_PROXY_MutualAuth/72186325152220500/CCM_STS

CMG 연결 지점으로 3.2 CMG 전달

다음 항목은 CMG VM instance CMGService.log에 기록됩니다.

RequestUri: /CCM_PROXY_SERVERAUTH/72057594037937981/CCM_STS  RequestCount: 1  RequestSize: 1974 Bytes  ResponseCount: 1  ResponseSize: 1566 Bytes  AverageElapsedTime: 218 ms~~  $$<CMGService><06-24-2020 15:31:46.376+00><thread=4992 (0x1380)>

Configuration Manager CMGService.log를 5분마다 사이트 서버 로그 폴더와 CMG-<CMGname>-ProxyService_IN_<%>-CMGService.log동기화합니다.

3.3 CMG 연결점은 CMG 클라이언트 요청을 관리 지점 클라이언트 요청으로 변환합니다.

다음 항목은 CMG 연결 지점 역할을 호스트하는 사이트 시스템의 SMS_CLOUD_PROXYCONNECTOR.log (자세한 정보 표시 모드)에 기록됩니다.

SMS_CLOUD_PROXYCONNECTOR    Switched to internal URL. Replaced 'https://CMG.CLOUDAPP.NET/CCM_Proxy_MutualAuth/72186325152220500/CCM_STS' in   'https://CMG.CLOUDAPP.NET/CCM_Proxy_MutualAuth/72186325152220500/CCM_STS' with 'https://MP.MYCORP.COM/CCM_STS' and got 'https:///MP.MYCORP.COM/CCM_STS~~

3.4 관리 지점은 사이트 데이터베이스에서 사용자 토큰을 확인합니다.

다음 항목은 클라이언트 요청을 처리하는 관리 지점을 호스트하는 사이트 시스템의 CCM_STS.log 에 기록됩니다.

ProcessRequest - Start
Incoming request URL: https://MP.MYCORP.COM/CCM_STS
Validated AAD token. TokenType: UDA TenantId: 2ca9a796-a1a6-43ec-88f1-5935b32155c5 UserId: e8838041-db7a-42d5-b9ae-78813910e4cc DeviceId: 8d2b4ff9-0172-4998-9851-b5324303385f OnPrem_UserSid: S-1-5-21-1527250992-855612568-2252598708-1604 OnPrem_DeviceSid:  
TokenType is UDA
Created SCCM token, token type: UDA, hierarchyId: 8ed3174b-e814-41b5-b51c-fb368f0d4003, userId: 23bbbba2-702e-4db4-8fd9-3b4fe3a5175d, deviceId: GUID:13E80CEF-5698-4C63-9ED6-E58FBFF78C38
Issued token
Return token to client

4. 콘텐츠 위치 요청

클라이언트가 CCM 토큰을 가져오면 캐시하고 사용하여 ccmsetup.cab 사이트 정보 및 콘텐츠 위치를 요청합니다. 디바이스가 클라이언트 콘텐츠를 다운로드하면 설치가 시작됩니다. 다음 항목은 클라이언트의 ccmsetup.log 에 기록됩니다.

Cached encrypted token for 'S-1-5-18'. Will expire at '06/25/2020 08:29:35'
ccmsetup: Host=CMG.cloudapp.net, Path=/CCM_Proxy_ServerAuth7981/ccm_system_tokenauth/request, Port=443, Protocol=https, CcmTokenAuth=1, Flags=0x4100, Options=0xe0
Created connection on port 443
Sending location request to 'cmg.cloudapp.net/CCM_PROXY_MutualAuth/72186325152220500' with payload '< Request >
Appending CCM Token to the header.
Received message '<SiteInfoReply SchemaVersion="1.00">  < reply > </SiteInfoReply>'
     ...
Checking the URL 'https://CMG.cloudapp.net/CCM_PROXY_MutualAuth/72186325152220500/CCM_Client/ccmsetup.cab
ccmsetup: Host=CMG.cloudapp.net, Path=/CCM_Proxy_ServerAuth/72057594037937995/CCM_Client
Appending CCM Token to the header.
Found a valid online MP 'https://CMG.cloudapp.net/CCM_PROXY_MutualAuth/72186325152220500
Searching for DP locations from MP(s)...
CCMSETUP bootstrap from Internet: 1
Sending message body '<ContentLocationRequest SchemaVersion="1.00"  BGRVersion="1"> ...
The location 'https://CMG.cloudapp.net/downloadrestservice.svc/getcontentxmlsecure?pid=CS100001&cid=CS100001
     ...
Installing version 5.00.8968.1000 of the client with product code {66653948-0717-4D50-B0B9-ED66FDED2DDB}
Running installation package
Package:     C:\WINDOWS\ccmsetup\{E6F27809-FF66-4BAA-B0FB-E4A154A6A388}\client.msi

참고

클라이언트가 콘텐츠 사용 CMG에서 콘텐츠를 찾으면 ccmsetup은 클라우드 스토리지에서 콘텐츠를 다운로드합니다. 최신 클라이언트 버전을 클라우드에서 사용할 수 없는 경우 CMG 요청을 통해 관리 지점에서 콘텐츠를 다운로드합니다.

클라이언트 등록

Microsoft Entra 인증을 사용한 클라이언트 등록의 워크플로 다이어그램

1. 클라이언트 요청 등록 Configuration Manager

ccmsetup이 Configuration Manager 클라이언트를 성공적으로 설치하면 등록이 초기화됩니다. 다음 항목은 클라이언트의 ClientIDManagerStartup.log 에 기록됩니다.

AADJoinStatusTask: Client hasn't been registered yet.
RegEndPoint: Event notification: CCM_RemoteClient_Reassigned
RegEndPoint: Received notification for site assignment change from '<none>' to 'MEM'.
     ...
[RegTask] - Starting registration, attempt 1.
[RegTask] - Client is not registered. Sending registration request for GUID:C66EE0FD-08E7-4B38-B282-7E6954B71139 ...
Registering client using AAD auth.

2. 클라이언트를 등록하기 위한 Microsoft Entra 토큰 요청 Configuration Manager

클라이언트는 Microsoft Entra 인증을 사용하여 등록할 새 Microsoft Entra 토큰을 요청합니다. 디바이스 토큰을 선호하지만 사용할 수 없는 경우 클라이언트는 다시 Microsoft Entra 사용자 토큰을 요청합니다. 다음 항목은 클라이언트의 ADALOperationProvider.log 에 기록됩니다.

Getting AAD (user) token with: ClientId = 0b7c8ab3-9ea1-4ffa-b2b9-8ffdd944bd8, ResourceUrl = https://ConfigMgrService, AccountId = 9756a359-f76a-47d5-8662-9a837012fc35
Retrieved AAD token for AAD user 'e8838041-db7a-42d5-b9ae-78813910e4cc'

3. 등록 요청

관리 지점의 등록 구성 요소는 클라이언트 등록 프로세스를 처리합니다. 클라이언트는 등록 메시지를 MP_ClientRegistration 엔드포인트로 보냅니다.

3.1 CMG는 클라이언트 등록 요청을 관리 지점으로 전달합니다.

다음 항목은 클라이언트 요청을 처리하는 관리 지점을 호스트하는 사이트 시스템의 MP_RegistrationManager.log 에 기록됩니다.

Registering device using AAD auth: DeviceId='8d2b4ff9-0172-4998-9851-b5324303385f ', TenantId='c8c82542-203c-4df9-9d86-cdd4dae67e0a'
Processing Registration request from Client 'GUID:C66EE0FD-08E7-4B38-B282-7E6954B71139'

3.2 Configuration Manager 클라이언트가 등록됨

등록에 성공하면 클라이언트는 Microsoft Entra ID 기반 등록에 대한 승인 3을 사용하여 등록 확인 메시지를 받습니다. 다음 항목은 클라이언트의 ClientIDManagerStartup.log 에 기록됩니다.

[RegTask] - Client is registered. Server assigned ClientID is GUID:C66EE0FD-08E7-4B38-B282-7E6954B71139. Approval status 3

4. 클라이언트 토큰 요청 Configuration Manager

서버가 클라이언트 등록을 확인하면 클라이언트는 회신 메시지를 처리합니다. 그런 다음 클라이언트는 새 CCM 토큰을 요청하고 캐시합니다. 다음 항목은 클라이언트의 ClientIDManagerStartup.log 에 기록됩니다.

Getting CCM Token from STS server 'MP.MYCORP.COM'
Getting CCM Token from https://MP.MYCORP.COM/CCM_STS
     ...
Cached encrypted token for 'S-1-5-18'. Will expire at '08/12/2020 18:55:40'

4.1 CMG는 CCM_Token 요청을 가져오고 CMG 연결 지점으로 전달합니다.

다음 항목은 CMG VM의 CMGService.log 및 CMG 연결 지점 역할을 호스트하는 사이트 시스템에 기록됩니다.

RequestUri: /CCM_PROXY_SERVERAUTH/72057594037937981/CCM_STS  RequestCount: 769  RequestSize: 1081595 Bytes  ResponseCount: 769     ResponseSize: 36143 Bytes  AverageElapsedTime: 3945 ms

4.2 CMG 연결점은 CMG 클라이언트 요청을 관리 지점 클라이언트 요청으로 변환합니다.

다음 항목은 CMG 연결 지점 역할을 호스트하는 사이트 시스템의 SMS_CLOUD_PROXYCONNECTOR.log 에 기록됩니다.

MessageID: 3087bd34-b82c-4950-b972-e82bb0fb8385 RequestURI: https://MP.MYCORP.COM/CCM_STS EndpointName: CCM_STS ResponseHeader: HTTP/1.1 200 OK ~~ ResponseBodySize: 0 ElapsedTime: 2 ms

4.3 관리 지점은 사이트 데이터베이스에서 사용자 토큰을 확인합니다.

다음 항목은 클라이언트 요청을 처리하는 관리 지점을 호스트하는 사이트 시스템의 CCM_STS.log 에 기록됩니다.

ProcessRequest - Start
Incoming request URL: https://MP.MYCORP.COM/CCM_STS
Validated AAD token. TokenType: UDA TenantId: 2ca9a796-a1a6-43ec-88f1-5935b32155c5 UserId: e8838041-db7a-42d5-b9ae-78813910e4cc DeviceId: 8d2b4ff9-0172-4998-9851-b5324303385f OnPrem_UserSid: S-1-5-21-1527250992-855612568-2252598708-1604 OnPrem_DeviceSid:  
TokenType is UDA
Created SCCM token, token type: UDA, hierarchyId: 8ed3174b-e814-41b5-b51c-fb368f0d4003, userId: 23bbbba2-702e-4db4-8fd9-3b4fe3a5175d, deviceId: GUID:13E80CEF-5698-4C63-9ED6-E58FBFF78C38
Issued token
Return token to client

서버는 클라이언트 간 통신의 나머지 부분에 대해 클라이언트에 CCM 토큰을 반환합니다.

참고

클라이언트 등록 중에는 인증서 유효성 검사가 항상 실행됩니다. 이 프로세스는 Microsoft Entra 인증 방법을 사용하여 클라이언트를 등록하는 경우에도 발생합니다. 이 동작은 Microsoft Entra 인증이 성공하지 못하는 경우 대체 옵션입니다.

CCM 토큰 갱신

CCM 토큰의 수명은 8시간입니다. 클라이언트가 CCM 토큰이 만료되었거나 만료에 가까운 것을 감지하면 새 CCM 토큰 요청을 보냅니다. CcmMessaging 구성 요소는 이 갱신 프로세스를 처리합니다. 다음 항목은 클라이언트의 CcmMessaging.log 에 기록됩니다.

Sending remote sync message '{BD03DEED-D09A-4E63-ADAD-596376FFB0DA}' to host 'CMG.CLOUDAPP.NET/CCM_Proxy_MutualAuth/72186325152220500' endpoint 'MP_PolicyManager'. Flags 0x280, sender account S-1-5-21-1721254763-462695806-1538882281-3289177
    ...
CCM Token for 'S-1-5-8-1721254763-462695806-1538882281-3289177' (12/23/2019 21:47:24) is already expired or close to expire
Getting CCM Token from https://CMG.CLOUDAPP.NET/CCM_Proxy_ServerAuth/72186325152220500/CCM_STS
Cached encrypted token for 'S-1-5-21-1721254763-462695806-1538882281-3289177'. Will expire at '01/10/2020 17:14:54'
    ...
ccmhttp: Host=CMG.CLOUDAPP.NET, Path=/CCM_Proxy_ServerAuth/72186325152220500/ccm_system_tokenauth/request, Port=443, Protocol=https, CcmTokenAuth=1, Flags=0x4200, Options=0x1e0
Target URL scheme is HTTPS: https://CMG.CLOUDAPP.NET/CCM_Proxy_ServerAuth/72186325152220500/ccm_system_tokenauth/request
Appending CCM Token to the header.
     ...
Message '{BD03DEED-D09A-4E63-ADAD-596376FFB0DA}' got reply message '{36EE3A78-8F6E-425F-BF5C-8460E8E56C33}' to endpoint 'dummy'

일반적인 문제

  • 루트 CA가 없음: 클라이언트는 CMG 서버 인증 인증서의 유효성을 검사하기 위해 루트 CA 인증서가 필요합니다.

  • CRL 검사 사용하도록 설정됨: 인터넷에 CRL을 게시합니다. 또는 ccmsetup에 /NoCRLCheck 매개 변수를 사용합니다. 클라이언트는 사이트 시스템에 대해 CRL(인증서 해지 목록)을 검사 옵션을 사용하지 않도록 설정할 수도 있습니다. 사이트 속성의 통신 보안 탭에서 이 설정을 찾습니다.

  • WPJ 인증서를 찾을 수 없습니다. 디바이스가 Microsoft Entra 조인되어 있는지 확인합니다. dsregcmd.exe사용합니다. 예를 들어 디바이스 dsregcmd /status상태 섹션을 확인합니다.

CMG, CMG 연결 지점 및 관리 지점을 통한 클라이언트 통신은 HTTPS를 통해 실행됩니다. 향상된 HTTP에 대한 사이트를 구성하는 경우에도 HTTP에 대한 관리 지점을 구성할 수 있습니다.

  • 클라이언트는 CMG 서버 인증 인증서를 확인합니다.

    • PKI 인증서: 클라이언트에는 로컬 저장소에 CMG 인증서의 루트 CA가 필요합니다.
    • 타사 인증서: 클라이언트는 인터넷에 게시된 루트 CA를 사용하여 인증서의 유효성을 자동으로 검사합니다.
  • CMG, CMG 연결 지점 및 관리 지점은 Microsoft Entra ID 및 CCM 토큰의 유효성을 검사합니다.

  • CMG 연결 지점과 관리 지점 간의 통신도 양쪽 끝에서 보호됩니다.

    • CMG 연결 지점은 클라이언트 인증 인증서를 사용합니다.
    • MP는 HTTPS 구성에 PKI 인증서를 사용하거나 향상된 HTTP에 자체 서명된 인증서를 사용합니다.