Partager via


Accès aux ressources de configuration déclaré

L’accès aux ressources de configuration déclarée windows (WinDC) est utilisé pour gérer les configurations des appareils et appliquer des stratégies pour garantir que les appareils restent dans l’état souhaité. Il est essentiel pour maintenir la sécurité, la conformité et l’efficacité opérationnelle dans les organisations. Le service cloud WinDC est utilisé pour envoyer l’état souhaité d’une ressource à l’appareil où celui-ci a la responsabilité d’appliquer et de gérer l’état de configuration des ressources.

Les fournisseurs de services de configuration (CSP) jouent un rôle essentiel dans la configuration de l’accès aux ressources et agissent comme une interface entre l’appareil et le protocole WinDC. Ils fournissent une approche cohérente et standardisée du déploiement et de l’application des configurations. Les csp prennent en charge différents scénarios d’accès aux ressources, notamment :

La pile WinDC sur l’appareil traite les demandes de configuration et maintient l’état souhaité, qui est la clé de la raréa. L’efficacité, la précision et l’application des demandes de configuration sont essentielles pour une RA efficace. L’accès aux ressources s’intègre en toute transparence à WinDC, fournissant une méthode étendue de gestion des appareils via le cloud avec une scalabilité et une efficacité améliorées.

  • Efficacité : le traitement par lots réduit l’utilisation des ressources du serveur et réduit la latence.
  • Précision : la pile cliente WinDC comprend la surface d’exposition de configuration de l’appareil, ce qui permet une gestion efficace des mises à jour continues. Il garantit l’exécution précise des modifications de configuration communiquées par le service cloud.
  • Application des stratégies : appliquez et gérez des stratégies organisationnelles sur les appareils de manière cohérente et à grande échelle, en garantissant la conformité et la configuration uniforme. Cet aspect permet aux organisations de maintenir la posture de sécurité souhaitée sur tous les appareils.

Instructions d’accès aux ressources

Ces instructions fournissent des bonnes pratiques et des exemples permettant aux développeurs et aux testeurs d’implémenter des configurations d’accès aux ressources (RA) de manière sécurisée, efficace et cohérente. Ils visent à améliorer la sécurité réseau et à optimiser l’accès aux ressources pour les utilisateurs finaux tout en respectant les stratégies et les exigences de conformité.

  • Intégrité de la configuration : pour prendre en charge l’accès ininterrompu et sécurisé aux ressources, assurez-vous que les configurations sont cohérentes entre les appareils et les utilisateurs.
  • Validation de l’état : surveillez l’état des configurations pour vérifier l’application correcte des paramètres d’accès aux ressources.
  • Gestion des profils : gérez efficacement les profils utilisateur en ajoutant, mettant à jour et supprimant en fonction des besoins, pour contrôler l’accès aux ressources et maintenir la sécurité.
  • Journaliser et auditer : utilisez les journaux et les pistes d’audit pour les opérations et les modifications afin de faciliter la résolution des problèmes et la conformité.
  • Détection et correction des dérives : pour maintenir la conformité avec les stratégies RA, surveillez en permanence la dérive (modifications de configuration ou de comportement) et prenez des mesures correctives.
  • Sécurité et confidentialité : pour protéger les données et les ressources utilisateur, implémentez des mesures de sécurité et de confidentialité fortes dans les configurations.

En suivant ces instructions et en comprenant la syntaxe du fournisseur de services de configuration DeclaredConfiguration, vous pouvez implémenter et gérer efficacement les configurations RA tout en conservant la sécurité et la conformité.

Document WinDC

La valeur du Document nœud feuille dans le csp DeclaredConfiguration est un document XML qui décrit la requête. Voici un exemple de document WinDC avec les données de configuration spécifiées pour l’accès aux ressources.

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

Seules les valeurs prises en charge pour osdefinedscenario peuvent être utilisées. Les valeurs non prises en charge entraînent un message d’erreur similaire à Invalid scenario name.

osdefinedscenario Recommandé d’utiliser avec
MSFTWiredNetwork WiredNetwork
MSFTResource ActiveSync
MSFTVPN VPN et VPNv2
MSFTWifi Wi-Fi
MSFTInventory Inventaire des certificats
MSFTClientCertificateInstall SCEP, PFX, données de modèle en bloc

