如何检查设备是否已在MDM中注册

时间:2013-06-20 22:23:48

标签: ios mdm iphone-privateapi

我正在寻找一个API,可以让我检查设备上是否安装了MDM配置文件。

它不会被提交给AppStore,所以私有API对我没问题。但是,它应该适用于被监禁的手机(因此越狱解决方案不适用)。

更新1

我正在寻找一种在iOS设备上确定此设备是否已注册的方法(与从MDM服务器检查注册了哪些设备)。

1 个答案:

答案 0 :(得分:0)

我能想到的一种解决方案是通过MDM服务器安装应用程序(使用ChangeManagementState选项来控制已经安装的应用程序)。这样,您就可以在MDM服务器上设置托管应用配置选项,应用可以从UserDefaults中读取该应用选项。

您可以在此处查看如何执行此操作:https://developer.apple.com/business/documentation/MDM-Protocol-Reference.pdf#b3

如果您需要验证正确的MDM服务器正在管理设备,而不是某些随机MDM服务器,则可以创建该设备唯一的某种类型的签名文档(包括UDID)并由唯一的私钥签名到服务器。然后,应用程序可以使用公共密钥(可能是应用程序二进制文件附带的,因为这似乎是私人物品)验证此签名,并确定是否对应用程序和设备进行了管理。

最简单的选项可能类似于JSON Web令牌。还存在其他选项:pkcs7,SMIME,CMS等。

例如,在JWT令牌的正文中,您可以包括服务器域和设备UDID。这样,设备可以验证此签名令牌是用于该设备的,而不是简单地从其他合法管理的设备复制并重新使用的。您还可以添加一个时间戳(和/或过期)值,以要求MDM服务器在某个设置的时间间隔内重新发行令牌,以确保令牌是最新的。

{
  "sub": "SOME-DEVICE-UDID",
  "iat": 1516239022,
  "iss": "mdm.example.com"
}

有很多方法可以做到这一点,我最熟悉JWT令牌。现有用于Swift和Objective-C的JWT库,可以在您的应用程序中使用它来验证此令牌。然后,您可以合理地确定设备是由目标服务器管理的。