基本的に、ネイティブ モバイル アプリケーションのアーキテクチャは、デバイスにインストールされるクライアントアプリケーション (デバイスに応じて、APK、IPA、または JAD) と、サーバーアプリケーション (アプリケーションのビジネスロジックを解決する
REST Web サービス) で構成されます。
クライアントアプリケーション (APK、IPA、JAD) は、(プラットフォームに応じて) 任意のアプリケーション マーケット プレイスから入手できます。
サーバーアプリケーションは任意のホストサーバーにインストールできます。
アプリケーションの特性に応じて、多くの場合、サーバーアプリケーションにアクセスできるのは承認されたユーザーのみです。また、REST Web サービスには、そのデバイスからのみアクセスできる (ほかのデバイスからは不可) という前提条件もあります。ほかのクライアントからアクセスできる場合も、承認されたクライアントのみであることが必要です。
これは、GeneXus ネイティブ モバイル アプリケーションで
GAM を使用することで実現できます。この場合、セキュリティメカニズムは
OAuth に基づいています。
これらのアプリケーションのアーキテクチャの基本構造と、それらのデプロイに推奨される方法を次に示します。
(1)
クライアント ID 情報
ユーザーがネイティブ モバイル アプリケーションをインストールすると、対応する APK、IPA、JAD がデバイスにダウンロードされます。
このパッケージ (APK、IPA、JAD) には、クライアントアプリケーション自体に加えて、サーバーアプリケーションに接続するためのクライアント ID が含まれています。
ユーザーがアプリケーションに接続するためには、承認されたユーザー名/パスワードも必要です。
REST Web サービスで構成される安全なアプリケーションに接続するためには、承認されたユーザー名/パスワードをエンドユーザーが知る必要があります。これらの資格情報は、アプリケーションのインストール時にデバイスにダウンロードされたクライアント ID と一緒に、サーバーアプリケーションとの最初の接続を確立するために使用されます。
(2) access_token 情報
ユーザーがアプリケーションに接続しようとすると、ログインがユーザーに表示されます。最初に接続しようとしたときに、ユーザー名、パスワード、クライアント ID を使用してサーバーへの POST が実行され、HTTP 応答が、以降の接続で使用される access_token を返します。
この access_token は、 [
OAuth token expire (minutes) ] プロパティの値に応じて、ユーザーが接続している間は保持されるか、定期的にリセットされるかします。
access_token はデバイスのキャッシュに格納され、それが有効な (ユーザーがログアウトしていない) 間は、再びログイン画面が表示されることはありません。
そのため、ユーザーの承認後、REST Web サービスが要求されるたびに、access_token が OAuth サーバーと GAM に対して検証され、望ましくないエントリーを回避します。
高度なセキュリティが必要とされるアプリケーションの場合は、HTTPS の使用を強く推奨します。
この問題に関する次のドキュメントを参照してください:
本番運用の準備: GAM を使用したアプリケーションのチェックリスト
GeneXus で安全な REST Web サービスを開発する方法