Compartilhar via


Acesso declarado ao recurso de configuração

O acesso a recursos de configuração declarada do Windows (WinDC) é utilizado para gerir configurações de dispositivos e impor políticas para garantir que os dispositivos permanecem no estado pretendido. É fundamental para manter a segurança, a conformidade e a eficiência operacional nas organizações. O serviço cloud WinDC é utilizado para enviar o estado pretendido de um recurso para o dispositivo, onde, correspondentemente, o dispositivo tem a responsabilidade de impor e manter o estado de configuração do recurso.

Os Fornecedores de Serviços de Configuração (CSPs) desempenham uma função vital para configurar o Acesso a recursos e atuam como uma interface entre o dispositivo e o protocolo WinDC. Fornecem uma abordagem consistente e padronizada para implementar e impor configurações. Os CSPs suportam vários cenários de acesso a recursos, incluindo:

A pilha WinDC no dispositivo processa pedidos de configuração e mantém o estado pretendido, que é fundamental para o RA. A eficiência, a precisão e a imposição dos pedidos de configuração são fundamentais para uma RA eficaz. O acesso a recursos integra-se perfeitamente com o WinDC, fornecendo um método alargado para gerir dispositivos através da cloud com escalabilidade e eficiência melhoradas.

  • Eficiência: o processamento baseado em batch minimiza a utilização de recursos do servidor e reduz a latência.
  • Precisão: a pilha de cliente WinDC compreende a área de superfície de configuração do dispositivo, permitindo o processamento eficaz de atualizações contínuas. Garante a execução precisa das alterações de configuração comunicadas pelo serviço cloud.
  • Imposição de Políticas: aplique e mantenha políticas organizacionais em todos os dispositivos de forma consistente e em escala, garantindo a conformidade e a configuração uniforme. Este aspeto permite que as organizações mantenham a postura de segurança pretendida entre os dispositivos.

Diretrizes de acesso a recursos

Estas diretrizes fornecem melhores práticas e exemplos para programadores e técnicos de teste implementarem configurações de acesso a recursos (RA) de forma segura, eficiente e consistente. Visam melhorar a segurança de rede e otimizar o acesso a recursos para os utilizadores finais ao mesmo tempo que cumprem as políticas e os requisitos de conformidade.

  • Integridade da Configuração: para suportar um acesso de recursos ininterrupto e seguro, garanta configurações consistentes entre dispositivos e utilizadores.
  • Validação de Estado: monitorize o estado das configurações para verificar a aplicação correta das definições de acesso a recursos.
  • Gestão de Perfis: faça a gestão eficaz dos perfis de utilizador ao adicionar, atualizar e eliminar, conforme necessário, para controlar o acesso aos recursos e manter a segurança.
  • Registo e Auditoria: utilize registos e registos de auditoria para operações e alterações para ajudar na resolução de problemas e conformidade.
  • Deteção e Remediação de Desvio: para manter a conformidade com as políticas de RA, monitorize continuamente o desfasamento (alterações na configuração ou comportamento) e tome medidas corretivas.
  • Segurança e Privacidade: para proteger os dados e os recursos dos utilizadores, implemente medidas de segurança e privacidade fortes nas configurações.

Ao seguir estas diretrizes e compreender a sintaxe do CSP DeclaredConfiguration, pode implementar e gerir eficazmente as configurações de RA, mantendo a segurança e a conformidade.

Documento WinDC

O valor do Document nó de folha no CSP DeclaredConfiguration é um documento XML que descreve o pedido. Eis um documento WinDC de exemplo com os dados de configuração especificados para acesso a recursos.

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

Só podem ser utilizados valores suportados para osdefinedscenario . Os valores não suportados resultam numa mensagem de erro semelhante a Invalid scenario name.

osdefinedscenario Utilização recomendada com
MSFTWiredNetwork WiredNetwork
MSFTResource ActiveSync
MSFTVPN VPN e VPNv2
MSFTWifi Wifi
MSFTInventory Inventário de certificados
MSFTClientCertificateInstall SCEP, PFX, Dados de Modelo em Massa

