6

我有一个用于部署内部应用程序的企业分发证书。我的某些应用程序包含非常敏感的材料,并且为了保护应用程序不被公司中的任何人安装,我在 Web 服务器上使用受密码保护的目录来托管 .IPA 文件,而 .plist 文件位于打开网络服务器。这是我遇到的问题:

在 iOS6 上,我单击要安装的链接(以 itms-services:// 开头),iOS 提示我输入我的凭据,然后继续安装应用程序。

在 iOS7 上,相同的链接可以正常工作,但由于某种原因,它两次要求我提供凭据。输入我的凭据两次后,应用程序就可以正常安装了。

任何人都知道为什么会这样?这个过程有什么不同?

4

2 回答 2

5

我检查了 Web 服务器的访问日志。itunessstored 应用程序询问了两次。(头部和获取)

10.0.2.2 - - [06/Feb/2014:14:50:48 +0900] "HEAD /test/app/app.ipa HTTP/1.1" 401 - "-" "itunesstored/1.0 iOS/7.0.4 model/iPhone4,1 (6; dt:73)"
10.0.2.2 - test [06/Feb/2014:14:51:03 +0900] "HEAD /test/app/app.ipa HTTP/1.1" 200 - "-" "itunesstored/1.0 iOS/7.0.4 model/iPhone4,1 (6; dt:73)"
10.0.2.2 - - [06/Feb/2014:14:51:04 +0900] "GET /test/app/app.ipa HTTP/1.1" 401 539 "-" "itunesstored/1.0 iOS/7.0.4 model/iPhone4,1 (6; dt:73)"
10.0.2.2 - test [06/Feb/2014:14:51:09 +0900] "GET /test/app/app.ipa HTTP/1.1" 200 4066787 "-" "itunesstored/1.0 iOS/7.0.4 model/iPhone4,1 (6; dt:73)"

因此,我更改了 Web 服务器的设置以在请求 HEAD 时忽略基本身份验证。

前:

<Directory "/Library/WebServer/Documents/test/app/">
    AuthType Basic
    AuthName "BASIC AUTH"
    AuthUserFile "/etc/apache2/htpasswd"
    Require valid-user
</Directory>

后:

SetEnvIf Request_Method HEAD headreq
<Directory "/Library/WebServer/Documents/test/app/">
    Order Allow,Deny
    Allow from env=headreq
    AuthType Basic
    AuthName "BASIC AUTH"
    AuthUserFile "/etc/apache2/htpasswd"
    Require valid-user
    Satisfy Any
</Directory>

之后,itunessstored 应用程序只询问了一次。(仅获取)。

于 2014-02-06T07:39:44.633 回答
1

不是您问题的真正答案,但您的方法并不能保证未经授权的人无法安装您的应用程序。如果拥有 IPA 文件所在目录密码的人与其他人共享该文件 - 您将没有任何保护措施。

我有类似的情况,我直接在应用程序中设置了密码保护。使用应用程序生成的唯一密钥,用户将请求一个密码,该密码将由该唯一密钥生成(因此对于该用户来说是唯一的)以获得对应用程序的访问权限。

于 2014-01-15T19:31:09.770 回答