다음을 통해 공유


선언된 구성 리소스 액세스

WinDC(Windows 선언된 구성) 리소스 액세스는 디바이스 구성을 관리하고 정책을 적용하여 디바이스가 원하는 상태로 유지되도록 하는 데 사용됩니다. 조직에서 보안, 규정 준수 및 운영 효율성을 유지하는 것이 중요합니다. WinDC 클라우드 서비스는 리소스의 원하는 상태를 디바이스로 보내는 데 사용됩니다. 여기서 디바이스는 리소스 구성 상태를 적용하고 유지 관리할 책임이 있습니다.

CSP(구성 서비스 공급자) 는 리소스 액세스를 구성하는 데 중요한 역할을 하며 디바이스와 WinDC 프로토콜 간의 인터페이스 역할을 합니다. 구성을 배포하고 적용하는 일관되고 표준화된 접근 방식을 제공합니다. CSP는 다음을 비롯한 다양한 리소스 액세스 시나리오를 지원합니다.

디바이스의 WinDC 스택은 구성 요청을 처리하고 RA의 핵심인 원하는 상태를 유지 관리합니다. 구성 요청의 효율성, 정확도 및 적용은 효과적인 RA에 매우 중요합니다. 리소스 액세스는 WinDC와 원활하게 통합되어 향상된 확장성 및 효율성으로 클라우드를 통해 디바이스를 관리하는 확장된 방법을 제공합니다.

  • 효율성: 일괄 처리 기반 처리는 서버 리소스 사용을 최소화하고 대기 시간을 줄입니다.
  • 정확도: WinDC 클라이언트 스택은 디바이스의 구성 노출 영역을 이해하여 지속적인 업데이트를 효과적으로 처리할 수 있도록 합니다. 클라우드 서비스에서 전달한 구성 변경 내용의 정확한 실행을 보장합니다.
  • 정책 적용: 디바이스 간에 일관되고 대규모로 조직 정책을 적용하고 유지 관리하여 규정 준수 및 균일한 구성을 보장합니다. 이러한 측면을 통해 조직은 디바이스에서 원하는 보안 상태를 유지할 수 있습니다.

리소스 액세스 지침

이러한 지침은 개발자와 테스터가 안전하고 효율적이며 일관된 방식으로 RA(리소스 액세스) 구성을 구현하는 모범 사례와 예제를 제공합니다. 정책 및 규정 준수 요구 사항을 준수하면서 네트워크 보안을 강화하고 최종 사용자에 대한 리소스 액세스를 최적화하는 것을 목표로 합니다.

  • 구성 무결성: 중단 없이 안전한 리소스 액세스를 지원하려면 디바이스 및 사용자 간에 일관된 구성을 보장합니다.
  • 상태 유효성 검사: 구성 상태를 모니터링하여 리소스 액세스 설정의 올바른 애플리케이션을 확인합니다.
  • 프로필 관리: 필요에 따라 추가, 업데이트 및 삭제하여 사용자 프로필을 효과적으로 관리하여 리소스에 대한 액세스를 제어하고 보안을 유지합니다.
  • 로그 및 감사: 작업 및 변경 내용에 대한 로그 및 감사 내역을 활용하여 문제 해결 및 규정 준수에 도움이 됩니다.
  • 드리프트 검색 및 수정: RA 정책 준수를 유지하려면 드리프트(구성 또는 동작 변경)를 지속적으로 모니터링하고 수정 작업을 수행합니다.
  • 보안 및 개인 정보: 사용자 데이터 및 리소스를 보호하려면 구성에서 강력한 보안 및 개인 정보 보호 조치를 구현합니다.

이러한 지침을 따르고 DeclaredConfiguration CSP의 구문을 이해하면 보안 및 규정 준수를 유지하면서 RA 구성을 효과적으로 구현하고 관리할 수 있습니다.

WinDC 문서

DeclaredConfiguration CSPDocument 리프 노드 값은 요청을 설명하는 XML 문서입니다. 리소스 액세스를 위해 지정된 구성 데이터가 있는 샘플 WinDC 문서는 다음과 같습니다.

