理解apple官网提供的相关MDM的开发帮助文档

分类: 首页- >MDM专栏 | 阅读: 6262 | 评论: 0 | 2014-07-24 15:58:17 
摘要:理解apple官网提供的相关MDM的开发帮助文档:创建和部署https(SSL)服务器,文档参见(Create https web server)、生成mobileconfig配置文件(MDM Enrollment Profile)、安装mobileconfig配置文件
一、MDM资料下载:
BH_US_11_Schuetz_InsideAppleMDM_WP.pdf(MDM流程及资料最全的PDF文档)

二、MDM流程整理:
1、创建和部署https(SSL)服务器,文档参见(Create https web server):
(1)、申请IOS开发MDM需要的https(SSL)证书和密钥
(2)、部署MDM所需要的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:):
-------------------------------------------------------------------
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>
-------------------------------------------------------------------

设备执行成功后,会返回给服务器的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作为前端代理;
 声明:www.mbaike.net 博客文章版权属于作者,受法律保护。未经作者同意不得转载。
标签 apple MDM mobileconfig checkin TokenUpdate Authenticate
相关搜索
apple官网    apple watch    apple id    apple hk    apple id注册    itunes    apple tv    王自如    apple中国官方网站   
mdm365面对面    mdm是什么意思    mdm系统    mdm.exe    mdm主数据管理    android mdm    sap mdm    ios mdm    mdm女装   
mobileconfig怎么安装    mobileconfig如何安装    mobileconfig怎么打开    iphone配置实用工具    mobileconfig文件    ios mobileconfig    mobileconfig下载    iphone mobileconfig    mobileconfig 签名   
checkout    svn checkin    checkin service    机场checkin    最长的英文单词    irc    中式英语    checkin svn    git checkin   
token    unexpected token    token验证失败    access token    token是什么意思    token验证    微信token验证失败    csrf token    json web token   
authentication    authenticated    authenticate failed    authenticated users    django authenticate    authenticate client    db.authenticate    最长的英文单词    www authenticate   

共有 0 条网友评论

还木有留言,还不抢沙发?

发布评论:

昵称: 邮箱: 验证码:
文明上网,理性发言!
© 移动互联百科(www.mbaike.net) | WAP站点 | 站长QQ:459104018 | 备案号:蜀ICP备14008230号-2