如何在面向公众的网站上使用oauth保护iOS企业分发?

edh*_*ose 5 enterprise oauth ios cordova ios-provisioning

我们有一个应用程序的企业分发,我们只想在我们的组织内分发.

我们构建了指向正确位置的ipa文件和plist,并使用url创建了html页面:itms-services://?action = download&url = {link to my plist}.

然而,我们的问题是确保分销过程.我们希望拥有公司自有iPad的员工能够在移动中下载应用程序(它们具有高度移动性).因此,我们希望将plist和app放在公共网站上,这需要通过oauth服务登录.

我们的问题是,如果我们要求对应用程序和plist的URL进行身份验证,那么itms-services:// url将不再有效.发生的情况是用户单击itms-services链接,我们会看到未经过身份验证的plist请求(重定向到登录),然后是设备上的"无法连接到{hostname}".

目前,我能看到这个工作的唯一方法是不检查ipa和plist文件的身份验证.这意味着(我相信)有人猜测我们的plist文件的URL可以创建自己的itms-services链接并在未经授权的情况下下载应用程序,并且有效地导致我们违反与Apple的协议,仅向我们的员工分发.

因此,我的问题是 - 如何创建一个不向公众公开ipa和plist文件的itms-services链接?如果相关,则使用no​​dejs构建网站,该应用程序是PhoneGap应用程序.

edh*_*ose 10

我已经找到了解决方案.

我们无法使用oauth身份验证,因为iOS安装过程不提供输入凭据的机会.

相反,当用户请求我们显示itms-services://链接的页面时,我们为该用户创建一个唯一的字符串并使用AES-256对其进行加密,然后将其存储在数据库中.

然后我们的网址变为:itms-services://{url to plist}/{encryptedString}.我们尝试使用查询字符串,但似乎iOS安装工具没有通过它.

当安装工具请求Plist时,我们验证针对数据库的加密字符串,打开plist并将URL重写到ipa文件中{url to ipa}/{encryptedString}.

这看起来效果很好.我现在唯一能想到的问题是,URL可以公开共享,是与不应该访问的人合法的用户.我认为我们可以通过确保网址对时间敏感(例如仅可用5分钟)来解决这个问题.

最后,对没有正确加密字符串的plist或ipa的任何请求都会被拒绝.

我希望这对某人有用!

  • 所以它就像......几乎是一个解决方案.我认为这是itms-services://协议的一个严重问题.它应该肯定支持身份验证. (3认同)