<DeclaredConfiguration context="user" schema="1.0" id="DCA000B5-397D-40A1-AABF-40B25078A7F9" osdefinedscenario="MSFTVPN" checksum="A0">
  <CSP name="./Vendor/MSFT/VPNv2">
    <URI path="Test_SonicWall/TrafficFilterList/0/Protocol" type="int">2</URI>
    <URI path="Test_SonicWall/TrafficFilterList/0/Direction" type="chr">outbound</URI>
  </CSP>
</DeclaredConfiguration>

지원되는 값 osdefinedscenario 만 사용할 수 있습니다. 지원되지 않는 값은 과 유사한 오류 메시지를 생성합니다 Invalid scenario name.

osdefinedscenario 다음을 사용하는 것이 좋습니다.
MSFTWiredNetwork WiredNetwork
MSFTResource ActiveSync
MSFTVPN VPN 및 VPNv2
MSFTWifi Wifi
MSFTInventory 인증서 인벤토리
MSFTClientCertificateInstall SCEP, PFX, 대량 템플릿 데이터

이러한 osdefinedscenario 값에는 다음 태그 및 특성이 필요합니다.

  • XML 태그는 <CSP> 대상으로 지정되는 CSP를 설명합니다.

    이 태그에는 다음과 같은 특성이 있습니다.

    특성 설명
    name 대상 CSP OMA-URI를 지정합니다.
  • XML 태그는 <URI> 원하는 값과 함께 CSP 설정 노드를 지정합니다.

    이 태그에는 다음과 같은 특성이 있습니다.

    특성 설명
    path 설정 경로
    type 데이터 형식 설정

참고

시나리오 설정의 대상은 WinDC 컨텍스트와 일치해야 합니다. 및 WinDC 컨텍스트<LocURI> 정의된 CSP scope 또는 User이어야 Device 합니다.

WinDC 리소스 액세스 구문

osdefinedscenario 예제

  • Wifi에 대한 부분 MSFTWifi 예제:

    <DeclaredConfiguration context="Device" schema="1.0" id="10249228-e719-58bf-b459-060de45240f1" osdefinedscenario="MSFTWifi" checksum="11111111">
    <CSP name="./Vendor/MSFT/WiFi">
    
  • ActiveSync의 부분 MSFTResource 예제:

    <DeclaredConfiguration context="User" schema="1.0" id="33333333-1861-4131-96e8-44444444" osdefinedscenario="MSFTResource" checksum="5555">
    <CSP name="./Vendor/MSFT/ActiveSync">
    

SyncML 예제

표준 OMA-DM SyncML 구문은 Replace, AddDelete와 같은 DeclaredConfiguration CSP 작업을 지정하는 데 사용됩니다. SyncML 요소의 <Data> 페이로드는 XML로 인코딩되어야 합니다. 이 XML 인코딩의 경우 사용할 수 있는 다양한 온라인 인코더가 있습니다. 페이로드 인코딩을 방지하려면 다음 SyncML 예제와 같이 CDATA 섹션 을 사용할 수 있습니다.

리소스 액세스를 위한 VPNv2 프로필 구성

이 예제에서는 VPNv2 CSP를 사용하여 사용자 scope 디바이스에서 Test_SonicWall 라는 VPN 프로필을 구성하는 방법을 보여 줍니다.

