Поддержка протокола OMA DM
Клиент OMA DM взаимодействует с сервером по протоколу HTTPS и использует синхронизацию DM (OMA DM версии 1.2) в качестве полезных данных сообщения. В этой статье описаны функциональные возможности OMA DM, поддерживаемые клиентом DM в целом. Полное описание протокола OMA DM версии 1.2 можно найти на веб-сайте OMA.
Стандарты OMA DM
В следующей таблице показаны стандарты OMA DM, которые используются в Windows.
Общая область | Поддерживаемый стандарт OMA DM |
---|---|
Передача данных и сеанс | |
XML-код начальной загрузки | XML-файл подготовки клиента OMA. |
Команды протокола DM | В следующем списке показаны команды, используемые устройством. Дополнительные сведения об элементах команд OMA DM см. на веб-сайте OMA. Если XML-элемент, который не является допустимой командой OMA DM, находится в одном из следующих элементов, для этого элемента возвращается код состояния 400: Если cmdID не указан в команде DM, клиент возвращает пустое значение в элементе status и коде состояния 400. Если элементы Atomic вложены, возвращаются следующие коды состояния: Дополнительные сведения о команде Atomic см. в разделе Общие элементы протокола OMA DM. Выполнение команды Добавить, за которой следует заменить на том же узле в элементе Atomic, не поддерживается. LocURI не может начинаться с / .Мета-XML-тег в SyncHdr игнорируется устройством. |
Стандартные объекты OMA DM | DevInfo |
Безопасность | |
Узлов | В дереве OMA DM для имени узла применяются следующие правила:* ). |
Файлы подготовки | Xml-код подготовки должен быть правильно сформирован и соответствовать определению в протоколе представления SyncML. Если XML-элемент, который не является допустимой командой OMA DM, находится в разделе SyncBody, для этого элемента возвращается код состояния 400.
Примечание Чтобы представить строку Юникода в виде URI, сначала закодируйте строку как UTF-8. Затем закодируйте каждый из байтов UTF-8 с помощью кодировки URI. |
Поддержка WBXML | Windows поддерживает отправку и получение SyncML как в формате XML, так и в закодированном формате WBXML. Эту двухформатную поддержку можно настроить с помощью узла DEFAULTENCODING в характеристике приложения w7 во время регистрации. Дополнительные сведения о кодировке WBXML см. в разделе 8 спецификации протокола представления SyncML . |
Обработка больших объектов | В Windows 10 добавлена поддержка клиентом отправки больших объектов на сервер. |
Общие элементы протокола OMA DM
Общие элементы используются другими типами элементов DM OMA. В следующей таблице перечислены общие элементы OMA DM, используемые для настройки устройств. Дополнительные сведения об общих элементах OMA DM см. в разделе Использование протокола представления SyncML Управление устройствами (OMA-SyncML-DMRepPro-V1_1_2-20030613-A), доступном на веб-сайте OMA.
Элемент | Описание |
---|---|
Чал | Указывает запрос проверки подлинности. Сервер или клиент может отправить запрос другому, если в исходном сообщении запроса не были предоставлены учетные данные или неадекватные учетные данные. |
Cmd | Указывает имя команды OMA DM, на которое ссылается элемент Status. |
CmdID | Задает уникальный идентификатор для команды OMA DM. |
CmdRef | Указывает идентификатор команды, для которой возвращаются сведения о состоянии или результатах. Этот элемент принимает значение элемента CmdID соответствующего сообщения запроса. |
Cred | Указывает учетные данные проверки подлинности для инициатора сообщения. |
Окончательный | Указывает, что текущее сообщение является последним сообщением в пакете. |
LocName | Указывает отображаемое имя в элементах Target и Source, используемых для отправки идентификатора пользователя для проверки подлинности MD5. |
LocURI | Указывает адрес целевого или исходного расположения. Если адрес содержит небуквенно-цифровой символ, его необходимо правильно экранировать в соответствии со стандартом кодирования URL-адресов. |
MsgID | Задает уникальный идентификатор для сообщения сеанса OMA DM. |
MsgRef | Указывает идентификатор соответствующего сообщения запроса. Этот элемент принимает значение элемента MsgID сообщения запроса. |
RespURI | Указывает универсальный код ресурса (URI), который получатель должен использовать при отправке ответа на это сообщение. |
Sessionid | Указывает идентификатор сеанса OMA DM, связанного с содержащим сообщением. Если сервер не уведомляет устройство о том, что оно поддерживает новую версию (через узел SyncApplicationVersion в dmClient CSP), клиент возвращает SessionID в целочисленном формате в десятичном формате. Если сервер поддерживает синхронизацию сеансов DM версии 2.0, которая используется в Windows, клиент устройства возвращает 2 байта. |
Источник | Указывает адрес источника сообщения. |
SourceRef | Указывает источник соответствующего сообщения запроса. Этот элемент принимает значение элемента Source сообщения запроса и возвращается в элементе Status или Results. |
Target | Указывает адрес узла в дереве DM, который является целевым объектом команды OMA DM. |
TargetRef | Указывает целевой адрес в соответствующем сообщении запроса. Этот элемент принимает значение элемента target сообщения запроса и возвращается в элементе Status или Results. |
VerDTD | Указывает основной и дополнительный идентификаторы версий спецификации протокола представления OMA DM, используемого для представления сообщения. |
VerProto | Указывает основной и дополнительный идентификаторы версий спецификации протокола OMA DM, используемой с сообщением. |
Сеанс управления устройствами
Сеанс Управление устройствами (DM) состоит из ряда команд, обменивается между сервером dm и клиентским устройством. Сервер отправляет команды, указывающие на операции, которые необходимо выполнить в дереве управления клиентского устройства. Клиент отвечает, отправляя команды, содержащие результаты и все запрошенные сведения о состоянии.
Короткий сеанс интеллектуальной работы можно свести к следующим значениям:
Сервер отправляет команду Get клиентскому устройству для получения содержимого одного из узлов дерева управления. Устройство выполняет операцию и отвечает командой Result, содержащей запрошенное содержимое.
Сеанс dm можно разделить на два этапа:
- Этап установки. В ответ на событие триггера клиентское устройство отправляет инициирующее сообщение на сервер DM. Для обмена данными об устройстве и сервере требуется проверка подлинности и сведения об устройстве. Этот этап представлен шагами 1, 2 и 3.
- Этап управления: сервер dm находится под контролем. Он отправляет на устройство команды управления, и устройство отвечает. Этап 2 завершается, когда сервер dm server прекращает отправку команд и завершает сеанс. Этот этап представлен шагами 3, 4 и 5.
В следующих сведениях показана последовательность событий во время типичного сеанса dm.
Клиент DM вызывается для обратного вызова сервера управления
Корпоративный сценарий. Расписание задач устройства вызывает клиент dm.Mo-сервер отправляет сообщение триггера сервера для вызова клиента dm.
Сообщение триггера содержит идентификатор сервера и сообщает клиентскому устройству, что нужно инициировать сеанс с сервером. Клиентское устройство выполняет проверку подлинности сообщения триггера и проверяет, имеет ли сервер право взаимодействовать с ним.
Корпоративный сценарий. В запланированное время клиент DM периодически вызывается для обратного вызова сервера управления предприятия по протоколу HTTPS.Устройство отправляет сообщение через IP-подключение для запуска сеанса.
Это сообщение содержит сведения об устройстве и учетные данные. Клиент и сервер выполняют взаимную проверку подлинности через канал TLS/SSL или на уровне приложения dm.
Сервер интеллектуальной службы отвечает через IP-подключение (HTTPS). Сервер отправляет начальные команды управления устройствами, если таковые есть.
Устройство реагирует на команды управления сервером. Это сообщение содержит результаты выполнения указанных операций управления устройствами.
Сервер интеллектуальной службы завершает сеанс или отправляет другую команду. Сеанс интеллектуальной службы завершается или повторяется шаг 4.
Номера шагов не представляют идентификационные номера сообщений (MsgID). Все сообщения с сервера должны иметь уникальный идентификатор MsgID в рамках сеанса, начиная с 1 для первого сообщения и увеличиваясь на 1 для каждого дополнительного сообщения. Дополнительные сведения о протоколе MsgID и OMA SyncML см. в разделе Протокол представления Управление устройствами OMA (DM_RepPro-V1_2-20070209-A).
При взаимной проверке подлинности на уровне приложения OMA DM, если код ответа устройства на элемент Cred в серверном запросе равен 212, дальнейшая проверка подлинности не требуется для оставшейся части сеанса интеллектуальной проверки подлинности. Если выполняется проверка подлинности MD5, Chal
можно вернуть элемент . Затем при запуске следующего сеанса интеллектуальной разработки для дайджеста MD5 необходимо использовать следующий параметр nonce in Chal
.
Если запрос содержит учетные данные, а код ответа на запрос равен 200, эти же учетные данные должны быть отправлены в следующем запросе.
Chal
Если элемент включен и требуется проверка подлинности MD5, создается новый дайджест с помощью следующего nonce через элемент для следующего Chal
запроса.
Дополнительные сведения о проверке подлинности клиента Basic или MD5, проверке подлинности сервера MD5, хэсе MD5 и MD5 nonce см. в спецификации безопасности Управление устройствами OMA-TS-DM_Security-V1_2_1-20080617-A), обработке кода ответа проверки подлинности и пошаговые примеры в OMA Управление устройствами Спецификация протокола (OMA-TS-DM_Protocol-V1_2_1-20080617-A), доступная на веб-сайте OMA.
Целевая конфигурация для пользователей и устройств
Для поставщиков служб конфигурации и политик, поддерживающих конфигурацию каждого пользователя, сервер MDM может отправлять целевые значения параметров пользователя на устройство, на которое активно входит зарегистрированный в MDM пользователь. Устройство уведомляет сервер о состоянии входа с помощью оповещения устройства (1224) с типом оповещения = в DM pkg#1.
Часть данных этого оповещения может быть одной из следующих строк:
- Пользователь: пользователь, зарегистрировав устройство, активно вошел в систему. Сервер MDM может отправлять конфигурацию для конкретных пользователей для поставщиков служб или политик, поддерживающих конфигурацию каждого пользователя.
- Другие: вход другого пользователя, но у него нет учетной записи MDM. Сервер может применять только конфигурацию на уровне устройства, например, конфигурация применяется ко всем пользователям на устройстве.
- Нет: активный вход пользователя отсутствует. Сервер может применять только конфигурацию на уровне устройства, а доступная конфигурация ограничена средой устройства (без активного входа пользователя).
Ниже приведен пример оповещения.
<Alert>
<CmdID>1</CmdID>
<Data>1224</Data>
<Item>
<Meta>
<Type xmlns="syncml:metinf">com.microsoft/MDM/LoginStatus</Type>
<Format xmlns="syncml:metinf">chr</Format>
</Meta>
<Data>user</Data>
</Item>
</Alert>
Сервер уведомляет устройство о том, является ли оно конфигурацией, ориентированной на пользователя или устройством, с помощью префикса LocURL узла управления, с ./user
для конфигурации, ориентированной на пользователей, или ./device
для конфигурации, ориентированной на устройство. По умолчанию, если нет префикса с ./device
или ./user
, это конфигурация, предназначенная для устройства.
В следующем LocURL показана конфигурация узла CSP для каждого пользователя: ./user/vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/<PackageFamilyName>/StoreInstall
В следующем LocURL показана конфигурация узла CSP для каждого устройства: ./device/vendor/MSFT/RemoteWipe/DoWipe
Коды состояния ответов SyncML
При использовании SyncML в OMA DM возвращаются стандартные коды состояния ответа. В следующей таблице перечислены распространенные коды состояния ответов SyncML, которые вы, вероятно, увидите. Дополнительные сведения о кодах состояния ответов SyncML см. в разделе 10 спецификации протокола представления SyncML .
Код состояния | Описание |
---|---|
200 | Команда SyncML успешно завершена. |
202 | Принято к обработке. Этот код обозначает асинхронную операцию, например запрос на выполнение удаленного выполнения приложения. |
212 | Проверка подлинности принята. Обычно этот код отображается только в ответ на элемент SyncHdr (используется для проверки подлинности в стандарте OMA-DM). Вы можете увидеть этот код, если посмотрите на журналы dm OMA, но поставщики служб конфигурации обычно не создают этот код. |
214 | Операция отменена. Команда SyncML успешно завершена, но больше команды не обрабатываются в сеансе. |
215 | Не выполняется. Команда не была выполнена в результате взаимодействия с пользователем для отмены команды. |
216 |
Atomic откат ОК. Команда находилась внутри Atomic элемента и Atomic завершилась сбоем. Эта команда успешно выполнена. |
400 | Неправильный запрос. Не удалось выполнить запрошенную команду из-за неправильного синтаксиса. Поставщики служб конфигурации обычно не создают эту ошибку, однако вы можете увидеть ее, если ваш SyncML имеет неправильный формат. |
401 | Недопустимые учетные данные. Сбой запрошенной команды, так как инициатор запроса должен обеспечить правильную проверку подлинности. Поставщики служб конфигурации обычно не создают эту ошибку. |
403 | Запрещено. Запрошенная команда завершилась ошибкой, но получатель понял запрошенную команду. |
404 | Не найдено. Запрошенный целевой объект не найден. Этот код создается, если вы запрашиваете узел, который не существует. |
405 | Команда не разрешена. Этот код ответа создается при попытке записи на узел, доступный только для чтения. |
406 | Необязательная функция не поддерживается. Этот код ответа создается при попытке получить доступ к свойству, которое не поддерживает поставщик служб CSP. |
415 | Неподдерживаемый тип или формат. Этот код ответа может быть результатом ошибок синтаксического анализа или форматирования XML. |
418 | Уже существует. Этот код ответа возникает при попытке добавить узел, который уже существует. |
425 | Отказано в разрешении. Запрошенная команда завершилась ошибкой, так как у отправителя нет достаточных разрешений на управление доступом (ACL) для получателя. Ошибки "Доступ запрещен" обычно переводятся в этот код ответа. |
500 | Сбой команды. Универсальный сбой. Получатель столкнулся с непредвиденным условием, которое помешало ему выполнить запрос. Этот код ответа возникает, когда DPU SyncML не может сопоставить исходный код ошибки. |
507 |
Atomic Сбой при. Сбой одной из операций в блоке Atomic . |
516 |
Atomic Сбой отката. Операция Atomic завершилась сбоем, и команда не была успешно выполнена. |