モバイルアプリ認証を構成する
エンドユーザーがログインを実行すると、サーバーは2つの認証Cookieをモバイルアプリに送ります。これらのCookieにより、これに続くサーバーリクエストでエンドユーザーが認証されます。
サーバーは、使用する認証タイプに従って認証Cookieを取り扱います。
認証タイプ
認証には2種類あります。
- セッション認証 - エンドユーザーがアプリを終了すると認証Cookieが破棄されます。
- 永続的な認証 - アプリケーションを何回起動しても認証Cookieが維持されます。
開発者は、ユーザーをログインさせるためのUser_Login
アクションを呼び出す際に、RememberLogin
パラメータで認証タイプを指定します。
認証Cookie
この記事では、OutSystemsモバイルアプリの認証メカニズムで使用される、2種類のCookieについて説明しています。
Cookie nr1<User Provider Name>
:
- サーバーはこのCookieを、必要に応じて、セッションを強制的終了させるために使用します。
- セッション認証に必要な情報を含みます。
HttpOnly
として設定されます(JavaScriptではアクセス不可)。
Cookie nr2<User Provider Name>
:
- ビルトイン関数であるGetUserId()を使用し、ユーザー識別子についての情報をアプリケーションコードに提供します。
- CSRF攻撃を避けるために必要な情報を保持しています。
HttpOnly
として設定されません(JavaScriptからはアクセス可能)。
認証Cookieを検証する
サーバー呼び出しの実行時に、モバイルアプリはX-CSRF-TokenリクエストヘッダーにCSRFトークンを持つ認証Cookieをサーバーに送ります。
サーバーは、以下の条件を確認してリクエストを検証します。
- リクエストにX-CSRF-Tokenヘッダーが含まれていること。
- リクエストに2つの認証Cookieが含まれていること。
- Cookieの情報が本物であり、偽造されていないこと。
- ログイン有効期間が残っていること。
すべての条件を満たす場合、サーバーはCookieで識別されたユーザーからのものとしてリクエストを認証します。そうでない場合、匿名のユーザーからのものとして処理します。
認証キャッシュ
OutSystemsモバイルアプリの認証メカニズムは、リクエストの際に毎回データベースの認証情報を検証し更新するという負荷を避けるため、キャッシュ機能を持っています。
一定の期間、サーバーは認証済みセッションからのリクエスト認証にあたり、データベースから認証情報を取得するのではなく、Cookieに保存された情報を使用します。
モバイルアプリ認証の設定を構成する
OutSystemsのモバイル認証メカニズムは、様々なセキュリティ要件を満たせるよう、環境ごとに構成することができます。
全体的なモバイル認証を設定し、さらに永続的な認証とセッション認証に固有の設定を構成することもできます。
以下の設定は、永続的な認証とセッション認証の両方に適用されます。
- キャッシュ時間(分) - デバイスが送信した認証情報をサーバーが有効とみなし、データベースから取得しない分単位の時間。この時間が過ぎると、サーバーは認証トークンをデータベースに保存されている情報と照らし合わせて検証し、新しい認証トークンを提供します。0に設定した場合、認証キャッシュメカニズムは無効になります。
以下の設定は、永続的な認証に使用します。
-
最大アイドル時間 - サーバーと通信することなく、ユーザーがサーバーへのログインを継続できる最大の日数。この日数を過ぎると、アプリケーションをオンライン(サーバー接続)にした際に、ユーザーは再度ログインする必要があります。
-
Cookie有効期限 - サーバーと通信することなく、ユーザーがアプリケーションへのログインを継続できる最大の日数。この日数を過ぎるとCookieが期限切れになり、アプリケーションをオンライン(サーバー接続)にした際に、ユーザーは再度ログインする必要があります。
以下の設定は、セッション認証に使用されます。
- 最大アイドル時間 - サーバーがユーザー認証を有効と認識するサーバーコール間の分単位の時間。
OutSystems環境でモバイルアプリの認証設定を構成するには、以下の手順を実行します。
-
OutSystems環境のService Center管理コンソールに移動します。
-
[Administration]セクションに移動して、[Security]タブを選択します。
-
[Mobile Applications Authentication]領域を選択します。
このページでは、Cookieの値を認証・暗号化するための新しいキーを生成することもできます。これを実行した場合、モバイルアプリの全ユーザーが次のサーバーリクエスト時に再度ログインする必要が出てきます。新しいキーを生成するには、[Authentication and Encryption Keys]領域の[Generate]ボタンを押します。