7

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

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

更新 1

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

4

1 回答 1

0

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

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

如果您需要验证正确的 MDM 服务器正在管理设备,而不是某个随机的 MDM 服务器,您可以创建某种类型的设备独有的签名文档(包括 UDID)并由服务器独有的私钥签名. 然后,应用程序可以使用公钥验证此签名(可能在应用程序二进制文件中提供,因为这似乎是私有的)并确定应用程序和设备是否受到管理。

最简单的选择可能是 JSON Web Tokens 之类的东西。还存在其他选项:pkcs7、SMIME、CMS 等。

例如,在 JWT 令牌的正文中,您可以包含服务器域和设备 UDID。通过这种方式,设备可以验证此签名令牌是否适用于该设备,而不是简单地从另一个合法管理的设备复制和重复使用。您还可以包含时间戳(和/或到期)值,以要求 MDM 服务器在某个设置的时间间隔内重新发出令牌,以确保它是最新的。

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

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

于 2020-12-02T03:22:07.147 回答