Condividi tramite


Accesso dichiarato alle risorse di configurazione

L'accesso alle risorse di configurazione dichiarata da Windows (WinDC) viene usato per gestire le configurazioni dei dispositivi e applicare criteri per garantire che i dispositivi rimangano nello stato desiderato. È fondamentale per mantenere la sicurezza, la conformità e l'efficienza operativa nelle organizzazioni. Il servizio cloud WinDC viene usato per inviare lo stato desiderato di una risorsa al dispositivo in cui il dispositivo ha la responsabilità di applicare e gestire lo stato di configurazione della risorsa.

I provider di servizi di configurazione svolgono un ruolo fondamentale per la configurazione dell'accesso alle risorse e fungono da interfaccia tra il dispositivo e il protocollo WinDC. Offrono un approccio coerente e standardizzato alla distribuzione e all'applicazione delle configurazioni. I CSP supportano vari scenari di accesso alle risorse, tra cui:

Lo stack WinDC nel dispositivo elabora le richieste di configurazione e mantiene lo stato desiderato, che è la chiave per l'archiviazione con ridondanza geografica. L'efficienza, l'accuratezza e l'imposizione delle richieste di configurazione sono fondamentali per un'autorità di registrazione efficace. L'accesso alle risorse si integra perfettamente con WinDC, offrendo un metodo esteso per la gestione dei dispositivi tramite il cloud con scalabilità ed efficienza migliorate.

  • Efficienza: l'elaborazione basata su batch riduce al minimo l'utilizzo delle risorse del server e la latenza.
  • Accuratezza: lo stack client WinDC riconosce l'area di superficie di configurazione del dispositivo, consentendo una gestione efficace degli aggiornamenti continui. Garantisce un'esecuzione precisa delle modifiche di configurazione comunicate dal servizio cloud.
  • Imposizione dei criteri: applicare e gestire i criteri dell'organizzazione tra dispositivi in modo coerente e su larga scala, garantendo conformità e configurazione uniforme. Questo aspetto consente alle organizzazioni di mantenere il comportamento di sicurezza desiderato tra i dispositivi.

Linee guida per l'accesso alle risorse

Queste linee guida forniscono procedure consigliate ed esempi per sviluppatori e tester per implementare configurazioni di accesso alle risorse in modo sicuro, efficiente e coerente. L'obiettivo è migliorare la sicurezza di rete e ottimizzare l'accesso alle risorse per gli utenti finali, rispettando al temporizzazione dei criteri e dei requisiti di conformità.

  • Integrità della configurazione: per supportare l'accesso alle risorse ininterrotto e sicuro, garantire configurazioni coerenti tra dispositivi e utenti.
  • Convalida dello stato: monitorare lo stato delle configurazioni per verificare l'applicazione corretta delle impostazioni di accesso alle risorse.
  • Gestione dei profili: gestire in modo efficace i profili utente aggiungendo, aggiornando ed eliminando in base alle esigenze, per controllare l'accesso alle risorse e mantenere la sicurezza.
  • Log e controllo: utilizzare log e audit trail per le operazioni e le modifiche per facilitare la risoluzione dei problemi e la conformità.
  • Rilevamento e correzione delle deviazioni: per mantenere la conformità con i criteri di rastrellamento, monitorare continuamente la deriva (modifiche nella configurazione o nel comportamento) e intraprendere azioni correttive.
  • Sicurezza e privacy: per proteggere i dati e le risorse degli utenti, implementare misure di sicurezza e privacy avanzate nelle configurazioni.

Seguendo queste linee guida e comprendendo la sintassi del provider di servizi di configurazione DeclaredConfiguration, è possibile implementare e gestire in modo efficace le configurazioni ra, mantenendo al tempo stesso la sicurezza e la conformità.

Documento WinDC

Il valore del Document nodo foglia nel provider di servizi di configurazione DeclaredConfiguration è un documento XML che descrive la richiesta. Ecco un documento WinDC di esempio con i dati di configurazione specificati per l'accesso alle risorse.

<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>

È possibile usare solo i valori supportati per osdefinedscenario . I valori non supportati generano un messaggio di errore simile a Invalid scenario name.

osdefinedscenario Uso consigliato con
MSFTWiredNetwork WiredNetwork
MSFTResource ActiveSync
MSFTVPN VPN e VPNv2
MSFTWifi Wifi
MSFTInventory Inventario certificati
MSFTClientCertificateInstall Dati del modello SCEP, PFX, bulk

