我们有一个应用程序的企业分发,我们只想在我们的组织内分发。
我们已经构建了指向正确位置的ipa文件和plist,并使用url创建了html页面:itms-services://?action = download&amp; url = {link to our plist}。< / p>
然而,我们的问题是确保分发流程。我们希望拥有公司自有iPad的员工能够在移动中下载应用程序(它们具有高度移动性)。因此,我们希望将plist和app放在公共网站上,该网站需要通过oauth服务登录。
我们的问题是,如果我们要求对应用程序和plist的URL进行身份验证,那么itms-services:// url将不再有效。会发生什么情况是用户单击itms-services链接,我们会看到未经身份验证的plist请求(重定向到登录),然后是设备上的“无法连接到{hostname}”。
目前,我能看到这个工作的唯一方法是不检查ipa和plist文件的身份验证。这意味着(我相信)有人猜测我们的plist文件的URL可以创建自己的itms-services链接并在未经授权的情况下下载应用程序,并且有效地导致我们违反与Apple的协议,仅向我们的员工分发。
我的问题是 - 如何创建一个不向公众公开ipa和plist文件的itms-services链接?如果相关,则使用nodejs构建网站,该应用程序是PhoneGap应用程序。
答案 0 :(得分:9)
我已经找到了解决方案。
我们无法使用oauth身份验证,因为iOS安装过程不提供输入凭据的机会。
相反,当用户请求显示itms-services://链接的页面时,我们为该用户创建一个唯一的字符串,并使用AES-256对其进行加密,然后将其存储在数据库中。
我们的网址变为:itms-services://{url to plist}/{encryptedString}
。我们尝试使用查询字符串,但似乎iOS安装工具没有传递它。
当安装工具请求Plist时,我们会针对数据库验证加密字符串,打开plist并将ipa文件的url重写为{url to ipa}/{encryptedString}
。
这看起来效果很好。我现在唯一能想到的问题是,URL可以公开共享,是与不应该访问的人合法的用户。我认为我们可以通过确保网址对时间敏感来解决这个问题(例如,只有5分钟可用)。
最后,对没有正确加密字符串的plist或ipa的任何请求都会被拒绝。
我希望这对某人有用!