【问题标题】:How to develop mobile device management application in iOS如何在 iOS 中开发移动设备管理应用程序
【发布时间】:2016-12-09 17:16:38
【问题描述】:

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

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

【问题讨论】:

  • 我是。这确定了为什么您认为编写复杂代码会比商用系统便宜,因为商用系统的成本分摊给许多客户,但是您是否看过 Cisco Meraki?最多可免费使用 100 台设备。
  • 现在免费,明天可能要收费。

标签: ios mdm


【解决方案1】:

iOS MDM 是无客户端协议。因此,您开发了一个服务器,但您没有为它开发一个客户端应用程序。其实有一个客户端应用程序,但它是由苹果公司开发并内置在操作系统中的。

所以,你的服务器会发送一个命令,内置的 MDM 客户端会接收并执行它。

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

一个文档here 我相信它会帮助您从头开始创建自己的 mdm 解决方案

Reference

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

这是堆栈溢出浏览中MDM tag 的链接,这将帮助您获得大部分常见问题解答的答案

如果您想在下面的评论中获得任何澄清。 我已经准备好帮助你了

更新

概述

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

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

  • 所以苹果推出了iPCU(iPhone Configuration Utility) 工具,我们可以使用它创建配置文件(.moibleconfig),我们可以通过 USB 或 OTA(Over the Air) 安装它

    但它需要用户交互

  • 所以苹果为 iOS 引入了 MDM 服务,它不需要用户交互,我们可以在没有用户同意的情况下非常轻松地做很多事情,例如远程锁定、解锁、擦除、配置邮件等......

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

    概览

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

    假设我们正在关闭设备中的 App Store 应用安装,为此我们将转到 Settings->Restrictions 并关闭 App Store 安装,以便 allowAppInstallation em> 将在其配置(.plist)中变为 false 假设我们正在使用 iPCU 以及 MDM 配置应用程序安装,然后当 iOS 设置应用程序配置文件的配置配置文件之间发生冲突时,我们将采用最严格的一个, iPCU 配置文件和 MDM 配置文件。

    iOS 通过合并所有这些配置文件来创建一个名为 ProfileTruth.plist 的配置文件,并且 iOS 针对此 plist 工作

    MDM 基本上由这些东西组成

    • iOS 设备

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

    • MDM 服务器

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

    • 信令

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

我附上了 MDM 工作流程

  1. MDM 服务器使用 APNS 发送通知
  2. APNS 将其传送到设备
  3. 内置 MDM 客户端连接到 MDM Server
  4. 连接后,MDM 服务器将排队的命令发送回客户端,客户端根据 MDM 服务器发送的命令执行操作,并通过适当的确认回复 MDM 服务器

创建简单 MDM 的步骤

MDM 注册

从 MDM 注册配置文件开始

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

签入网址

 The is the URL where enrolment of the device happens. 

 i.e 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 

服务器网址

 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 注册配置文件

您可以使用 Over the AirOver the USB

安装此配置文件

一旦安装,iOS 内置客户端将通过身份验证请求连接到 MDM 服务器(签入 URL)

PUT:/签入

<?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>

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

  <!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>

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

PUT:/签入

 <?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>

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

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

PushMagic

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

令牌

向 APNS 标识设备的唯一 ID

解锁令牌

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

管理设备

现在服务器必须通过将上面的 Token 传递给推送通知库的 Token 和 Pushmagic 的 Payload 作为键 MDM 的值来发送推送通知em>

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

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

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

PUT:/服务器

 <?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> 

然后,服务器会响应它为设备排队的任何命令。

让我们看一个设备锁的例子

 The server has to respond with command like this to the client request

 <?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>

当 MDM 客户端收到之前发送的 status idle 请求时。它将立即锁定设备并以以下标准确认响应服务器

<?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>CommandUUID</key>
           <string></string>
           <key>Status</key>
           <string>Acknowledged</string>
           <key>UDID</key>
           <string> [ redacted ] </string>
     </dict>
    </plist> 

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

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

注意:

我会尝试在这里微调或添加更多内容以便于理解

【讨论】:

  • @SaurabhJain - 不确定请查看最新的 MDM 文档。它可能包含有关可以使用 MDM 客户端执行的操作列表的信息
  • 请查收here
  • 很好的解释。谢谢,我想知道如何获得已安装的应用程序列表?在服务器或 App 中做任何事情?你能给我任何链接或例子吗?谢谢
  • @DuraiAmuthan.H 很好的解释。谢谢!我有一个问题。如何将设备与其所有者关联。如果我将注册配置文件发送到 100 个地址,由于我们只获得 UDID,我如何知道哪个设备属于哪个用户?
【解决方案2】:

请浏览此link 和内容

关于移动设备管理

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

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

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

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

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

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

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

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

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

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

除非使用设备注册程序安装,否则无法锁定包含 MDM 负载的配置文件。但是,通过 MDM 安装的托管配置文件可能会被锁定。当主 MDM 配置文件被移除时,所有通过 MDM 安装的托管配置文件都会被移除,即使它们已被锁定。

概览

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

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

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

相关章节:移动设备管理 (MDM) 协议 设计有效载荷的方式很重要 为获得最大的有效性和安全性,请安装一个基本配置文件,其中仅包含最基本的 MDM 管理信息,然后在管理设备后将其他配置文件安装到设备。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多