IOS MDM流程

http://www.mbaike.net/ios/1552.html

一、MDM资料下载:
BH_US_11_Schuetz_InsideAppleMDM_WP.pdf(MDM流程及资料最全的PDF文档)

二、MDM流程整理:
1、创建和部署https(SSL)服务器,文档参见(Create https web server):

(1)、申请IOS开发MDM需要的https(SSL)证书和密钥
(2)、部署https(SSL)服务器环境
我们这里使用的是Nginx和Jetty搭建的https web服务器。

2、生成mobileconfig配置文件(MDM Enrollment Profile):
生成mobileconfig文件需要注意两个URL地址:Server URL 和 Check In URL两个地址需要配置成https服务器上两个RestFull方法为PUT的地址,例如:https://www.mbaike.net:8443/mdm/server/123456789 和 https://www.mbaike.net:8443/mdm/checkin/123456789(注意请求的Method要配置成PUT);
具体参见:配置描述文件mobileconfig的生成及注意事项

3、安装mobileconfig配置文件:
mobile配置文件安装时会执行两部操作,即Authenticate和Token Update。
(1)、Authenticate:
当IOS设备安装mobileconfig文件时, 设备会马上去连接MDM server(即我们配置的https服务器上部署的程序),第一步是通过“Check In URL”发送一个“Authenticate”的请求信息,设备会将“UDID”,即“Universal Device Identifier”和推送通知的“Topic”信息。
如下就是设备请求服务器checkin方法,将下面的xml格式的数据发送给MDM Server:
——————————————————————-
PUT: /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>com.example.mdm.pushcert</string>
<key>UDID</key>
<string> [ redacted ] </string>
</dict>
</plist>
——————————————————————-

请求后,MDM Server只需要发送一个空的xml格式的文件给设备(Device)就行了,代码如下:
——————————————————————-
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>
——————————————————————-

(2)、Token Update:
完成了设备的认证,接下来设备再次请求服务器的,通过“Check In URL”发送一个“TokenUpdate”的请求信息,具体的代码如下:
——————————————————————-
PUT: /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>TokenUpdate</string>
<key>PushMagic</key>
<string> [ redacted uuid string ] </string>
<key>Token</key>
<data> [ 32 byte string, base64 encoded, redacted ] </data>
</data>
<key>Topic</key>
<string>com.example.mdm.pushcert</string>
<key>UDID</key>
<string> [ redacted ] </string>
<key>UnlockToken</key>
<data>
[ long binary string encoded in base64, redacted ]
</data>
</dict>
</plist>
——————————————————————-

这里,我们需要获取几个有用的数据:PushMagic、Token、Topic、UDID、UnlockToken 这几个参数都很重要,一定要在服务器保存好。
我们收到这样的数据后,我们不需要返回一个空的xml格式的文件,我们只需要返回一个“200”状态就行了。(Again, the server doesn’t need to provide any response beyond a simple blank plist. Once this is complete, the server retains copies of the tokens, and the device is now fully enrolled.)
具体参见:安装mobileconfig配置描述文件及完成Authenticate和Token Update功能

4、发送MDM推送信息到apple的APNS推送服务器:
在完成MDM推送证书文件后,我们现在需要向APNS服务器发送一个推送命令来告诉设备,MDM服务器需要连接设备发送MDM命令了。我们通过java-apns jar组件来完成信息的发送,发送的具体内容例如:
{"aps":{},"mdm":"996ac527-9993-4a0a-8528-60b2b3c2f52b"}

具体参见:MDM推送证书的生成及java-apns组件的测试代码编写

5、通过MDM推送证书向设备发送锁屏命令
发送锁屏命令时,我们需要在推送一个类似:{"aps":{},"mdm":"996ac527-9993-4a0a-8528-60b2b3c2f52b"} 这样的命令时,我们需要在服务器保存一条和锁屏相关的数据,设备受到推送消息时,会向MDM Server的Server URL发送一个状态“Status”为“Idle”的数据xml数据,MDM server收到这样的状态后。MDM server调用数据,返回一个如下格式的锁屏命令(The DeviceLockcommand requires no parameters, and is simply the following:):
——————————————————————-
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Command</key>
 <dict>
  <key>RequestType</key>
  <string>DeviceLock</string>
 </dict>
 <key>CommandUUID</key>
 <string></string>
</dict>
</plist>
——————————————————————-

设备执行成功后,会返回给服务器的Server URL地址一个如下的数据(When this is provided to the device, as the response to the Status: Idle command, the device immediately locks. The response from the device is the standard acknowledgement message:):
——————————————————————-
PUT: /server
<?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>Status</key>
<string>Idle</string>
<key>UDID</key>
<string> [ redacted ] </string>
</dict>
</plist>
——————————————————————-

这样的数据,就表示设备执行完成。
具体参见:
(1)、通过APNS发送MDM的锁屏命令
(2)、通过APNS发送MDM的恢复出厂设置命令
(3)、通过APNS发送MDM的查询设备信息的命令

三、MDM相关说明:
1、这里只是简单说明了MDM过程,具体的过程参见:基于IOS上MDM技术相关资料整理及汇总
2、我们这边的MDM Server使用JAVA作为服务器端开发语言,Jetty作为 web application容器,前端使用nginx作为前端代理;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值