<SyncML xmlns="SYNCML:SYNCML1.1">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
        </Target>
        <Data><![CDATA[<?xml version="1.0" encoding="utf-8"?>
            <DeclaredConfiguration context="user" schema="1.0" id="DCA000B5-397D-40A1-AABF-40B25078A7F9" osdefinedscenario="MSFTVPN" checksum="A0">
                <CSP name="./Vendor/MSFT/VPNv2">
                    <URI path="Test_SonicWall/TrafficFilterList/0/Protocol" type="int">2</URI>
                    <URI path="Test_SonicWall/TrafficFilterList/0/Direction" type="chr">outbound</URI>
                    <URI path="Test_SonicWall/TrafficFilterList/1/Protocol" type="int">6</URI>
                    <URI path="Test_SonicWall/TrafficFilterList/1/LocalPortRanges" type="chr">43-54</URI>
                    <URI path="Test_SonicWall/TrafficFilterList/1/RemotePortRanges" type="chr">243-456</URI>
                    <URI path="Test_SonicWall/TrafficFilterList/1/Direction" type="chr">outbound</URI>
                    <URI path="Test_SonicWall/EdpModeId" type="chr">wip.contoso.com</URI>
                    <URI path="Test_SonicWall/RememberCredentials" type="bool">true</URI>
                    <URI path="Test_SonicWall/AlwaysOn" type="bool">true</URI>
                    <URI path="Test_SonicWall/Proxy/AutoConfigUrl" type="chr">https://auto.proxy.com</URI>
                    <URI path="Test_SonicWall/DeviceCompliance/Enabled" type="bool">true</URI>
                    <URI path="Test_SonicWall/DeviceCompliance/Sso/Enabled" type="bool">false</URI>
                    <URI path="Test_SonicWall/PluginProfile/ServerUrlList" type="chr">23.54.3.6;server1,vpn.contoso.com;server2</URI>
                    <URI path="Test_SonicWall/PluginProfile/CustomConfiguration" type="chr">&lt;custom&gt;&lt;/custom&gt;</URI>
                    <URI path="Test_SonicWall/PluginProfile/PluginPackageFamilyName" type="chr">SonicWALL.MobileConnect_e5kpm93dbe93j</URI>
                </CSP>
            </DeclaredConfiguration>
        ]]></Data>
      </Item>
    </Replace>
    <Final />
  </SyncBody>
</SyncML>

리소스 액세스를 위한 VPNv2 프로필 업데이트

이 예제에서는 동일한 WinDC 문서 ID를 사용하지만 새 체크섬("A3")을 사용하는 방법을 보여 줍니다. 라는 Test_SonicwallNew새 VPNv2 프로필을 설치하고 이전 프로필을 삭제합니다.

<SyncML xmlns="SYNCML:SYNCML1.1">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
        </Target>
        <Data><![CDATA[<?xml version="1.0" encoding="utf-8"?>
            <DeclaredConfiguration context="user" schema="1.0" id="DCA000B5-397D-40A1-AABF-40B25078A7F9" osdefinedscenario="MSFTVPN" checksum="A3">
                <CSP name="./Vendor/MSFT/VPNv2">
                    <URI path="Test_SonicWallNew/TrafficFilterList/0/Protocol" type="int">2</URI>
                    <URI path="Test_SonicWallNew/TrafficFilterList/0/Direction" type="chr">outbound</URI>
                    <URI path="Test_SonicWallNew/EdpModeId" type="chr">wip.contoso.com</URI>
                    <URI path="Test_SonicWallNew/RememberCredentials" type="bool">true</URI>
                    <URI path="Test_SonicWallNew/AlwaysOn" type="bool">false</URI>
                    <URI path="Test_SonicWallNew/Proxy/AutoConfigUrl" type="chr">https://auto.proxy.com</URI>
                    <URI path="Test_SonicWallNew/DeviceCompliance/Enabled" type="bool">true</URI>
                    <URI path="Test_SonicWallNew/DeviceCompliance/Sso/Enabled" type="bool">false</URI>
                    <URI path="Test_SonicWallNew/PluginProfile/ServerUrlList" type="chr">23.54.3.8;server1,vpn2.contoso.com;server2</URI>
                    <URI path="Test_SonicWallNew/PluginProfile/PluginPackageFamilyName" type="chr">SonicWALL.MobileConnect_e5kpm93dbe93j</URI>
                </CSP>
            </DeclaredConfiguration>
        ]]></Data>
      </Item>
    </Replace>
    <Final />
  </SyncBody>
</SyncML>

VPNv2 프로필 가져오기

이 예제에서는 를 사용하여 <Get> WinDC 요청의 결과를 검색하는 방법을 보여 줍니다.

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
  <SyncBody>
    <Get>
      <CmdID>1</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Results/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
        </Target>
      </Item>
    </Get>
    <Final />
  </SyncBody>
</SyncML>

응답:

