安全服务器上的iOS 7企业分发

时间:2014-01-06 18:54:43

标签: ios ios6 ios7 basic-authentication enterprise-distribution

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

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

在iOS7上,同样的链接工作正常,但出于某种原因,它要求我的凭据TWICE。一旦我的凭证输入两次,应用程序安装就好了。

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

2 个答案:

答案 0 :(得分:5)

我检查了Web服务器的访问日志。 itunes存储的应用程序问TWICE。 (HEAD和GET)

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>

之后, itunes存储的应用程序仅询问ONCE。 (只有GET)。

答案 1 :(得分:1)

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

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