我正在构建一个android信息亭应用程序(作为设备所有者运行),它将不在google play商店中,并且将由二维码提供。
直到现在,一切都很顺利。我可以签署我的应用程序,建立一个二维码,并得到一个工厂重置平板电脑(三星Galaxy Tab A)阅读二维码安装应用程序,并开始作为一个信息亭。我做这一切都是使用一个本地网络服务器,不安全或在互联网上。
现在,我将使用我们的面向公众的web服务器,该服务器通过basic auth进行保护。我试过在二维码中使用一个普通的url,如下所示:
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://<fully_qualified_server_name>/<path_to_apk>/<apk_name>"
显然,<>s填写正确。这不管用,但也不奇怪。我只是希望三星/谷歌的软件足够聪明,能提示我输入用户名和密码。
所以,我用二维码里面的用户名和密码试了一下:
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://<username>:<password>@<fully_qualified_server_name>/<path_to_apk>/<apk_name>"
但这也没用。两者都失败,并显示无助的错误消息:
Oops! Couldn't download the admin app.
第二个url与wget一起正常工作,所以我认为这里没有输入错误。第一个wget失败,因为它需要用户名和密码。
由于平板电脑尚未配置,我无法打开USB调试以查找更有用的错误消息。
有没有一种方法可以使它与基本(或任何)身份验证一起工作?或者你对如何得到更有用的错误信息有什么想法?
更新
从我们的web服务器查看访问日志,我们可以看到相同的url在web浏览器或wget中正常工作,但是android失败的原因是:
<hostname_redacted> 72.48.253.220 - - [11/Jun/2018:10:35:14 -0500] "GET /2.13.0/ORPanel-0.1-release.apk HTTP/1.1" 401 487 "-" "AndroidDownloadManager/7.0 (Linux; U; Android 7.0; SM-T580 Build/NRD90M)"
我们目前正在考虑,我们将允许从“androiddownloadmanager”下载apk,而不需要用户名和密码。默默无闻是个蹩脚的安全措施,但我看不到更好的选择。建设性地,它将用户名和密码隐藏在二维码之外。