目次
概要
今回のブログポストでは、Flutterで開発したアプリが正規品であることを検証し、検証されていないクライアントがFirebaseバックエンドサービス(Firestore、Storage、Functionsなど)にアクセスすることを防ぐために、FirebaseのApp Checkを設定する方法について説明します。
ブログシリーズ
このブログはシリーズで制作されました。次のリンクを通じて他のブログポストもご確認ください。
- [Flutter] Firebase Core
- [Flutter] Firebase Analytics
- [Flutter] Firebase Crashlytics
- [Flutter] Firebase App Check
- [Flutter] Firebase Performance
Firebaseプロジェクトの作成と設定
FlutterでFirebaseを使用するには、Firebaseプロジェクトを作成し、firebase_coreパッケージをインストールする必要があります。以下のリンクを通じて詳細をご確認ください。
firebase_app_checkのインストール
FlutterプロジェクトでFirebase App Checkを使用するには、firebase_app_checkパッケージをインストールする必要があります。次のコマンドを実行してfirebase_app_checkパッケージをインストールします。
flutter pub add firebase_app_check
FlutterでApp Checkを有効化
firebase_app_checkパッケージをインストールした後、FlutterアプリでApp Checkを有効化する必要があります。main.dartファイルを次のように修正します。
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_app_check/firebase_app_check.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await FirebaseAppCheck.instance.activate(
androidProvider: AndroidProvider.playIntegrity,
appleProvider: AppleProvider.deviceCheck,
);
runApp(MyApp());
}
androidProviderにはAndroidProvider.playIntegrityを設定してPlay Integrityを使用し、appleProviderにはAppleProvider.deviceCheckを設定してDeviceCheckを使用します。
デバッグモードでApp Checkを使用
開発中は、実際のデバイスではなくエミュレータやシミュレータでテストする必要がある場合があります。この場合、デバッグモードでApp Checkを使用するために次のように設定できます。
await FirebaseAppCheck.instance.activate(
androidProvider: kDebugMode ? AndroidProvider.debug : AndroidProvider.playIntegrity,
appleProvider: kDebugMode ? AppleProvider.debug : AppleProvider.deviceCheck,
);
デバッグモードでは、AndroidProvider.debugとAppleProvider.debugを使用してデバッグトークンを生成します。生成されたデバッグトークンはコンソールに出力され、このトークンをFirebase Consoleに登録する必要があります。
Firebase ConsoleでApp Check > Apps > 該当アプリのメニュー > Manage debug tokensを選択してデバッグトークンを登録できます。
Android設定
Google Cloud Platform設定
Firebase App Checkを使用するには、Google Cloud PlatformでApp Checkを有効化する必要があります。次のリンクからGoogle Cloud Consoleにアクセスし、App Checkを有効化します。
次にPlay Integrity APIを検索します。

検索結果からPlay Integrity APIを選択し、Enableボタンをクリックします。

Google Play Console設定
Play Integrityを設定するには、Google Play ConsoleでPlay Integrity APIを使用するように設定する必要があります。
Google Cloud Platformの連携
まずGoogle Play Consoleに移動し、Play Integrityを設定したいアプリのアプリの完全性(App integrity)メニューに移動します。

下部にあるCloudプロジェクトをリンク(Link Cloud project)を選択します。すると次のようにGoogle Cloud projectを選択する画面が表示されます。

該当アプリのGoogle Cloud projectを選択し、適用(Apply)ボタンをクリックしてGoogle Cloud projectを選択します。Google Cloudプロジェクトが連携されると、次のような画面を確認できます。

この画面で目標を更新(Update goal)ボタンをクリックして、Play Integrityで保護したいアクションを設定します。

自動保護の設定
自動保護(Automatic protection)を設定してアプリを保護する必要があります。

アプリの完全性ページにある自動保護の設定(Turn on)ボタンをクリックします。

インストーラーチェック(Installer check)をクリックして設定します。その後、右下の保存(Save)ボタンをクリックして設定を保存します。
ストア掲載情報の表示
ストア掲載情報の表示(Store listing visibility)を設定してアプリを保護できます。

