Flutter アプリで reCAPTCHA Enterprise を使用して App Check を使ってみる

プラットフォームを選択: iOS+ Android Web Flutter


このページでは、Flutter アプリで App Check を設定する方法について説明します。 reCAPTCHA Enterprise プロバイダを使用します。App Check を使用すると 自分のアプリだけがプロジェクトのバックエンド リソースにアクセスできるようになります。 詳細については、の概要をご覧くださいApp Check

App Check では、スコアベースの reCAPTCHA キーを使用する必要があるため、 ユーザーには表示されません。つまり、reCAPTCHA Enterprise プロバイダがユーザーに課題の解決を求めることはありません。

ユースケースで reCAPTCHA Enterprise 機能を必要とする場合や、独自のカスタム プロバイダで App Check を使用する場合は、カスタム App Check プロバイダを実装するをご覧ください。App Check

1. Firebase プロジェクトを設定する

  1. まだ行っていない場合は、 Flutter プロジェクトに Firebase をインストールして初期化します

  2. Google Cloud コンソールで [Fraud Defense] ページに移動し、 reCAPTCHA Enterprise プロバイダに対して次の操作を行います。

    1. 正しいプロジェクトが選択されていることを確認します(画面上部のプロジェクト選択ツールをご覧ください)。

    2. プロンプトが表示されたら、reCAPTCHA Enterprise API を有効にします。

    3. ターゲット プラットフォームに基づいてキーを作成します。

      iOS+

      iOS タイプのキーを作成し、アプリの バンドル ID(com.example.my_app など)を指定します。

      • Firebase プロジェクトで Firebase Apple App を作成したときに指定したバンドル ID と同じバンドル ID を入力してください。バンドル ID の値では、大文字と小文字が区別されます。

      • App Check の場合、各バンドル ID は 1 つの reCAPTCHA キーにのみ対応します。

      Android

      Android タイプのキーを作成し、アプリの パッケージ名(例: com.example.my_app)を指定します。

      • Firebase プロジェクトで Firebase Android App を作成したときに指定したパッケージ名と同じパッケージ名を入力してください。パッケージ名の値では、大文字と小文字が区別されます。

      • App Check の場合、各パッケージ名は 1 つの reCAPTCHA キーにのみ対応します。

      Web

      Web タイプのキーを作成し、ウェブアプリの各ドメイン を指定します。

      • App Check は、250 個を超えるドメインで提供されるウェブアプリをサポートしていません

      • 本番環境にデプロイされている(またはデプロイされる予定の)reCAPTCHA キーに localhost をドメインとして追加しないでください。

      • [チェックボックスによる本人確認を使用する] オプションはオフ のままにします。

      詳細な手順については、 スコアベースの reCAPTCHA キーを作成するをご覧ください。

    4. 各キーをメモします。Firebase Firebaseコンソールの登録 フローに追加する必要があります。

  3. Firebase コンソールで、[**セキュリティ**] > [**App Check**] に移動します。

  4. [アプリ] タブで、ターゲット プラットフォームの各アプリを登録して、 App CheckreCAPTCHA Enterprise プロバイダで使用します。 Google Cloud コンソールで取得したキーを指定する必要があります。

  5. 省略可: トークンの有効期間(TTL)を設定します。

    アプリの登録設定で、プロバイダが発行する App Check トークンのカスタム有効期間(TTL)を設定します。TTL は 30 分から 7 日までの任意の値に設定できます。この値を変更する場合は、次のトレードオフに注意してください。

    • セキュリティ: TTL が短いほど、漏えいしたトークンや傍受されたトークンが攻撃者によって悪用される可能性が低減するため、セキュリティが向上します。
    • パフォーマンス: TTL が短いほど、アプリで証明書の取得が頻繁に行われます。アプリで証明書が取得されるたびにネットワーク リクエストのレイテンシが増加するため、TTL が短いと、アプリのパフォーマンスに影響する可能性があります。
    • 割り当てとコスト: TTL を短くすると、証明書の取得が頻繁に発生し、割り当てが早く消費されます。有料サービスの場合は、費用が増加する可能性があります。割り当てと上限をご覧ください。

    通常は、デフォルトの TTL(1 時間)で十分です。App Check ライブラリは TTL の約半分でトークンを更新することに留意してください。

  6. 省略可: 詳細設定を構成します。

  7. [保存] をクリックします。