<SyncML xmlns:msft="http://schemas.microsoft.com/MobileDevice/MDM">
  <SyncHdr />
  <SyncBody>
    <Status>
      <CmdID>1</CmdID>
      <MsgRef>1</MsgRef>
      <CmdRef>0</CmdRef>
      <Cmd>SyncHdr</Cmd>
      <Data>200</Data>
    </Status>
    <Status>
      <CmdID>2</CmdID>
      <MsgRef>1</MsgRef>
      <CmdRef>2</CmdRef>
      <Cmd>Get</Cmd>
      <Data>200</Data>
    </Status>
    <Results>
      <CmdID>3</CmdID>
      <MsgRef>1</MsgRef>
      <CmdRef>2</CmdRef>
      <Item>
        <Source>
          <LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Results/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
        </Source>
        <Data>&lt;DeclaredConfigurationResult context="user" schema="1.0" id="DCA000B5-397D-40A1-AABF-40B25078A7F9" osdefinedscenario="MSFTVPN" checksum="A3" result_checksum="9D2ED497C12D2FCEE1C45158D1F7ED8E2DACE210A0B8197A305417882991C978" result_timestamp="2024-08-06T13:54:38Z" operation="Set" state="60"&gt;&lt;CSP name="./Vendor/MSFT/VPNv2" state="60"&gt;&lt;URI path="Test_SonicWallNew/TrafficFilterList/0/Protocol" status="200" state="60" type="int" /&gt;&lt;URI path="Test_SonicWallNew/TrafficFilterList/0/Direction" status="200" state="60" type="chr" /&gt;&lt;URI path="Test_SonicWallNew/EdpModeId" status="200" state="60" type="chr" /&gt;&lt;URI path="Test_SonicWallNew/RememberCredentials" status="200" state="60" type="bool" /&gt;&lt;URI path="Test_SonicWallNew/AlwaysOn" status="200" state="60" type="bool" /&gt;&lt;URI path="Test_SonicWallNew/Proxy/AutoConfigUrl" status="200" state="60" type="chr" /&gt;&lt;URI path="Test_SonicWallNew/DeviceCompliance/Enabled" status="200" state="60" type="bool" /&gt;&lt;URI path="Test_SonicWallNew/DeviceCompliance/Sso/Enabled" status="200" state="60" type="bool" /&gt;&lt;URI path="Test_SonicWallNew/PluginProfile/ServerUrlList" status="200" state="60" type="chr" /&gt;&lt;URI path="Test_SonicWallNew/PluginProfile/PluginPackageFamilyName" status="200" state="60" type="chr" /&gt;&lt;/CSP&gt;&lt;/DeclaredConfigurationResult&gt;</Data>
      </Item>
    </Results>
    <Final />
  </SyncBody>
</SyncML>

상태 값을 이해하려면 WinDC 상태를 참조하세요.

VPNv2 프로필 삭제

이 예제에서는 를 사용하여 <Delete> VPNv2 프로필을 설정하는 구성 요청을 제거하는 방법을 보여 줍니다.

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
  <SyncBody>
    <Delete>
      <CmdID>1</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./User/Vendor/MSFT/DeclaredConfiguration/Host/Complete/Documents/DCA000B5-397D-40A1-AABF-40B25078A7F9/Document</LocURI>
        </Target>
      </Item>
    </Delete>
    <Final />
  </SyncBody>
</SyncML>

리소스 소유권

VPN 프로필과 같은 MDM 관리 리소스는 WinDC 문서가 동일한 리소스에 대해 디바이스로 전송될 때 WinDC 관리로 전송/마이그레이션됩니다. 이 리소스는 WinDC 문서가 삭제 되거나 중단될 때까지 WinDC 관리에서 유지 됩니다. 그렇지 않으면 MDM이 SyncML을 사용하여 레거시 MDM 채널을 통해 동일한 리소스를 관리하려고 하면 오류 0x86000031 함께 실패합니다.

MDM ConfigurationManager: Command failure status. Configuraton Source ID: (29c383c5-6e2d-43bf-a741-c63cb7516bb4), Enrollment Type: (MDMDeviceWithAAD), CSP Name: (ActiveSync), Command Type: (Add: from Replace or Add), CSP URI: (./User/Vendor/MSFT/ActiveSync/Accounts/{3b8b9d4d-a24e-4c6d-a460-034d0bfb9316}), Result: (Unknown Win32 Error code: 0x86000031).