Questi osdefinedscenario valori richiedono i tag e gli attributi seguenti.

  • Il <CSP> tag XML descrive il provider di servizi di configurazione di destinazione.

    Questo tag ha gli attributi seguenti:

    Attributo Descrizione
    name Specifica l'URI OMA CSP di destinazione.
  • Il <URI> tag XML specifica il nodo di impostazione CSP insieme al valore desiderato.

    Questo tag ha gli attributi seguenti:

    Attributo Descrizione
    path Impostazione del percorso
    type Impostazione del tipo di dati

Nota

La destinazione delle impostazioni dello scenario deve corrispondere al contesto WinDC. L'ambito CSP definito in e il <LocURI>contesto WinDC devono essere Device entrambi o User.

Sintassi di accesso alle risorse WinDC

Esempi di osdefinedscenario

  • Esempio parziale MSFTWifi per Wifi:

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

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

Esempi di SyncML

La sintassi Standard OMA-DM SyncML viene usata per specificare le operazioni CSP DeclaredConfiguration, ad esempio Sostituisci, Aggiungi ed Elimina. Il payload dell'elemento di <Data> SyncML deve essere codificato in XML. Per questa codifica XML, è possibile usare diversi codificatori online. Per evitare la codifica del payload, è possibile usare la sezione CDATA come illustrato negli esempi SyncML seguenti.

Configurare un profilo VPNv2 per l'accesso alle risorse

Questo esempio illustra come usare il provider di servizi di configurazione VPNv2 per configurare un profilo VPN denominato Test_SonicWall nel dispositivo nell'ambito Utente .

<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>

Aggiornamento di un profilo VPNv2 per l'accesso alle risorse

Questo esempio illustra come usare lo stesso ID documento WinDC, ma con un nuovo checksum("A3"). Installa un nuovo profilo VPNv2 denominato Test_SonicwallNewed elimina il profilo precedente.

<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>

Recupero del profilo VPNv2

Questo esempio illustra come usare <Get> per recuperare i risultati della richiesta 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>

Risposta:

<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>

Suggerimento

Per comprendere i valori di stato, vedere Stati WinDC.

Eliminazione del profilo VPNv2

Questo esempio illustra come usare <Delete> per rimuovere la richiesta di configurazione per impostare il profilo 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>

Proprietà delle risorse

Le risorse gestite da MDM, ad esempio un profilo VPN, vengono trasferite/migrate alla gestione WinDC quando un documento WinDC viene inviato al dispositivo per la stessa risorsa. Questa risorsa rimane sotto gestione WinDC fino a quando il documento WinDC non viene eliminato o abbandonato. In caso contrario, quando MDM tenta di gestire la stessa risorsa tramite il canale MDM legacy usando SyncML, ha esito negativo con errore 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).

Dati di modello bulk

Lo scenario dei dati del modello bulk si estende oltre il normale CSP ClientCertificateInstall. Usa un tipo di documento modello bulk speciale. Questa sezione illustra la struttura, la specifica e i risultati dell'uso dei dati del modello bulk.

Documento modello

Un documento modello PFXImport contiene la struttura necessaria per importare i certificati in blocco. Il documento deve definire i campi necessari e il formato necessario per l'importazione bulk.

  • Il tipo di documento deve essere BulkTemplate.
  • Il percorso URI è diverso dagli URI normali usando la @#pfxThumbprint# sintassi, dichiara che si tratta di un nodo dinamico. I dati dell'istanza per i nodi dinamici vengono inviati in un secondo momento usando BulkVariables. Ogni nodo dinamico può contenere sottonodi dinamici, ad esempio i @#pfxBlob# nodi e #@pfxPassword# in questo esempio.
<?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>

Dati modello

I dati del modello bulk specificano i certificati da importare in un formato con codifica base64 usando l'URI BulkVariables in BulkTemplate. Il documento di dati del modello può contenere più istanze. Ogni istanza deve specificare tutti i dati della sottoistanza.

In questo esempio sono presenti due istanze. Ogni istanza definisce i valori per pfxThumbprint, **pfxBlob e 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>

Risultati del modello

Quando il documento dati del modello di massa viene elaborato correttamente, i certificati specificati vengono importati negli archivi definiti con le password e i percorsi delle chiavi specificati.

  • Importazione completata: i certificati vengono importati correttamente negli archivi certificati del dispositivo.
  • Gestione degli errori: eventuali errori rilevati durante il processo di importazione includono codici di stato o messaggi pertinenti per la risoluzione dei problemi.

Richiesta:

<?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>

Risposta:

<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>