(省略可)詳細設定を構成する

ユーザーがアプリを開くと、reCAPTCHA Enterprise はキーの下でユーザー インタラクションがもたらす リスクレベルを評価し、0.1 刻みの 0.0 ~ 1.0 の範囲でスコアを返します。

  • スコア 0.0 は、インタラクションのリスクが高く、不正行為の可能性があることを示します。
  • スコア 1.0 は、インタラクションのリスクが低く、正当である可能性が非常に高いことを示します。

App Check では、アプリのリスクしきい値 を設定して、 このリスクに対する許容度を調整できます。

ほとんどのユースケースでは、デフォルトのしきい値 0.5 をおすすめします。ユースケースで調整が必要な場合は、Firebase コンソールでアプリごとにこの値を構成できます([Security] > [App Check] に移動します)。 以下で、アプリのリスクしきい値の構成に関する 重要な考慮事項 を展開して確認してください。

2. App Check プラグインをアプリに追加する

reCAPTCHA Enterprise プロバイダを使用するには、 対応する App Check プラグインを追加する必要があります。

  1. Flutter プロジェクトのルートから、次のコマンドを実行してプラグインをインストールします。

    flutter pub add firebase_app_check
    
  2. 完了したら、Flutter プロジェクトを再ビルドします。

    flutter run
    

3. App Check を初期化する

アプリで他の Firebase サービスを使用する前に、App Check を初期化する必要があります。

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_app_check/firebase_app_check.dart';
import 'firebase_options.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  await FirebaseAppCheck.instance.activate(
    providerWeb: ReCaptchaEnterpriseProvider(WEB_SITE_KEY),
    providerAndroid: const AndroidReCaptchaProvider(ANDROID_SITE_KEY),
    providerApple: const AppleReCaptchaProvider(IOS_SITE_KEY),
  );
  runApp(App());
}

4. 指標をモニタリングして適用を有効にする

アプリで App Check を設定したら、更新された アプリのユーザーへの配布を開始します。

更新されたクライアント アプリは、Firebase にリクエストを送信するたびに App Check トークンを送信します。ただし、App Check が適用されるまで、App Check は 無効なトークンを含むリクエストをブロックしません

指標をモニタリングする

**適用を有効にする前に**、 既存の正規ユーザーを中断しないように対策を行う必要があります。一方、アプリリソースの不審な使用に気づいた場合は、すぐに適用を有効にすることもできます。

この決定を行うことができるように、使用するサービスの App Check 指標を 確認します。

App Check の適用を有効にする

App Check がユーザーに与える影響を理解し、続行する準備ができたら 、App Check の適用を有効にできます。

デバッグ環境で App Check を使用する

App Check は、開発中のエミュレータ / シミュレータや localhost からのリクエスト、継続的インテグレーション(CI)環境からのリクエストなど、一部の環境を無効として分類します。

App Check が適用された後にこのような環境でアプリを実行するには、 本番環境の証明書プロバイダの代わりに App Check デバッグ プロバイダを使用するアプリのデバッグビルドを作成する必要があります。

詳細については、 App Check を Flutter アプリのデバッグ プロバイダで使用するをご覧ください

料金

App Check は、アプリが App Check トークンを更新するたびに、ユーザーの レスポンス トークンを検証するために、ユーザーに代わって評価を作成します。無料割り当て枠を超えて作成された評価ごとに、Firebase プロジェクトに課金されます。詳細については、 reCAPTCHA 料金をご覧ください。

デフォルトでは、アプリはこのトークンを 1 時間 に 2 回更新します。アプリで App Check トークンの更新頻度(つまり、新しい評価を作成する頻度)を制御するには、トークンの TTL を構成します。