首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS -验证私有应用程序存储的企业配置文件

iOS -验证私有应用程序存储的企业配置文件
EN

Stack Overflow用户
提问于 2015-11-12 23:53:53
回答 1查看 537关注 0票数 2

作为移动设备管理功能的一部分,我们为客户提供私有应用程序商店。管理员可以将ipa文件上传到我们的服务器,我们将允许托管设备直接安装这些企业应用程序。

当管理员上传ipa时,我们希望进行一些验证,如果ipa不符合要求,我们将立即拒绝。具体地说:

  1. 如果ipa是由企业证书以外的证书(例如appstore证书)签名的,我们希望拒绝它;
  2. 如果ipa是由已过期的证书签名的,我们希望拒绝它;
  3. 如果ipa是由已被撤销的证书签名的,我们希望拒绝它。

我有以下问题:

  1. 对于需求#1,我注意到企业构建在ipa中有一个文件embedded.mobileprovision,但是appstore构建没有这个文件。检查该文件的存在是否足以确定上传的ipa是否是企业ipa,还是有更准确的方法来识别非企业ipa?
  2. 对于需求#2,在embedded.mobileprovision中似乎有一个字段embedded.mobileprovision,我可以检查它的值来确定过期日期吗?
  3. 据我所知,上面的#1和#2是可能的,但是在用户真正尝试安装ipa之前,#3是无法被验证的。也就是说,当管理员上传ipa时,我无法捕捉到错误,但是我会允许这样做,用户将得到无法安装应用程序的错误。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-11-13 02:47:54

您的ipa文件中有一个embedded.mobileprovision。

  1. 解压缩,有一个有效载荷/appName.app/
  2. 找出embedded.mobileprovision

试着调查embedded.mobileprovision

它是一个二进制plist (plist是一种有点特殊的xml格式,但仍然是xml)。我可以用原子和维姆来观察它。您会注意到有不可读的前缀和后缀,忽略它们。进入中间部分。您可以看到许多节点,如TeamIdentifier、AppIDName、ProvisionedDevices。它有很多员工。

根据您的要求,我在https://github.com/0xc010d/mobileprovision-read/blob/master/main.m中找到了一些您可能需要的代码

它检查移动设备的一些关键节点。少于4?

代码语言:javascript
复制
if ([option isEqualToString:@"type"]) {
    if ([plist valueForKeyPath:@"ProvisionedDevices"]){
        if ([[plist valueForKeyPath:@"Entitlements.get-task-allow"] boolValue]) {
            printf("debug\n");
        }
        else {
            printf("ad-hoc\n");
        }
    }
    else if ([[plist valueForKeyPath:@"ProvisionsAllDevices"] boolValue]) {
            printf("enterprise\n");
    }
    else {
            printf("appstore\n");
    }
}

关于解析器

您可以编写命令行解析器工具,也可以使用谷歌工具。台阶不会很难

  1. 修剪后缀和前缀
  2. 获取一些节点的值,如ProvisionedDevicesProvisionsAllDevices
  3. 如果ProvisionsAllDevicestrue。接受吧。

完成

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33683634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档