OMA DM 协议支持

OMA DM 客户端通过 HTTPS 与服务器通信,并使用 DM Sync (OMA DM v1.2) 作为消息有效负载。 本文介绍 DM 客户端一般支持的 OMA DM 功能。 可在 OMA 网站上找到 OMA DM 协议 v1.2 的完整说明。

OMA DM 标准

下表显示了 Windows 使用的 OMA DM 标准。

常规区域 支持的 OMA DM 标准
数据传输和会话
  • 客户端通过 TLS/SSL 发起的远程 HTTPS DM 会话。
  • 通过 TLS/SSL 远程 HTTPS DM 会话。
  • 使用 WAP 推送短信服务的远程 DM 服务器启动通知 (短信) 。 企业管理不使用。
  • 使用 WAP 通过短信推送进行远程启动。 企业管理不使用。
  • Bootstrap XML OMA 客户端预配 XML。
    DM 协议命令 以下列表显示了设备使用的命令。 有关 OMA DM 命令元素的详细信息,请参阅 OMA 网站提供的“OMA 网站”。
  • 添加 (隐式添加支持的)
  • 警报 (DM 警报) :当用户从设备触发 MDM 取消注册操作或 CSP 完成某些异步操作时,企业管理客户端将使用通用警报 (1226) 。 设备警报 (1224) 用于通知服务器某些设备触发的事件。
  • Atomic:不支持在 atomic 元素中的同一节点上执行 Add 命令后跟 Replace。 不允许使用嵌套 Atomic 和 Get 命令,并生成错误代码 500。
  • 删除:从 DM 树中删除一个节点,以及该节点下的整个子树(如果存在)
  • Exec:在客户端设备上调用可执行文件
  • 获取:从客户端设备检索数据;对于内部节点,Data 元素中的子节点名称以 URI 编码的格式返回
  • 替换:覆盖客户端设备上的数据
  • 结果:将 Get 命令的数据结果返回到 DM 服务器
  • 序列:指定一组命令的处理顺序
  • 状态:指示操作成功或失败) (完成状态

    如果不是有效 OMA DM 命令的 XML 元素位于以下元素之一下,则返回该元素的状态代码 400:
  • SyncBody
  • 原子
  • 序列

    如果 DM 命令中未提供 CmdID,则客户端在 status 元素中返回空白,状态代码为 400。

    如果 Atomic 元素是嵌套的,则返回以下状态代码:
  • 嵌套的 Atomic 命令返回 500。
  • 父 Atomic 命令返回 507。

    有关 Atomic 命令的详细信息,请参阅 OMA DM 协议通用元素。
    不支持在 Atomic 元素中的同一节点上执行 Add 命令,后跟 Replace。

    LocURI 不能以 /开头。

    SyncHdr 中的元 XML 标记被设备忽略。
  • OMA DM 标准对象 DevInfo
  • DevDetail
  • OMA DM DM (1.2) OMA DMS 帐户对象
  • 安全性
  • 对企业管理 (不使用的 DM 服务器启动通知短信进行身份验证)
  • 应用程序层基本和 MD5 客户端身份验证
  • 在应用程序级别使用 MD5 凭据对服务器进行身份验证
  • 在应用程序级别使用 HMAC 进行数据完整性和身份验证
  • 基于 TLS/SSL 级别证书的客户端/服务器身份验证、加密和数据完整性检查
  • 节点 在 OMA DM 树中,以下规则适用于节点名称:
  • “.”可以是节点名称的一部分。
  • 节点名称不能为空。
  • 节点名称不能仅是星号 (*) 字符。
  • 预配文件 预配 XML 的格式必须良好,并遵循 SyncML 表示协议中的定义。

    如果不是有效 OMA DM 命令的 XML 元素位于 SyncBody 下,则返回该元素的状态代码 400。
    注意
    若要将 Unicode 字符串表示为 URI,请先将字符串编码为 UTF-8。 然后使用 URI 编码对每个 UTF-8 字节进行编码。
    WBXML 支持 Windows 支持以 XML 格式和编码 WBXML 格式发送和接收 SyncML。 此双格式支持可在注册期间使用 w7 APPLICATION 特征下的 DEFAULTENCODING 节点进行配置。 有关 WBXML 编码的详细信息,请参阅 SyncML 表示协议 规范的第 8 部分。
    处理大型对象 在 Windows 10 中,添加了客户端支持将大型对象上传到服务器。

    OMA DM 协议通用元素

    公共元素由其他 OMA DM 元素类型使用。 下表列出了用于配置设备的 OMA DM 常见元素。 有关 OMA DM 常见元素的详细信息,请参阅 OMA 网站提供的 OMA-SyncML-DMRepPro-V1_1_2-20030613-A) (“SyncML 表示协议设备管理用法”。

    元素 描述
    Chal 指定身份验证质询。 如果原始请求消息中未提供凭据或凭据不足,则服务器或客户端可以向对方发送质询。
    Cmd 指定 Status 元素中引用的 OMA DM 命令的名称。
    CmdID 指定 OMA DM 命令的唯一标识符。
    CmdRef 指定要为其返回状态或结果信息的命令的 ID。 此元素采用相应请求消息的 CmdID 元素的值。
    信誉 为消息的发起方指定身份验证凭据。
    最后 指示当前消息是包中的最后一条消息。
    LocName 指定 Target 和 Source 元素中的显示名称,用于发送 MD5 身份验证的用户 ID。
    LocURI 指定目标或源位置的地址。 如果地址包含非字母数字字符,则必须根据 URL 编码标准对其进行正确转义。
    MsgID 指定 OMA DM 会话消息的唯一标识符。
    MsgRef 指定相应请求消息的 ID。 此元素采用请求消息 MsgID 元素的值。
    RespURI 指定收件人在向此邮件发送响应时必须使用的 URI。
    SessionID 指定与包含消息关联的 OMA DM 会话的标识符。 如果服务器未通知设备它支持通过 DMClient CSP) 中的 SyncApplicationVersion 节点 (新版本,则客户端以整数形式以十进制格式返回 SessionID。 如果服务器支持在 Windows 中使用的 DM 会话同步版本 2.0,则设备客户端将返回 2 个字节。
    来源 指定消息源地址。
    SourceRef 指定相应请求消息的源。 此元素采用请求消息 Source 元素的值,并在 Status 或 Results 元素中返回。
    目标 指定 DM 树中节点的地址,该地址是 OMA DM 命令的目标。
    TargetRef 指定相应请求消息中的目标地址。 此元素采用请求消息 Target 元素的值,并在 Status 或 Results 元素中返回。
    VerDTD 指定用于表示消息的 OMA DM 表示协议规范的主要和次要版本标识符。
    VerProto 指定与消息一起使用的 OMA DM 协议规范的主要和次要版本标识符。

    设备管理会话

    设备管理 (DM) 会话由 DM 服务器与客户端设备之间交换的一系列命令组成。 服务器发送命令,指示必须在客户端设备的管理树上执行的操作。 客户端通过发送包含结果和任何请求的状态信息的命令来做出响应。

    短 DM 会话可以概括为:

    服务器将 Get 命令发送到客户端设备,以检索管理树中某个节点的内容。 设备执行操作,并使用包含所请求内容的 Result 命令进行响应。

    DM 会话可分为两个阶段:

    1. 设置阶段:为了响应触发器事件,客户端设备将启动消息发送到 DM 服务器。 设备和服务器交换需要身份验证和设备信息。 此阶段由步骤 1、2 和 3 表示。
    2. 管理阶段:DM 服务器处于控制状态。 它会向设备发送管理命令,设备会做出响应。 当 DM 服务器停止发送命令并终止会话时,阶段 2 结束。 此阶段由步骤 3、4 和 5 表示。

    以下信息显示了典型 DM 会话期间的事件序列。

    1. 调用 DM 客户端以回调管理服务器

      企业方案 - 设备任务计划调用 DM 客户端。

      MO 服务器发送服务器触发器消息以调用 DM 客户端。

      触发器消息包括服务器 ID,并告知客户端设备启动与服务器的会话。 客户端设备对触发器消息进行身份验证,并验证服务器是否有权与其通信。

      企业方案 - 在计划时间,定期调用 DM 客户端,以通过 HTTPS 回调企业管理服务器。

    2. 设备通过 IP 连接发送消息来启动会话。

      此消息包括设备信息和凭据。 客户端和服务器通过 TLS/SSL 通道或在 DM 应用程序级别执行相互身份验证。

    3. DM 服务器通过 IP 连接 (HTTPS) 做出响应。 服务器发送初始设备管理命令(如果有)。

    4. 设备响应服务器管理命令。 此消息包括执行指定设备管理操作的结果。

    5. DM 服务器终止会话或发送另一个命令。 DM 会话结束,或重复步骤 4。

    步骤号不表示消息标识号 (MsgID) 。 来自服务器的所有消息都必须具有会话中唯一的 MsgID,从第一条消息的 1 开始,对于每个额外的消息,以 1 为增量递增。 有关 MsgID 和 OMA SyncML 协议的详细信息,请参阅 OMA 设备管理 表示协议 (DM_RepPro-V1_2-20070209-A)

    在 OMA DM 应用程序级别相互身份验证期间,如果服务器请求中 Cred 元素的设备响应代码为 212,则 DM 会话的其余部分不需要进一步身份验证。 如果发生 MD5 身份验证, Chal 则可以返回 元素。 然后,在启动下一个 DM 会话时,必须将下一个 nonce Chal 用于 MD5 摘要。

    如果请求包含凭据,并且请求的响应代码为 200,则必须在下一个请求中发送相同的凭据。 Chal如果包含元素并且需要 MD5 身份验证,则通过 元素对下一个请求使用下一个 nonce Chal 创建一个新的摘要。

    有关基本或 MD5 客户端身份验证、MD5 服务器身份验证、MD5 哈希和 MD5 nonce 的详细信息, 请参阅 OMA 网站提供的 OMA 设备管理 协议规范 (OMA-TS-DM_Security DM_Protocol-V1_2_1-V1_2_1 V1_2_1-20080617-A) 、身份验证响应代码处理和分步示例 (OMA-TS-DM_Protocol-V1_2_1-20080617-A) 中的 OMA 设备管理安全规范。

    面向用户的配置与设备目标配置

    对于支持每个用户配置的 CSP 和策略,MDM 服务器可以将用户定向设置值发送到已注册 MDM 的用户主动登录的设备。 设备通过设备警报 (1224) (警报类型为 DM pkg#1)通知服务器登录状态。

    此警报的数据部分可以是以下字符串之一:

    • 用户:注册设备的用户已主动登录。 MDM 服务器可以为支持每个用户配置的 CSP/策略发送特定于用户的配置
    • 其他:其他用户登录,但该用户没有 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 响应状态代码

    在 OMA DM 中使用 SyncML 时,会返回标准响应状态代码。 下表列出了你可能会看到的常见 SyncML 响应状态代码。 有关 SyncML 响应状态代码的详细信息,请参阅 SyncML 表示协议 规范的第 10 部分。

    状态代码 描述
    200 SyncML 命令已成功完成。
    202 接受处理。 此代码表示异步操作,例如运行应用程序远程执行的请求。
    212 已接受身份验证。 通常,仅在 OMA-DM 标准) 中用于身份验证的 SyncHdr 元素 (看到此代码。 如果查看 OMA DM 日志,可能会看到此代码,但 CSP 通常不会生成此代码。
    214 操作已取消。 SyncML 命令已成功完成,但不在会话中处理更多命令。
    215 未执行。 由于用户交互取消命令,命令未执行。
    216 Atomic 正常回滚。 命令位于元素内 Atomic ,但 Atomic 失败。 此命令已成功回滚。
    400 错误的请求。 由于语法格式不正确,无法执行请求的命令。 CSP 通常不会生成此错误,但如果 SyncML 格式不正确,你可能会看到此错误。
    401 凭据无效。 请求的命令失败,因为请求者必须提供正确的身份验证。 CSP 通常不会生成此错误。
    403 禁止。 请求的命令失败,但收件人理解请求的命令。
    404 未找到。 找不到请求的目标。 如果查询不存在的节点,则会生成此代码。
    405 不允许使用命令。 如果尝试写入只读节点,则会生成此响应代码。
    406 不支持可选功能。 如果尝试访问 CSP 不支持的属性,则会生成此响应代码。
    415 不支持的类型或格式。 此响应代码可能由 XML 分析或格式错误导致。
    418 已存在。 如果尝试添加已存在的节点,则会发生此响应代码。
    425 权限被拒绝。 请求的命令失败,因为发件人对收件人 (ACL) 没有足够的访问控制权限。 “拒绝访问”错误通常会转换为此响应代码。
    500 命令失败。 一般失败。 收件人遇到意外情况,导致无法满足请求。 当 SyncML DPU 无法映射原始错误代码时,会出现此响应代码。
    507 Atomic 失败。 块中的一个 Atomic 操作失败。
    516 Atomic 回滚失败。 操作 Atomic 失败,并且命令未成功回滚。

    配置服务提供程序参考