5 月 10 日開催の Google I/O で Firebase の最新情報をお届けします。今すぐ登録

Android で Play Integrity を使用して App Check を使ってみる

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このページでは、組み込みの Play Integrity プロバイダを使用して、Android アプリで App Check を有効にする方法について説明します。App Check を有効にすると、自分のアプリだけがプロジェクトの Firebase リソースにアクセスできるようになります。この機能の概要をご覧ください。

現在、組み込みの Play Integrity プロバイダでサポートされるのは、Google Play で配布される Android アプリのみです。Play Integrity の Play 以外の機能を使用する場合や、独自のカスタム プロバイダで App Check を使用する場合は、App Check カスタム プロバイダを実装するをご覧ください。

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

  1. Firebase を Android プロジェクトに追加します(まだ行っていない場合)。

  2. Play Integrity API を有効にします。

    1. Google Play Console でアプリを選択します。アプリをまだ追加していない場合は追加します。

    2. [リリース] セクションで、[設定] > [アプリの完全性] をクリックします。

    3. [Integrity API] ページで [プロジェクトをリンク] をクリックし、Google Cloud プロジェクトのリストから Firebase プロジェクトを選択します。

      ここで選択するプロジェクトは、アプリを登録するプロジェクトと同じである必要があります(次のステップを参照)。

  3. Firebase コンソールで [App Check] セクションに移動し、Play Integrity プロバイダで App Check を使用するようにアプリを登録します。アプリの署名証明書の SHA-256 フィンガープリントを提供する必要があります。

    通常、Firebase プロダクトで適用を有効にすると、登録されているアプリのみがプロダクトのバックエンド リソースにアクセスできるようになるため、プロジェクトのすべてのアプリを登録する必要があります。

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

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

    通常は、デフォルトの TTL(1 時間)で十分です。App Check ライブラリは TTL の約半分でトークンを更新します。

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

モジュール(アプリレベル)の Gradle ファイル(通常は <project>/<app-module>/build.gradle)で、App Check Android ライブラリの依存関係を宣言します。ライブラリのバージョニングの制御には、Firebase Android 部品構成表(BoM)を使用することをおすすめします。

Kotlin+KTX

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:31.2.3')

    // Add the dependency for the App Check library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-appcheck-playintegrity'
}

Firebase Android 部品構成表を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

(代替方法)BoM を使用せずに Firebase ライブラリの依存関係を追加する

Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。

アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、BoM を使用してライブラリのバージョンを管理することを強くおすすめします。

dependencies {
    // Add the dependency for the App Check library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-appcheck-playintegrity:16.1.2'
}

Java

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:31.2.3')

    // Add the dependency for the App Check library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-appcheck-playintegrity'
}

Firebase Android 部品構成表を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

(代替方法)BoM を使用せずに Firebase ライブラリの依存関係を追加する

Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。

アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、BoM を使用してライブラリのバージョンを管理することを強くおすすめします。

dependencies {
    // Add the dependency for the App Check library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-appcheck-playintegrity:16.1.2'
}

3. App Check を初期化する

他の Firebase SDK を使用する前に、以下の初期化コードをアプリに追加します。

Kotlin+KTX

FirebaseApp.initializeApp(/*context=*/this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    PlayIntegrityAppCheckProviderFactory.getInstance()
)

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        PlayIntegrityAppCheckProviderFactory.getInstance());

次のステップ

アプリに App Check ライブラリがインストールされたら、更新されたアプリのユーザーへの配布を開始します。

更新されたクライアント アプリは、Firebase にリクエストを送信するたびに App Check トークンを送信しますが、Firebase コンソールの [App Check] セクションで適用を有効にするまで、Firebase プロダクトは有効なトークンを必要としません。

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

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

使用するサービスの App Check 指標を確認すると、この決定を行ううえで役立ちます。

App Check の適用を有効にする

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

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

アプリを App Check に登録した後に、開発中のエミュレータや継続的インテグレーション(CI)など、通常は App Check が有効と分類しない環境でアプリを実行する場合は、実際の証明書プロバイダの代わりに App Check デバッグ プロバイダを使用するデバッグビルドのアプリを作成できます。

Android で App Check とデバッグ プロバイダを使用するをご覧ください。