如何在iOS中开发移动设备管理应用程序

我公司里有很多iOS设备,我必须集中管理它们,所以我们尝试使用第三方MDM应用程序,例如:airwatch,但成本非常高。

我们决定不使用它,并考虑从头开始创建MDM。 我们尝试了所有在线提供的解决方案但我没有得到任何解决方案 任何人都可以帮我这个。

iOS MDM是无客户端协议。 因此,您开发了一个服务器,但是您没有为它开发客户端应用程序。 实际上,有一个客户端应用程序,但它是由Apple开发并内置到操作系统中。

因此,您的服务器将发送命令,内置MDM客户端将接收并执行它。

一般来说,如果要开发MDM服务器,则需要注册到Enterprise Developer Program并获取MDM文档。

这里的文档它将帮助您从头开始创建自己的mdm解决方案我相信

参考

关于开发mdm服务器Ref 1 , Ref 2的一些其他有用的链接

以下是堆栈溢出浏览中MDM标记的链接,这将帮助您获得大多数常见问题解答的答案

如果您想在此处进行任何澄清以完成此评论。 我愿意帮助你

更新

概观

  • 为了管理设备,我们可以使用iOS设置应用手动配置它

    但它存在可扩展性问题,并且需要手动配置每个设备,并且需要物理访问

  • 所以苹果推出了iPCU (iPhone配置实用程序)工具,我们可以使用它来创建配置文件(.moibleconfig),我们可以通过USB或OTA(空中)安装它

    但它需要用户互动

  • 所以苹果推出了适用于iOS的MDM服务,它不需要用户交互我们可以很容易地做很多事情而无需用户同意,如远程锁定,解锁,擦除,配置邮件等……

    MDM基本上是一种协议,您可以使用它远程管理设备。

    概观

    我们在iOS设置应用中所做的更改将作为.plist文件与iPCU和MDM安装的配置文件(.plist)一起存储在/ var / mobile / Library / ConfigurationProfiles

    让我们说我们正在关闭设备中的App Store应用程序安装,为此我们将进入设置 – >限制并关闭App Store安装,以便在其配置(.plist) 中将allowAppInstallation变为false假设我们说我们将使用iPCU以及MDM配置应用程序安装,当iOS设置应用程序配置文件,iPCU配置文件和MDM配置文件的配置配置文件之间发生冲突时,我们将采用最严格的应用程序安装。

    iOS通过合并所有这些配置文件和iOS工作来创建名为ProfileTruth.plist的配置文件

    MDM基本上由这些东西组成

    • iOS设备

      它可以是使用iOS运行的任何设备。所有iOS设备都有一个内置的MDM客户端。它将根据MDM服务器提供的指令执行操作

    • MDM服务器

      它基本上是一个托管在应用程序或Web服务器上的应用程序,它将命令提供给iOS设备上托管的MDM客户端

    • 信令

      这是一种从服务器调用mdm客户端的机制,在我们的例子中是APNS

在此,我附上了MDM工作流程

MDM工作流程

  1. MDM服务器使用APNS发送通知
  2. APNS将其提供给设备
  3. 内置MDM客户端连接到MDM Server
  4. 连接时,MDM Server将排队的命令发送回客户端,客户端根据MDM服务器发送的命令执行操作,并向MDM服务器回复相应的确认

创建简单MDM的步骤

MDM注册

它从MDM注册配置文件开始

在iPCU中,您可以选择MDM有效负载来创建新的配置文件

MDM注册配置文件

签入URL

The is the URL where enrolment of the device happens. ie upon installation of profile on the device MDM client sends necessary information to the MDM server which MDM server will use to authenticate and connect with the device 

服务器URL

  Once the MDM server got the enrolment information.It can use the information to connect the device using APNS and when MDM client wakes up it connects with the URL mentioned in Server URL and Server can send back the queued commands to MDM client 

话题

 Enter the subject of APNS certificate that's going to be used for MDM. 

身分

 It can be any certificate generated by Certificate Assistant but important thing is it has to be signed by globally trusted CA or in the case of self signed CA the CA has be installed in the device. 

安装MDM注册配置文件

您可以使用“空中”“通过USB”安装此配置文件

安装完成后,iOS内置客户端将通过Authenticate请求连接到MDM服务器(Check In URL)

PUT:/ checkin

     MessageType Authenticate Topic com.example.mdm.pushcert UDID  [ redacted ]    

现在服务器可以接受或拒绝Authenticate请求。为了接受服务器必须用空白plist响应

       

收到响应后,MDM客户端将发送TokenUpdate请求

PUT:/ checkin

      MessageType TokenUpdate PushMagic  [ redacted uuid string ]  Token  [ 32 byte string, base64 encoded, redacted ]   Topic com.example.mdm.pushcert UDID  [ redacted ]  UnlockToken  [ long binary string encoded in base64, redacted ]    

服务器需要再次发送普通plist来完成注册过程

MDM服务器必须在服务器中存储以下密钥

PushMagic

服务器必须将此附加到它发送的所有Push通知以连接MDM客户端

代币

用于向APNS标识设备的唯一ID

UnlockToken

用于清除设备密码的密钥。

管理设备

现在,服务器必须通过将令牌上方的Token传递给Token for Push通知库和Pushmagic的 Payload作为密钥MDM的值来发送推送通知

  {"mdm":"996ac527-9993-4a0a-8528-60b2b3c2f52b"} 

请参阅此有效负载中不存在aps