アプリの完全性ページにあるストア掲載情報の表示の設定(Turn on)ボタンをクリックします。

デバイスの完全性チェック(Device integrity checks)を選択し、右下の保存(Save)ボタンをクリックして設定を保存します。
アプリ署名キーのコピー
Firebase App Checkを使用するには、Google Play Consoleで使用するアプリ署名(Play app signing)キーをコピーしてFirebase Consoleに登録する必要があります。
Playアプリ署名(Play app signing)項目の設定(Settings)をクリックして、アプリ署名(App signing)ページに移動します。

アプリ署名ページでアプリ署名キー証明書(App signing key certificate)のSHA-256証明書フィンガープリント(SHA-256 certificate fingerprint)をコピーします。これは後でFirebase Consoleに登録するときに使用します。

次に、下部にあるアップロードキー証明書(Upload key certificate)のSHA-256証明書フィンガープリント(SHA-256 certificate fingerprint)もコピーします。これも後でFirebase Consoleに登録するときに使用します。

iOS設定
Firebase App Checkを使用するには、Key IDとTeam IDを設定する必要があります。Firebase App Checkで使用するKeyを生成し、Team IDを確認するためにApple Developerにアクセスします。
- Apple Developer: https://developer.apple.com/
Apple Developerにアクセスした後、アカウント(Account)> Certificates, Identifiers & Profiles > Keysに移動します。

Keysの横にある+ボタンをクリックして新しいKeyを生成します。

Key nameを入力し、DeviceCheckにチェックを入れてContinueボタンをクリックしてKeyを生成します。

Key nameとDeviceCheckにチェックが入った状態でRegisterボタンをクリックしてKeyを生成します。

最後に、Apple Developerページ上部にあるTeam IDをコピーします。

ここでダウンロードしたKeyファイルとKey ID、Team IDをFirebase Consoleに登録する予定です。
Firebase設定
AndroidとiOSの設定が完了したら、Firebase ConsoleでFirebase App Checkを設定します。Firebase Consoleに移動し、App Checkを設定したいアプリのApp Checkを選択します。

Get startedボタンをクリックしてApp Checkの設定を開始します。

上部のAppsタブを選択し、リストに表示されたAndroidの右側にあるメニューアイコンを選択してShow detailsをクリックします。

Play Integrityを選択し、SHA-256 certificate fingerprintに先ほどコピーしたアプリ署名キー証明書(SHA-256 certificate fingerprint)を貼り付けます。

Add another fingerprintをクリックし、先ほどコピーしたアップロードキー証明書(SHA-256 certificate fingerprint)を貼り付けます。

最後にSaveボタンをクリックして設定を保存します。
iOS設定
iOSアプリのApp Checkを設定します。リストに表示されたiOSアプリの右側にあるメニューアイコンを選択してShow detailsをクリックします。
DeviceCheckを選択し、先ほどApple DeveloperからダウンロードしたKeyファイルをアップロードします。Key IDとTeam IDを入力し、Saveボタンをクリックして設定を保存します。
App Checkの適用
App Checkの設定が完了したら、FirebaseバックエンドサービスにApp Checkを適用できます。App CheckページでAPIsタブを選択すると、Firebaseバックエンドサービスのリストを確認できます。
各サービスの横にあるEnforceボタンをクリックしてApp Checkを適用できます。ただし、App Checkを適用すると検証されていないクライアントはそのサービスにアクセスできなくなるため、すべてのクライアントがApp Checkを有効化した後に適用することをお勧めします。
完了
これでFlutterでFirebase App Checkを使用するためにFlutterプロジェクトにfirebase_app_checkを設定する方法について説明しました。Firebase App Checkを使用すると、検証されていないクライアントがFirebaseバックエンドサービスにアクセスすることを防ぐことができ、アプリのセキュリティを強化できます。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Dekuが開発したアプリを使ってみてください。Dekuが開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。