Ces osdefinedscenario valeurs nécessitent les balises et attributs suivants.

  • La <CSP> balise XML décrit le fournisseur de services de configuration ciblé.

    Cette balise a les attributs suivants :

    Attribut Description
    name Spécifie l’OMA-URI CSP ciblé.
  • La <URI> balise XML spécifie le nœud de paramètre CSP ainsi que la valeur souhaitée.

    Cette balise a les attributs suivants :

    Attribut Description
    path Définition du chemin d’accès
    type Définition du type de données

Remarque

La cible des paramètres de scénario doit correspondre au contexte WinDC. L’étendue CSP définie dans et le <LocURI>contexte WinDC doit être Device ou User.

Syntaxe d’accès aux ressources WinDC

exemples osdefinedscenario

  • Exemple partiel MSFTWifi pour Wifi :

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

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

Exemples SyncML

La syntaxe SyncML OMA-DM standard est utilisée pour spécifier les opérations CSP DeclaredConfiguration telles que Remplacer, Ajouter et Supprimer. La charge utile de l’élément syncML <Data> doit être encodée au format XML. Pour cet encodage XML, vous pouvez utiliser différents encodeurs en ligne. Pour éviter d’encoder la charge utile, vous pouvez utiliser la section CDATA , comme indiqué dans les exemples SyncML suivants.

Configurer un profil VPNv2 pour l’accès aux ressources

Cet exemple montre comment utiliser le fournisseur de services de configuration VPNv2 pour configurer un profil VPN nommé Test_SonicWall sur l’appareil dans l’étendue Utilisateur .

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

Mise à jour d’un profil VPNv2 pour l’accès aux ressources

Cet exemple montre comment utiliser le même ID de document WinDC, mais avec une nouvelle somme de contrôle (« A3 »). Il installe un nouveau profil VPNv2 nommé Test_SonicwallNewet supprime l’ancien profil.

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

Obtention du profil VPNv2

Cet exemple montre comment utiliser <Get> pour récupérer les résultats de la requête 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>

Réponse :

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

Astuce

Pour comprendre les valeurs d’état, consultez États WinDC.

Suppression du profil VPNv2

Cet exemple montre comment utiliser <Delete> pour supprimer la demande de configuration pour définir le profil 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>

Propriété de la ressource

Les ressources gérées par GPM, telles qu’un profil VPN, sont transférées/migrées vers la gestion WinDC lorsqu’un document WinDC est envoyé à l’appareil pour la même ressource. Cette ressource reste sous gestion WinDC jusqu’à ce que le document WinDC soit supprimé ou abandonné. Sinon, lorsque GPM tente de gérer la même ressource via le canal MDM hérité à l’aide de SyncML, il échoue avec une erreur 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).

Données de modèle en bloc

Le scénario de données de modèle en bloc s’étend au-delà du fournisseur de services de configuration ClientCertificateInstall standard. Il utilise un type de document de modèle en bloc spécial. Cette section couvre la structure, la spécification et les résultats de l’utilisation des données de modèle en bloc.

Modèle de document

Un document de modèle PFXImport contient la structure nécessaire à l’importation de certificats en bloc. Le document doit définir les champs nécessaires et le format requis pour l’importation en bloc.

  • Le type de document doit être BulkTemplate.
  • Le chemin de l’URI est différent des URI standard en utilisant la @#pfxThumbprint# syntaxe . Il déclare qu’il s’agit d’un nœud dynamique. Les données d’instance pour les nœuds dynamiques sont envoyées ultérieurement à l’aide de BulkVariables. Chaque nœud dynamique peut contenir des sous-nœuds dynamiques, tels que les @#pfxBlob# nœuds et #@pfxPassword# dans cet exemple.
<?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>

Données de modèle

Les données de modèle en bloc spécifient les certificats à importer dans un format codé en base64 à l’aide de l’URI BulkVariables sous .BulkTemplate Le document de données du modèle peut contenir plusieurs instances. Chaque instance doit spécifier toutes les données de sous-instance.

Dans cet exemple, il existe deux instances. Chaque instance définit des valeurs pour pfxThumbprint, un **pfxBlob et un 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>

Résultats du modèle

Lorsque le document de données de modèle en bloc est correctement traité, les certificats spécifiés sont importés dans les magasins définis avec les mots de passe et les emplacements de clé fournis.

  • Importation réussie : les certificats sont correctement importés dans les magasins de certificats de l’appareil.
  • Gestion des erreurs : toutes les erreurs rencontrées pendant le processus d’importation incluent des codes de status ou des messages pertinents pour la résolution des problèmes.

Demande :

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

Réponse :

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