一 简述
mdm 是通过移动设备管理,目的就是让企业能够方便的管理 iPhone、Pad等移动设备。
二 业务场景介绍
当企业大量的使用移动设备办公或涉及到一些安全限制时设备管理的作用就能明显的体现出来,通过MDM IT人员门能够在企业环境下安全地注册设备,无线配置和更新设置,监督公司政策的遵守情况,还能远程擦除或锁定被管理的设备。例如(很多电子厂一线员工上班期间都不让带手机,害怕不法分子随便拍照泄露产品信息,如果此时引入MDM则可以再上班期间禁止员工的手机摄像头的应用,其他也不影响手机使用)。
三 功能介绍
安装和删除一个配置文件
获取已安装的描述文件列表
获取已安装的配置文件列表
获取已安装的证书列表
获取已安装的第三方的应用列表
应用的安装与删除
获取设备信息(UDID、Languages、DeviceID、BatteryLevel等)
获取安全相关的信息
设备锁屏、重启、关机、清除密码、数据擦除
获取已启用的约束列表
锁住、定位已丢失的设备
设备相关的设置管理、设备名称、壁纸、移动网络等
设置已安装的应用属性
获得可更新的系统的信息
安装一个文件或书籍
四 流程分析
MDM工作流程.jpg三个端: 设备 ,apns, 自己搭建mdm 服务器,或者第三方的服务器
- MDM服务器:
(1)与设备交互发送指令对设备进行管理,设备也会指令进行响应
(2)与apns交互唤醒设备连接mdm服务器,获取设置当前是否为空闲状态
-
APNs:可看作其他两者之间的信使,主要就是转发MDM服务器指令给设备,意思告诉设备开始去连接服务器啦。
-
设备:首先通过Safari访问服务器安装一个配置描述文件(下文叙述)并登记注册使其成为受管理的设备,当收到APNs指令后,根据已安装的配置文件的url 连接MDM服务器并报告其状态,然后接受下一步命令比如命令DeviceInformation(查询设备信息如ModelName、BatteryLevel、WiFiMAC等),设备收到XML格式的指令后再向服务器传送其相关查询的信息,如果不需要继续发送指令,服务器关闭连接。
另外设备和MDM服务器之间数据传输都是以XML格式形式,以PUT请求的方式进行的,所以发送指令时,服务器要把指令封装成一个XML的文件同时要实现PUT请求相关操作处理。
五准备事项
tips: MDM中分为Vendor 和Customer两个角色,即服务商和用户。
1 开通mdm 服务的企业证书成为Vendor角色
描述:苹果文档解释可以直接电话联系开启mdm 服务无需付费,询问有开发过mdm 的人士不会对应以前发的包造成影响,具体可以在电话申请服务的时候在证实一下
2 生成mdm证书也即是一个apsp 的证书用于apsn的推送 详细的生成流程
http://esoftmobile.com/2015/03/23/ios-devices-mdm/
流程简述:
(1)钥匙串访问->证书助理->从证书颁发机构请求证书创建一个CSR
(2)苹果后台提交CSR 文件导出一个mdm.per 文件
(3) mdm.per 与CSR文件使用终端命令plist_encoded
(4) 上传plist_encoded 文件生成apsp 证书
3 生成mobileConfig 并签名交由mdm server 提供给用户下载安装 (moblieConfig 可以理解为一个xml 文件)
流程简述:
(1)iPhone配置实用工具生成mobileCofig
(2) 如果MDM服务器采用的是自签名的SSL证书,需要在描述文件的“凭证”中加入MDM服务器SSL对应的客户端证书(cer),如果有密码,填写对应证书的密
(3) 在“移动设备管理”中依次填入服务器URL、登记URL、主题、选择身份鉴定凭证,并设置MDM服务权限等。
注意:
(1)如果需要关联MoblieConfig 关联用户标识可能需要每次动态生成一个config 文件
(2)moblieConfig安装成功,设备是根据moblieConfig 文件主动请求登记URL发送首次注册相关的设备信息
(3)服务端推送设备,设备是根据moblieConfig 文件服务器URL主动请求服务端,来获取相关指令
4 一台mdm 服务器
描述:一台可以实现Https 的服务器
六 实现方案分析
DC8C3760-57EF-41C2-AF6E-79D0FCF7727D.png给设置发送指令服务端可以参考 : https://www.jianshu.com/p/23ced86382d9
服务端 java demo 可以参考https://www.jianshu.com/p/23ced86382d9
1 java demo 简单分析
(1)DeviceController 在这个类集成所有发送指令的操作 ,
(2)MdmController 在这个类集成所有发送指令的操作 ,
(3)PushUtils 集成apns 推送功能
(4)MdmUtils集成发送指令xml
代码解析https://www.mbaike.net/mdm/14.html
感谢提供的资料https://www.jianshu.com/p/6112050ea31a
大神空空小僧
的指导
网友评论