アプリを完全に無料のアプリとして AppStore に提出できますが、ユーザーがログインして認証を行う必要があります。そうすれば、誰でもダウンロードできますが、実際に使用できるユーザーを制御できます。Apple がすべての配布を行うため、アドホックな展開や IT 部門について心配する必要はありません。
次に、アプリの認証を管理する非常に単純な構成管理システムを Web ホスト (または Google AppEngine などのプラットフォーム) 上に構築します。
ユーザーが無料アプリを起動すると、ユーザー名/パスワードなどの入力を求められます。その情報は Web ベースの構成管理システムに送信され、確認されます。アプリは、構成管理システムから受け入れ可能な確認を受信すると、そのユーザーが使用できるようにロックを解除します。
アプリは、起動するたびに再認証するか (多くの制御が必要な場合に便利です)、認証済みであることを示すキー ファイルをローカルに保存できます。アプリの起動時にローカル キー ファイルが見つかった場合、それ自体が認証済みであると見なされ、再度チェックされることはありません。
1 人につき 1 つのユーザー アカウントを使用するか、会社全体で 1 つのユーザー アカウントを使用するかは、あなた次第です。
この配布スタイルは、アプリを使用できるユーザーを制御したいが、AppStore が提供する簡単な展開が必要な場合に非常に便利です。
Apple は、このリモート サーバーに対する認証方法を使用する多くのアプリを AppStore に受け入れています (Skype は完璧な例です)。
構成サーバーでデバイスの UDID を追跡している場合は、それを事前にロードして、特定のデバイスのセットを機能させることもできます。
さらに、ここで説明したことは iPhone 固有のものではないため、将来、アプリを移植したり、これを必要とする他のアプリを構築したりする場合に、Android (またはデスクトップ) などの他のプラットフォームで同じ構成管理システムと概念を使用できます。
また、デバイスを認証するアクションはプロセッサやデータを集中的に使用するものではないため、これを Google AppEngine で構築する場合、無料の割り当てを超えることはなく、Google のバックエンド アーキテクチャの安定性とスケーラビリティが得られるため、費用が発生することはほとんどありません。
この特定の展開は社内のバックエンド システムを管理するためのものであるため、AppStore を介して展開することは安全ではないように見える可能性があります。これは、アプリに機密情報が埋め込まれているためです。特に、バックエンドへの接続と認証を可能にする情報です。システム。
これに対する解決策は、この情報をアプリ内に含めず、その情報をアプリが構成管理サーバーから受信する応答の一部にすることです。基本的に、アプリにはその機能を実行するために必要なロジックが含まれていますが、接続情報がなければ、バックエンド システムを管理することはできません。
アプリを起動するたびに認証するようにすると、構成サーバーの接続情報を変更でき、新しい展開を必要とせずにアプリが新しい情報に更新されます。ユーザーはアプリを再起動するだけです。これにより、クライアントは、アプリケーション コードを無効にすることなく、内部ネットワーク構成を柔軟に変更できます。この情報をアプリケーション内で手動で構成できるようにすることもできますが、各デバイスでアプリケーションをセットアップするときに IT コストが発生します。構成管理システムを既にセットアップする場合は、それを使用することもできます。
上記のソリューションをさらに安全にするために、構成管理システムを社内に配置し、会社のファイアウォールの背後に配置して、誰がアプリを取得しても、会社のネットワーク内にいる場合を除き、構成システムに接続できないようにすることができます。