2012-06-02 11 views
5

私たちは私たちの組織内でのみ配布したいアプリケーションのエンタープライズ配布を持っています。公開されているウェブサイトでoauthを使用してiOSエンタープライズ配布を保護する方法は?

適切な場所を指すipaファイルとplistを作成し、url:itms-services://?action = download & url = {plistへのリンク}でhtmlページを作成しました。

しかし、私たちの問題は、配布プロセスを確実にすることです。私たちは、会社所有のiPadを持つ従業員が、移動中にアプリをダウンロードできるようにしたいと考えています(移動性が高い)。だから我々はoauthサービスを介してログインする必要がある公開ウェブサイトにplistとアプリを配置したい。

私たちの問題は、アプリとplistのURLの認証が必要な場合、itms-services:// urlは動作しなくなるということです。何が起こるかは、ユーザーがitms-servicesリンクをクリックすると、plist(ログインにリダイレクトされる)に対する認証されていない要求が表示され、続いて「デバイスに{ホスト名}に接続できません」というメッセージが表示されます。

現時点では、ipaファイルとplistファイルの認証チェックが行われていないと、この作業が表示される唯一の方法です。これは、私たちのplistファイルへのURLを推測している人が、独自のitms-servicesリンクを作成し、許可なしにアプリをダウンロードしてしまう可能性があることを意味します(アップルとの契約を違反することになります)。

私の質問は - どうすればipaとplistファイルを公開しないitms-servicesリンクを作成できますか?関連性がある場合、ウェブサイトはnodejsを使用して作成され、アプリはPhoneGapアプリです。

答えて

7

私はこれに対する解決策を見つけました。

oauth認証を使用できません.iOSインストールプロセスでは、資格情報を入力する機会がないためです。

代わりに、ユーザーがitms-services://リンクを表示したページを要求すると、そのユーザーに固有の文字列を作成し、AES-256を使用して暗号化してデータベースに格納します。

URLはitms-services://{url to plist}/{encryptedString}となります。クエリ文字列を使用しようとしましたが、iOSインストールツールがそれをパスしないようです。

インストールツールがPlistを要求すると、データベースに対して暗号化された文字列を確認し、plistを開き、ipaファイルのURLを{url to ipa}/{encryptedString}に書き換えます。

これは非常にうまくいくようです。私が現時点で考えることができる唯一の問題は、URLがアクセス権を持たない人と正当なユーザーとして公に共有できることです。私は、URLが時間に敏感であることを保証することによってこれを回避することができると考えています(例えば、5分間しか利用できません)。

最後に、暗号化された正しい文字列のないplistまたはipaへのリクエストはすべて拒否されます。

誰かにとって便利だと思います!

+3

だから、ほぼ解決策です。これは、itms-services://プロトコルの深刻な問題だと思います。間違いなく認証をサポートするはずです。 – xdumaine

関連する問題