二. MDM Check-in协议

2020-06-11  本文已影响0人  烽火连天x

官方英文文档地址:https://developer.apple.com/business/documentation/MDM-Protocol-Reference.pdf#//apple_ref/doc/uid/TP40017387-CH3-SW2

MDM签入协议在初始化期间用于验证设备是否符合MDM注册资格,以及通知服务器设备的推送令牌已更新。
如果MDM负载中提供了签入服务器URL,则使用签入协议与该URL通信签入服务器。如果未提供签入服务器URL,则使用主MDM服务器URL。

note
MDM配置文件可以存储在Apple开放目录服务器中并从中读取。

Check-in请求的结构

安装MDM负载后,设备将启动与签入服务器的通信。装置验证服务器的TLS证书,然后使用在其MDM负载中指定的标识作为客户端连接的身份验证证书。
成功协商此安全连接后,设备将以以下格式发送HTTP PUT请求:

PUT /your/url HTTP/1.1
Host: www.yourhostname.com
Content-Length: 1234
Content-Type: application/x-apple-aspen-mdm-checkin
<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE plist PUBLIC ”-//Apple//DTD PLIST 1.0//EN” ”http://www.apple.com/DTDs/
PropertyList-1.0.dtd”>
<plist version=”1.0”>
<dict>
<key>MessageType</key>
<string>Authenticate</string>
<key>Topic</key>
<string>...</string>
<key>UDID</key>
<string>...</string>
</dict>
</plist>

服务器必须发送200(正常)状态代码以指示成功,或发送401(未授权)状态代码以表示失败。答复的正文将被忽略。

支持的Check-in命令

验证消息
Key Type Value
MessageType String Authenticate.
Topic String The topic the device will listen to.
UDID String The deviceʼs UDID.
如果设备运行的是iOS 9或更高版本,并且如果设备信息访问权:
Key Type Value
OSVersion String 设备系统版本
BuildVersion String 设备build的版本
ProductName String 设备的名称(如: ”iPhone3,1”)
SerialNumber String 设备的序列号
IMEI String 设备的IMEI(国际移动台设备标识)
MEID String 设备的MEID(移动设备标识符)
服务器响应

成功时,服务器必须以200 OK状态响应
服务器此时不应假定设备已安装MDM负载,因为配置文件可能仍然无法安装。当设备成功安装MDM负载时,它会发送一个令牌更新信息。

TokenUpdate 信息

设备在其设备推送令牌、推送魔术或解锁令牌更改。服务器需要这些字段来发送设备推送通知或密码重置。
TokenUpdate消息在其属性列表中包含以下键值对:

Key Type Value
MessageType String TokenUpdate
Topic String 设备将要接收的Topic
UDID String 设备的UDID
Token data 设备的推送令牌。服务器在向设备发送推送通知时应使用此更新的令牌。警告:设备推送令牌的大小可能不同,MDM服务器不能假定所有推送令牌的大小都相同。然而,虽然最大的推送令牌的大小在将来的版本中可能会发生变化,但MDM服务器可能会假设它当前不大于100字节。
PushMagic String 推送通知消息中必须包含的幻数字符串。该值由设备生成(见下文)。
UnlockToken data 可选。可用于解锁设备的数据块。如果提供了,服务器应该记住这个数据blob,并用Clear Passcode命令发送它清除设备命令的密码。此功能在macOS中不可用。Base64解码后,数据blob的大小可能高达8 kB。
AwaitingConfiguration Boolean 可选。如果设置为true,则设备正在等待DeviceConfigured MDM命令,然后再继续执行安装助手。可用性:在iOS 9及更高版本中可用,只能由DEP发送(请参阅设备注册程序)。

当设备安装了MDM负载时,它会向服务器发送初始令牌更新消息。服务器应仅在接收到第一个令牌更新消息后才向设备发送推送消息。如果设备报告它正在等待配置,则MDM服务器应先发送设备配置的MDM命令,然后设备才能允许用户在安装助手中继续。这使MDM服务器有机会通过MDM命令进行一些设置。
除了发送初始令牌更新消息外,iOS设备现在可以在具有有效MDM注册的情况下随时向签入服务器发送其他令牌更新消息。
PushMagic的使用将设备约束为唯一的MDM关系。当用户删除MDM配置文件时,设备不应再监听以前的关系,即使用户重新建立了与同一服务器主题的管理关系。注意,在这种情况下,只有推送主题是相同的;服务器的地址可能已经更改。当用户从包含旧关系的备份中还原设备时,这也会有所帮助。使用PushMagic还可以确保接收签入消息的服务器与发送推送通知的计算机属于同一企业。这很重要,因为无法知道推送主题是否属于签入服务器的所有者。可以想象,苹果可能会撤销一个派对,只是让派对重新招收那些正在积极推动其他话题的人。所有MDM推送主题都位于命名空间中苹果管理公司*有助于防止这种情况。

note
后续TokenUpdate消息的PushMagic或UnlockToken字段可能与先前消息中的字段相同,也可能不同(并且大小可能与先前的值不同)。如果不同,服务器应将其设备记录更新为消息提供的新值。否则,服务器将无法发送推送通知或执行密码重置。

虽然设备可以多次发送UnlockToken消息,但如果PushMagic或UnlockToken值更改,则可能只发送一次。实现不应依赖于重复的消息来更新丢失的服务器端数据,也不应依赖于从处理以前的令牌更新消息失败中恢复。

note
MDM签入协议的主题字符串必须以 com.apple.mgmt.
where 是唯一的后缀。

CheckOut

在iOS 5.0及更高版本和macOS v10.9中,如果MDM负载中的checkouthenremoved键设置为true,则删除MDM配置文件时,设备尝试发送签出消息。
在macOS v10.8中,当删除MDM配置文件时,无论此键的值(或其不存在)。
如果网络条件不允许成功传递消息,设备将不再尝试发送消息。服务器对此消息的响应将被忽略。
CheckOut消息包含以下键:

Key Type Value
OSVersion String CheckOut
Topic String 设备将要接收的Topic
UDID String 设备的UDID
上一篇下一篇

猜你喜欢

热点阅读