대량 템플릿 데이터

대량 템플릿 데이터 시나리오는 일반 ClientCertificateInstall CSP 이상으로 확장됩니다. 특수 대량 서식 파일 문서 형식을 사용합니다. 이 섹션에서는 대량 템플릿 데이터 사용의 구조, 사양 및 결과를 설명합니다.

템플릿 문서

PFXImport 템플릿 문서에는 인증서를 대량으로 가져오는 데 필요한 구조가 포함되어 있습니다. 문서는 필요한 필드와 대량 가져오기에 필요한 형식을 정의해야 합니다.

  • 문서 형식은 이어야 BulkTemplate합니다.
  • URI 경로는 구문을 사용하여 @#pfxThumbprint# 일반 URI와 다르며 동적 노드임을 선언합니다. 동적 노드에 대한 인스턴스 데이터는 나중에 를 사용하여 BulkVariables전송됩니다. 각 동적 노드에는 이 예제의 및 노드와 #@pfxPassword# 같은 @#pfxBlob# 동적 하위 노드가 포함될 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Documents/47e88660-1861-4131-96e8-f32e85011e55/Document</LocURI>
        </Target>
        <Data><![CDATA[<?xml version="1.0" encoding="utf-8"?>
            <DeclaredConfiguration context="Device" schema="1.0" id="47e88660-1861-4131-96e8-f32e85011e55" osdefinedscenario="MSFTResource" checksum="FF356C2C71F6A41F9AB4A601AD00C8B5BC7531576233010B13A221A9FE1BE7A0">
                <ReflectedProperties>
                    <Property name="foo" type="chr">foovalue</Property>
                    <Property name="bar" type="chr">barvalue</Property>
                </ReflectedProperties>
                <CSP name="./Vendor/MSFT/ClientCertificateInstall">
                    <URI path="PFXCertInstall/@#pfxThumbprint#/KeyLocation" type="Int">2</URI>
                    <URI path="PFXCertInstall/@#pfxThumbprint#/PFXCertBlob" type="chr">@#pfxBlob#</URI>
                    <URI path="PFXCertInstall/@#pfxThumbprint#/PFXCertPassword" type="chr">@#pfxPassword#</URI>
                    <URI path="PFXCertInstall/@#pfxThumbprint#/PFXKeyExportable" type="bool">True</URI>
                    <URI path="PFXCertInstall/@#pfxThumbprint#/PfxCertPasswordEncryptionType" type="int">0</URI>
                    <URI path="PFXCertInstall/@#pfxThumbprint#/PfxCertPasswordEncryptionStore" type="chr">SomeValue</URI>
                    <URI path="PFXCertInstall/@#pfxThumbprint#/ContainerName" type="chr"></URI>
                </CSP>
            </DeclaredConfiguration>
        ]]></Data>
      </Item>
    </Replace>
    <Final />
  </SyncBody>
</SyncML>

템플릿 데이터

대량 템플릿 데이터는 아래의 URI를 사용하여 BulkVariables base64로 인코딩된 형식으로 가져올 인증서를 BulkTemplate지정합니다. 템플릿 데이터 문서에는 여러 인스턴스가 포함될 수 있습니다. 각 instance 모든 하위 인스탄스 데이터를 지정해야 합니다.

이 예제에는 두 개의 인스턴스가 있습니다. 각 instance pfxThumbprint, **pfxBlob 및 pfxPassword에 대한 값을 정의합니다.

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
  <SyncBody>
    <Replace>
      <CmdID>3</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Documents/47e88660-1861-4131-96e8-f32e85011e55/BulkVariables/Value</LocURI>
        </Target>
        <Data><![CDATA[
            <InstanceBlob schema="1.0">
                <Instance>
                    <InstanceData variable="pfxThumbprint">813A171D7341E1DA90D4A01878DD5328D3519006</InstanceData>
                    <InstanceData variable="pfxBlob">pfxbase64BlobValue1</InstanceData>
                    <InstanceData variable="pfxPassword">Password1</InstanceData>
                </Instance>
                <Instance>
                    <InstanceData variable="pfxThumbprint">813A171D7341E1DA90D4A01878DD5328D3519007</InstanceData>
                    <InstanceData variable="pfxBlob">pfxbase64BlobValue2</InstanceData>
                    <InstanceData variable="pfxPassword">Password2</InstanceData>
                </Instance>
            </InstanceBlob>
        ]]></Data>
      </Item>
    </Replace>
    <Final />
  </SyncBody>
