Deklarierter Konfigurationsressourcenzugriff
Der Zugriff auf windows-deklarierte Konfigurationen (WinDC) wird verwendet, um Gerätekonfigurationen zu verwalten und Richtlinien zu erzwingen, um sicherzustellen, dass die Geräte in einem gewünschten Zustand bleiben. Dies ist entscheidend für die Aufrechterhaltung von Sicherheit, Compliance und betrieblicher Effizienz in Organisationen. Der WinDC-Clouddienst wird verwendet, um den gewünschten Zustand einer Ressource an das Gerät zu senden, bei dem das Gerät entsprechend dafür zuständig ist, den Zustand der Ressourcenkonfiguration zu erzwingen und zu verwalten.
Konfigurationsdienstanbieter (Configuration Service Providers, CSPs) spielen eine wichtige Rolle beim Konfigurieren des Ressourcenzugriffs und fungieren als Schnittstelle zwischen dem Gerät und dem WinDC-Protokoll. Sie bieten einen konsistenten und standardisierten Ansatz zum Bereitstellen und Erzwingen von Konfigurationen. CSPs unterstützen verschiedene Szenarien für den Ressourcenzugriff, einschließlich:
- VPNv2-CSP und VPN-CSP
- WLAN-CSP
- ClientCertificateInstall-Konfigurationsdienstanbieter
- ActiveSync-Konfigurationsdienstanbieter
- WiredNetwork-Konfigurationsdienstanbieter
- RootCACertificates-CSP
Der WinDC-Stapel auf dem Gerät verarbeitet Konfigurationsanforderungen und behält den gewünschten Zustand bei, der für RA entscheidend ist. Die Effizienz, Genauigkeit und Erzwingung von Konfigurationsanforderungen sind entscheidend für eine effektive RA. Der Ressourcenzugriff lässt sich nahtlos in WinDC integrieren und bietet eine erweiterte Methode zum Verwalten von Geräten über die Cloud mit verbesserter Skalierbarkeit und Effizienz.
- Effizienz: Die batchbasierte Verarbeitung minimiert die Serverressourcennutzung und verringert die Latenz.
- Genauigkeit: Der WinDC-Clientstapel versteht die Konfigurationsoberfläche des Geräts und ermöglicht eine effektive Behandlung kontinuierlicher Updates. Sie stellt die präzise Ausführung von Konfigurationsänderungen sicher, die vom Clouddienst übermittelt werden.
- Richtlinienerzwingung: Wenden Sie Organisationsrichtlinien geräteübergreifend konsistent und im großen Stil an, um Compliance und einheitliche Konfiguration sicherzustellen. Dieser Aspekt ermöglicht Es Organisationen, den gewünschten Sicherheitsstatus geräteübergreifend beizubehalten.
Richtlinien für den Zugriff auf Ressourcen
Diese Richtlinien bieten Bewährte Methoden und Beispiele für Entwickler und Tester, um Konfigurationen für den Ressourcenzugriff (Resource Access, RA) auf sichere, effiziente und konsistente Weise zu implementieren. Sie zielen darauf ab, die Netzwerksicherheit zu verbessern und den Ressourcenzugriff für Endbenutzer zu optimieren und gleichzeitig Richtlinien und Complianceanforderungen einzuhalten.
- Konfigurationsintegrität: Um unterbrechungsfreien und sicheren Zugriff auf Ressourcen zu unterstützen, stellen Sie konsistente Konfigurationen für geräte- und benutzerübergreifend sicher.
- Zustandsüberprüfung: Überwachen Sie den Status von Konfigurationen, um die richtige Anwendung der Ressourcenzugriffseinstellungen zu überprüfen.
- Profilverwaltung: Verwalten Sie Effektiv Benutzerprofile, indem Sie nach Bedarf hinzufügen, aktualisieren und löschen, um den Zugriff auf Ressourcen zu steuern und die Sicherheit aufrechtzuerhalten.
- Protokoll und Überwachung: Verwenden Sie Protokolle und Überwachungspfade für Vorgänge und Änderungen, um die Problembehandlung und Compliance zu unterstützen.
- Drifterkennung und -behebung: Um die Einhaltung von RA-Richtlinien aufrechtzuerhalten, überwachen Sie die Abweichung kontinuierlich (Änderungen an Konfiguration oder Verhalten), und ergreifen Sie Korrekturmaßnahmen.
- Sicherheit und Datenschutz: Um Benutzerdaten und -ressourcen zu schützen, implementieren Sie strenge Sicherheitsmaßnahmen und Datenschutzmaßnahmen in Konfigurationen.
Wenn Sie diese Richtlinien befolgen und die Syntax des DeclaredConfiguration-CSP verstehen, können Sie RA-Konfigurationen effektiv implementieren und verwalten und gleichzeitig Sicherheit und Compliance gewährleisten.
WinDC-Dokument
Der Wert des Document
Blattknotens im CSP DeclaredConfiguration ist ein XML-Dokument, das die Anforderung beschreibt. Hier sehen Sie ein WinDC-Beispieldokument mit den Konfigurationsdaten, die für den Ressourcenzugriff angegeben sind.
<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>
Es können nur unterstützte Werte für osdefinedscenario
verwendet werden. Nicht unterstützte Werte führen zu einer Fehlermeldung ähnlich Invalid scenario name
der .
osdefinedscenario | Empfohlene Verwendung von mit |
---|---|
MSFTWiredNetwork | WiredNetwork |
MSFTResource | ActiveSync |
MSFTVPN | VPN und VPNv2 |
MSFTWifi | WLAN |
MSFTInventory | Zertifikatbestand |
MSFTClientCertificateInstall | SCEP-, PFX-, Massenvorlagendaten |
Diese osdefinedscenario
Werte erfordern die folgenden Tags und Attribute.
Das
<CSP>
XML-Tag beschreibt den CSP, der als Ziel verwendet wird.Dieses Tag weist die folgenden Attribute auf:
Attribut Beschreibung name
Gibt den Ziel-CSP-OMA-URI an. Das
<URI>
XML-Tag gibt den CSP-Einstellungsknoten zusammen mit dem gewünschten Wert an.Dieses Tag weist die folgenden Attribute auf:
Attribut Beschreibung path
Festlegen des Pfads type
Festlegen des Datentyps
Hinweis
Das Ziel der Szenarioeinstellungen muss mit dem WinDC-Kontext übereinstimmen. Der in <LocURI>
und winDC-Kontext definierte CSP-Bereich muss entweder Device
oder User
sein.
osdefinedscenario-Beispiele
Teilbeispiel
MSFTWifi
für WLAN:<DeclaredConfiguration context="Device" schema="1.0" id="10249228-e719-58bf-b459-060de45240f1" osdefinedscenario="MSFTWifi" checksum="11111111"> <CSP name="./Vendor/MSFT/WiFi">
Partielles
MSFTResource
Beispiel für ActiveSync:<DeclaredConfiguration context="User" schema="1.0" id="33333333-1861-4131-96e8-44444444" osdefinedscenario="MSFTResource" checksum="5555"> <CSP name="./Vendor/MSFT/ActiveSync">
SyncML-Beispiele
Die Standardmäßige OMA-DM SyncML-Syntax wird verwendet, um die DeclaredConfiguration-CSP-Vorgänge wie Ersetzen, Hinzufügen und Löschen anzugeben. Die Nutzlast des SyncML-Elements <Data>
muss XML-codiert sein. Für diese XML-Codierung gibt es verschiedene Onlineencoder, die Sie verwenden können. Um die Codierung der Nutzlast zu vermeiden, können Sie den CDATA-Abschnitt verwenden, wie in den folgenden SyncML-Beispielen gezeigt.
Konfigurieren eines VPNv2-Profils für den Ressourcenzugriff
In diesem Beispiel wird veranschaulicht, wie Sie den VPNv2-CSP verwenden, um ein VPN-Profil namens Test_SonicWall auf dem Gerät im Benutzerbereich zu konfigurieren.
<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"><custom></custom></URI>
<URI path="Test_SonicWall/PluginProfile/PluginPackageFamilyName" type="chr">SonicWALL.MobileConnect_e5kpm93dbe93j</URI>
</CSP>
</DeclaredConfiguration>
]]></Data>
</Item>
</Replace>
<Final />
</SyncBody>
</SyncML>
Aktualisieren eines VPNv2-Profils für den Ressourcenzugriff
In diesem Beispiel wird veranschaulicht, wie dieselbe WinDC-Dokument-ID verwendet wird, jedoch mit einer neuen Prüfsumme ("A3"). Es installiert ein neues VPNv2-Profil namens Test_SonicwallNew
und löscht das alte 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>
Abrufen des VPNv2-Profils
In diesem Beispiel wird veranschaulicht, wie sie verwenden <Get>
, um die Ergebnisse der WinDC-Anforderung abzurufen.
<?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>
Antwort:
<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><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"><CSP name="./Vendor/MSFT/VPNv2" state="60"><URI path="Test_SonicWallNew/TrafficFilterList/0/Protocol" status="200" state="60" type="int" /><URI path="Test_SonicWallNew/TrafficFilterList/0/Direction" status="200" state="60" type="chr" /><URI path="Test_SonicWallNew/EdpModeId" status="200" state="60" type="chr" /><URI path="Test_SonicWallNew/RememberCredentials" status="200" state="60" type="bool" /><URI path="Test_SonicWallNew/AlwaysOn" status="200" state="60" type="bool" /><URI path="Test_SonicWallNew/Proxy/AutoConfigUrl" status="200" state="60" type="chr" /><URI path="Test_SonicWallNew/DeviceCompliance/Enabled" status="200" state="60" type="bool" /><URI path="Test_SonicWallNew/DeviceCompliance/Sso/Enabled" status="200" state="60" type="bool" /><URI path="Test_SonicWallNew/PluginProfile/ServerUrlList" status="200" state="60" type="chr" /><URI path="Test_SonicWallNew/PluginProfile/PluginPackageFamilyName" status="200" state="60" type="chr" /></CSP></DeclaredConfigurationResult></Data>
</Item>
</Results>
<Final />
</SyncBody>
</SyncML>
Tipp
Informationen zu den Zustandswerten finden Sie unter WinDC-Zustände.
Löschen des VPNv2-Profils
In diesem Beispiel wird veranschaulicht, wie sie verwenden <Delete>
, um die Konfigurationsanforderung zum Festlegen des VPNv2-Profils zu entfernen.
<?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>
Ressourcenbesitz
MDM-verwaltete Ressourcen, z. B. ein VPN-Profil, werden zur WinDC-Verwaltung übertragen/migriert, wenn ein WinDC-Dokument für dieselbe Ressource an das Gerät gesendet wird. Diese Ressource bleibt unter der WinDC-Verwaltung, bis das WinDC-Dokument gelöscht oder abgebrochen wird. Wenn MDM andernfalls versucht, dieselbe Ressource über den älteren MDM-Kanal mit SyncML zu verwalten, tritt ein Fehler auf, 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).
Massenvorlagendaten
Das Massenvorlagendatenszenario geht über den regulären ClientCertificateInstall-CSP hinaus. Es wird ein spezieller Massenvorlagendokumenttyp verwendet. In diesem Abschnitt werden die Struktur, Spezifikation und Ergebnisse der Verwendung der Massenvorlagendaten behandelt.
Vorlagendokument
Ein PFXImport-Vorlagendokument enthält die Struktur, die für den Massenimport von Zertifikaten erforderlich ist. Das Dokument sollte die erforderlichen Felder und das format definieren, das für den Massenimport erforderlich ist.
- Der Dokumenttyp muss sein
BulkTemplate
. - Der URI-Pfad unterscheidet sich von den regulären URIs mithilfe der
@#pfxThumbprint#
Syntax. Er deklariert, dass es sich um einen dynamischen Knoten handelt. Instanzdaten für dynamische Knoten werden später mithilfe vonBulkVariables
gesendet. Jeder dynamische Knoten kann dynamische Unterknoten enthalten, z. B. die@#pfxBlob#
Knoten und#@pfxPassword#
in diesem Beispiel.
<?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>
Vorlagendaten
Die Massenvorlagendaten geben die Zertifikate an, die in einem Base64-codierten Format importiert werden sollen, indem der BulkVariables
URI unter dem BulkTemplate
verwendet wird. Das Vorlagendatendokument kann mehrere Instanzen enthalten. Jede instance muss alle Unterinstancedaten angeben.
In diesem Beispiel gibt es zwei Instanzen. Jede instance definiert Werte für pfxThumbprint, **pfxBlob und 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>
Vorlagenergebnisse
Wenn das Massenvorlagendatendokument erfolgreich verarbeitet wird, werden die angegebenen Zertifikate mit den angegebenen Kennwörtern und Schlüsselspeicherorten in die definierten Speicher importiert.
- Erfolgreicher Import: Die Zertifikate werden ordnungsgemäß in die Zertifikatspeicher des Geräts importiert.
- Fehlerbehandlung: Alle Fehler, die während des Importvorgangs auftreten, umfassen relevante status Codes oder Meldungen zur Problembehandlung.
Anforderung:
<?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>
Antwort:
<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><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">
<CSP name="./Vendor/MSFT/ClientCertificateInstall" state="60">
<URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/KeyLocation" status="200" state="60" type="int" />
<URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/PFXCertBlob" status="200" state="60" type="chr" />
<URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/PFXCertPassword" status="200" state="60" type="chr" />
<URI path="PFXCertInstall/813A171D7341E1DA90D4A01878DD5328D3519006/PFXKeyExportable" status="200" state="60" type="bool" />
</CSP><CSP name="./Vendor/MSFT/ClientCertificateInstall" state="60">
<URI path="PFXCertInstall/CertPFX1/KeyLocation" status="200" state="60" type="int" />
<URI path="PFXCertInstall/CertPFX1/PFXCertBlob" status="200" state="60" type="chr" />
<URI path="PFXCertInstall/CertPFX1/PFXCertPassword" status="200" state="60" type="chr" />
<URI path="PFXCertInstall/CertPFX1/PFXKeyExportable" status="200" state="60" type="bool" />
</CSP>
</DeclaredConfigurationResult>
</Data>
</Item>
</Results>
<Final />
</SyncBody>
</SyncML>