Estes osdefinedscenario valores requerem as seguintes etiquetas e atributos.

  • A <CSP> etiqueta XML descreve o CSP que está a ser visado.

    Esta etiqueta tem os seguintes atributos:

    Atributo Descrição
    name Especifica o OMA-URI de CSP de destino.
  • A <URI> etiqueta XML especifica o nó de definição CSP juntamente com o valor pretendido.

    Esta etiqueta tem os seguintes atributos:

    Atributo Descrição
    path Caminho da definição
    type Definir tipo de dados

Observação

O destino das definições do cenário tem de corresponder ao contexto winDC. O âmbito CSP definido no <LocURI>contexto WinDC e tem de ser Device ou User.

Sintaxe de acesso a recursos winDC

exemplos de osdefinedscenario

  • Exemplo parcial MSFTWifi para Wi-Fi:

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

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

Exemplos de SyncML

A sintaxe OMA-DM SyncML padrão é utilizada para especificar as operações CSP DeclaredConfiguration, tais como Substituir, Adicionar e Eliminar. O payload do elemento do <Data> SyncML tem de ter codificação XML. Para esta codificação XML, existem vários codificadores online que pode utilizar. Para evitar codificar o payload, pode utilizar a Secção CDATA , conforme mostrado nos seguintes exemplos de SyncML.

Configurar um perfil VPNv2 para acesso a recursos

Este exemplo demonstra como utilizar o CSP VPNv2 para configurar um perfil VPN com o nome Test_SonicWall no dispositivo no âmbito utilizador .

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

Atualizar um perfil VPNv2 para acesso a recursos

Este exemplo demonstra como utilizar o mesmo ID de Documento WinDC, mas com uma nova soma de verificação("A3"). Instala um novo perfil VPNv2 com o nome Test_SonicwallNewe elimina o perfil antigo.

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

Obter o perfil VPNv2

Este exemplo demonstra como utilizar <Get> para obter os resultados do pedido 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>

Resposta:

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

Dica

Para compreender os valores de estado, veja Estados winDC.

A eliminar o perfil VPNv2

Este exemplo demonstra como utilizar <Delete> para remover o pedido de configuração para definir o perfil 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>

Propriedade do recurso

Os recursos geridos por MDM, como um perfil VPN, são transferidos/migrados para a gestão do WinDC quando um documento WinDC é enviado para o dispositivo para o mesmo recurso. Este recurso permanece sob gestão do WinDC até que o documento WinDC seja eliminado ou abandonado. Caso contrário, quando a MDM tenta gerir o mesmo recurso através do canal MDM legado com o SyncML, falha com o erro 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).

Dados de modelos em massa

O cenário de dados do modelo em massa estende-se para além do CSP ClientCertificateInstall normal. Utiliza um tipo de documento de modelo em massa especial. Esta secção abrange a estrutura, a especificação e os resultados da utilização dos dados do modelo em massa.

Documento de modelo

Um documento de modelo PFXImport contém a estrutura necessária para importar certificados em massa. O documento deve definir os campos necessários e o formato necessário para a importação em massa.

  • O tipo de documento tem de ser BulkTemplate.
  • O caminho do URI é diferente dos URIs normais ao utilizar a @#pfxThumbprint# sintaxe, declara que é um nó dinâmico. Os dados de instância para nós dinâmicos são enviados mais tarde com BulkVariables. Cada nó dinâmico pode conter subnódes dinâmicos, como os @#pfxBlob# nós e #@pfxPassword# neste exemplo.
<?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>

Dados do modelo

Os dados do modelo em massa especificam os certificados a importar num formato codificado base64 com o BulkVariables URI no BulkTemplate. O documento de dados do modelo pode conter várias instâncias. Cada instância tem de especificar todos os dados de subinstância.

Neste exemplo, existem duas instâncias. Cada instância define valores para 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>

Resultados do modelo

Quando o documento de dados do modelo em massa é processado com êxito, os certificados especificados são importados para os arquivos definidos com as palavras-passe fornecidas e as localizações das chaves.

  • Importação bem-sucedida: os certificados são importados corretamente para os arquivos de certificados do dispositivo.
  • Processamento de Erros: quaisquer erros encontrados durante o processo de importação incluem códigos de status relevantes ou mensagens para resolução de problemas.

Pedido:

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

Resposta:

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