一旦设备收到推送通知,MDM客户端就会联系服务器URL而不是状态为空闲Check In URL

PUT:/ server

      Status Idle UDID  [ redacted ]    

然后,服务器以其为该设备排队的任何命令进行响应。

让我们看一下Device Lock的示例

  The server has to respond with command like this to the client request     Command  RequestType DeviceLock  CommandUUID    

当MDM客户端收到它之前发送的状态空闲请求时,它会立即锁定设备并使用以下标准确认响应服务器

     CommandUUID  Status Acknowledged UDID  [ redacted ]    

你可以在这里找到一些命令列表

在此处输入图像描述

这就是全部。这种方法可以做一个简单的演示。

注意:

我将尝试微调或添加更多内容,以便于理解

请仔细阅读此链接和内容

关于移动设备管理

移动设备管理(MDM)协议为系统管理员提供了一种向运行iOS 4及更高版本的托管iOS设备,运行OS X v10.7及更高版本的OS X设备以及运行iOS 7的Apple TV设备(Apple)发送设备管理命令的方法电视软件6.0)及以后。 通过MDM服务,IT管理员可以检查,安装或删除配置文件; 删除密码; 并在受管设备上开始安全擦除。

MDM协议建立在HTTP,传输层安全性(TLS)和推送通知之上。 相关的MDM签入协议提供了将初始注册过程委派给单独服务器的方法。

MDM使用Apple推送通知服务(APNS)向受管设备发送“唤醒”消息。 然后,设备连接到预定的Web服务以检索命令并返回结果。

要提供MDM服务,您的IT部门需要部署HTTPS服务器以充当MDM服务器,然后将包含MDM有效负载的配置文件分发到受管设备。

受管设备使用标识通过TLS(SSL)向MDM服务器validation自身。 此标识可以作为证书有效负载包含在配置文件中,也可以通过使用SCEP注册设备来生成。

注意:有关SCEP的信息,请参阅位于datatracker.ietf.org/doc/draft-nourse-scep/的SCEP规范草案。 MDM有效负载可以放置在使用电子邮件或网页分发的配置文件(.mobileconfig)文件中,作为通过无线注册服务提供的最终配置文件的一部分,或自动使用设备注册程序。 在任何给定时间,设备上只能安装一个MDM有效负载。

通过MDM服务安装的配置文件和配置文件称为托管配置文件。 删除MDM有效内容后,将自动删除这些配置文件。 虽然MDM服务可能有权检查设备以获取配置文件或配置文件的完整列表,但它可能只删除最初安装的应用程序,配置文件和配置文件。 使用托管配置文件安装的帐户称为管理帐户。

除了托管配置文件,您还可以使用MDM安装应用程序。 通过MDM服务安装的应用程序称为托管应用程序。 MDM服务可以进一步控制托管应用及其数据在设备上的使用方式。

运行iOS 5及更高版本的设备在准备与Apple Configurator 2一起部署时可以指定为受监管设备。此外,可以使用设备注册程序监控运行iOS 7及更高版本的设备。 受监督的设备为组织提供对其配置和限制的额外控制。 在本文档中,如果任何配置选项仅限于受监管设备,则其描述会指出该限制。

除非使用设备注册程序安assembly置文件,否则用户可以随时删除包含MDM有效内容的配置文件。 无论其访问权限如何,MDM服务器始终可以删除其自己的配置文件。 在OS X v10.8及更高版本和iOS 5中,MDM客户端在删除配置文件时单次尝试使用CheckOut命令联系服务器。 在早期的OS版本中,当用户删除有效负载时,设备不会联系MDM服务器。 有关如何检测不再管理的设备的建议,请参阅MDM最佳实践。

除非使用设备注册程序安装,否则无法锁定包含MDM有效内容的配置文件。 但是,可以锁定通过MDM安装的托管配置文件。 删除主MDM配置文件时,即使它们已被锁定,也会删除通过MDM安装的所有托管配置文件。

乍看上去

本文档是为系统管理员和系统集成商编写的,他们设计用于管理企业环境中设备的软件。

MDM签入协议允许设备联系您的服务器在初始化期间使用MDM签入协议来validation设备是否有资格进行MDM注册,并通知服务器设备的设备令牌已更新。

相关章节:MDM签入协议MDM协议向设备发送管理命令(主)MDM协议使用推送通知来告知受管设备执行特定function,例如删除应用程序或执行远程擦除。

相关章节:移动设备管理(MDM)协议设计有效负载的方式为了最大限度地提高效率和安全性,请安装仅包含最基本MDM管理信息的基本配置文件,然后在管理设备后将其他配置文件安装到设备。

相关章节:MDM最佳实践设备注册程序允许您使用设置助手配置设备基于HTTP的设备注册程序可满足大量购买和部署设备的组织的大量配置需求,无需进行工厂定制或预配置部署之前的设备

云服务API提供配置文件管理和映射。 使用此API,您可以创建配置文件,更新配置文件,删除配置文件,获取设备列表,以及将这些配置文件与特定设备相关联。

相关章节:设备注册程序批量购买计划允许您为用户和设备分配应用许可证批量购买计划提供了许多Web服务,MDM服务器可以调用这些服务以将批量购买与特定用户或设备相关联。

相关章节:VPP应用程序分配Apple推送通知证书可以通过Apple推送证书门户生成在您从客户收到CSR之前,您必须通过iOS Provisioning Portal下载“MDM签名证书”和相关的信任证书。 然后,您必须使用该证书签署客户的证书。