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

问题描述 投票:5回答:1

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

我们已经构建了指向正确位置的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应用程序。

ios cordova oauth enterprise ios-provisioning
1个回答
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的任何请求都会被拒绝。

我希望这对某人有用!

© www.soinside.com 2019 - 2024. All rights reserved.