このページでは、Flutter アプリで App Check を有効にする方法について説明します。デフォルト プロバイダは Android の Play Integrity、Apple プラットフォームの Device Check、Web の reCAPTCHA v3 です。 App Check を有効にすると、アプリのみがプロジェクトの Firebase リソースにアクセスできるようになります。この機能の概要を参照してください。
1. Firebase プロジェクトをセットアップする
FlutterFire をまだインストールしていない場合は、インストールして初期化します。
Firebase コンソールの[Project Settings] > [App Check]セクションで、Play Integrity、Device Check、および reCAPTCHA プロバイダーで App Check を使用するようにアプリを登録します。
通常、プロジェクトのすべてのアプリを登録する必要があります。これは、Firebase プロダクトの適用を有効にすると、登録されたアプリのみがプロダクトのバックエンド リソースにアクセスできるようになるためです。
オプション: アプリの登録設定で、プロバイダーによって発行された App Check トークンのカスタム Time-to-Live (TTL) を設定します。 TTL は 30 分から 7 日間の任意の値に設定できます。この値を変更するときは、次のトレードオフに注意してください。
- セキュリティ: TTL を短くすると、漏洩または傍受されたトークンが攻撃者によって悪用される可能性があるウィンドウが減少するため、セキュリティが強化されます。
- パフォーマンス: TTL が短いほど、アプリはより頻繁に構成証明を実行します。アプリの構成証明プロセスは、実行されるたびにネットワーク リクエストに待機時間を追加するため、短い TTL はアプリのパフォーマンスに影響を与える可能性があります。
- クォータとコスト: TTL を短くし、再認証を頻繁に行うと、クォータがより早く枯渇します。また、有料サービスの場合は、より多くのコストがかかる可能性があります。割り当てと制限を参照してください。
ほとんどのアプリでは、デフォルトの TTL が適切です。 App Check ライブラリは、TTL 期間の約半分でトークンを更新することに注意してください。
2. App Check ライブラリをアプリに追加する
Flutter プロジェクトのルートから、次のコマンドを実行してプラグインをインストールします。
flutter pub add firebase_app_check
完了したら、Flutter アプリケーションを再構築します。
flutter run
3.アプリチェックの初期化
Storage などの Firebase サービスを使用する前に、ただしFirebase.initializeApp()
を呼び出した後に実行されるように、次の初期化コードをアプリに追加します。
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
// Import the firebase_app_check plugin
import 'package:firebase_app_check/firebase_app_check.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await FirebaseAppCheck.instance.activate(
webRecaptchaSiteKey: 'recaptcha-v3-site-key',
// Default provider for Android is the Play Integrity provider. You can use the "AndroidProvider" enum to choose
// your preferred provider. Choose from:
// 1. debug provider
// 2. safety net provider
// 3. play integrity provider
androidProvider: AndroidProvider.debug,
);
runApp(App());
}
次のステップ
App Check ライブラリがアプリにインストールされたら、更新されたアプリのユーザーへの配布を開始します。
更新されたクライアント アプリは、Firebase へのすべてのリクエストとともに App Check トークンの送信を開始しますが、Firebase コンソールの App Check セクションで適用を有効にするまで、Firebase 製品ではトークンが有効である必要はありません。
メトリックを監視し、適用を有効にする
ただし、強制を有効にする前に、それによって既存の正当なユーザーが混乱しないことを確認する必要があります。一方、アプリ リソースの不審な使用が見られる場合は、すぐに適用を有効にすることをお勧めします。
この決定を行うために、使用しているサービスの App Check 指標を確認できます。
- Realtime Database、Cloud Firestore、Cloud Storage のApp Check リクエスト メトリックを監視します。
- Cloud Functions の App Check リクエスト メトリックをモニタリングします。
App Check の実施を有効にする
App Check がユーザーにどのように影響するかを理解し、続行する準備ができたら、App Check の適用を有効にできます。
- Realtime Database、Cloud Firestore、Cloud Storage に対してApp Checkの適用を有効にします。
- Cloud Functions の App Check 適用を有効にします。
デバッグ環境で App Check を使用する
アプリを App Check に登録した後、開発中のエミュレーターや継続的インテグレーション (CI) 環境など、App Check が通常は有効と分類しない環境でアプリを実行する場合は、次のことができます。実際の構成証明プロバイダーの代わりに App Check デバッグ プロバイダーを使用するアプリのデバッグ ビルドを作成します。
Flutter アプリのデバッグ プロバイダーで App Check を使用する を参照してください。