</SyncML>

템플릿 결과

대량 템플릿 데이터 문서가 성공적으로 처리되면 지정된 인증서를 제공된 암호 및 키 위치와 함께 정의된 저장소로 가져옵니다.

  • 가져오기 성공: 인증서를 디바이스의 인증서 저장소로 올바르게 가져옵니다.
  • 오류 처리: 가져오기 프로세스 중에 발생하는 모든 오류에는 관련 상태 코드 또는 문제 해결을 위한 메시지가 포함됩니다.

요청:

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.1">
  <SyncBody>
    <Get>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Results/47e88660-1861-4131-96e8-f32e85011e55/Document</LocURI>
        </Target>
      </Item>
    </Get>
    <Final />
  </SyncBody>
</SyncML>

응답:

<SyncML xmlns:msft="http://schemas.microsoft.com/MobileDevice/MDM">
  <SyncHdr />
  <SyncBody>
    <Status>
      <CmdID>1</CmdID>
      <MsgRef>1</MsgRef>
      <CmdRef>0</CmdRef>
      <Cmd>SyncHdr</Cmd>
      <Data>200</Data>
    </Status>
    <Status>
      <CmdID>2</CmdID>
      <MsgRef>1</MsgRef>
      <CmdRef>2</CmdRef>
      <Cmd>Get</Cmd>
      <Data>200</Data>
    </Status>
    <Results>
      <CmdID>3</CmdID>
      <MsgRef>1</MsgRef>
      <CmdRef>2</CmdRef>
      <Item>
        <Source>
          <LocURI>./Device/Vendor/MSFT/DeclaredConfiguration/Host/BulkTemplate/Results/47e88660-1861-4131-96e8-f32e85011e55/Document</LocURI>
        </Source>
        <Data>&lt;DeclaredConfigurationResult context="Device" schema="1.0" id="47e88660-1861-4131-96e8-f32e85011e55" osdefinedscenario="MSFTResource" checksum="FF356C2C71F6A41F9AB4A601AD00C8B5BC7531576233010B13A221A9FE1BE7A0" result_checksum="DD8C1C422D50A410C2949BA5F495C2C42CC4B0C7B498D1B43318C503F6CEF491" result_timestamp="2024-08-06T13:26:23Z" operation="Set" state="60"&gt;
            &lt;CSP name="./Vendor/MSFT/ClientCertificateInstall" state="60"&gt;
                &lt;URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/KeyLocation" status="200" state="60" type="int" /&gt;
                &lt;URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/PFXCertBlob" status="200" state="60" type="chr" /&gt;
                &lt;URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/PFXCertPassword" status="200" state="60" type="chr" /&gt;
                &lt;URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/PFXKeyExportable" status="200" state="60" type="bool" /&gt;
            &lt;/CSP&gt;&lt;CSP name="./Vendor/MSFT/ClientCertificateInstall" state="60"&gt;
                &lt;URI path="PFXCertInstall/CertPFX1/KeyLocation" status="200" state="60" type="int" /&gt;
                &lt;URI path="PFXCertInstall/CertPFX1/PFXCertBlob" status="200" state="60" type="chr" /&gt;
                &lt;URI path="PFXCertInstall/CertPFX1/PFXCertPassword" status="200" state="60" type="chr" /&gt;
                &lt;URI path="PFXCertInstall/CertPFX1/PFXKeyExportable" status="200" state="60" type="bool" /&gt;
            &lt;/CSP&gt;
            &lt;/DeclaredConfigurationResult&gt;
        </Data>
      </Item>
    </Results>
    <Final />
  </SyncBody>
</SyncML>