Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Webアプリのカスタムプロバイダーでアプリチェックを有効にする

このページショーは、あなたはどのように使用して、ウェブアプリでアプリのチェックを有効にするには、カスタムアプリケーションのチェック・プロバイダを。アプリチェックを有効にすると、アプリのみがプロジェクトのFirebaseリソースにアクセスできるようになります。

デフォルトreCAPTCHAのプロバイダとアプリケーションのチェックを使用する場合は、参照ウェブアプリにreCAPTCHAの持つアプリのチェックを有効にします

あなたが始める前に

1.アプリチェックライブラリをアプリに追加します

あなたのWebアプリにFirebaseを追加し、あなたがまだの場合。必ずAppCheckライブラリをインポートしてください。

2. AppCheckプロバイダーオブジェクトを作成します

カスタムプロバイダーのAppCheckプロバイダーオブジェクトを作成します。このオブジェクトは持っている必要がありますgetToken()カスタムアプリケーションのチェック・プロバイダは真正性の証明として必要とし、トークンのチェックアプリケーションと引き換えに、あなたのトークン取得サービスに送信しますどんな情報収集方法を、。アプリのチェックSDKハンドルトークンキャッシングが、そういつもの実装に新しいトークンを取得getToken()

Webバージョン9

const { CustomProvider } = require("firebase/app-check");

const appCheckCustomProvider = new CustomProvider({
  getToken: () => {
    return new Promise((resolve, _reject) => {
      // TODO: Logic to exchange proof of authenticity for an App Check token and
      // expiration time.

      // ...

      const appCheckToken = {
        token: tokenFromServer,
        expireTimeMillis: expirationFromServer * 1000
      };

      resolve(appCheckToken);
    });
  }
});

Webバージョン8

const appCheckCustomProvider = {
  getToken: () => {
    return new Promise((resolve, _reject) => {
      // TODO: Logic to exchange proof of authenticity for an App Check token and
      // expiration time.

      // ...

      const appCheckToken = {
        token: tokenFromServer,
        expireTimeMillis: expirationFromServer * 1000
      };

      resolve(appCheckToken);
    });
  }
};

3.アプリチェックを初期化します

Firebaseサービスにアクセスする前に、次の初期化コードをアプリケーションに追加します。

Webバージョン9

const { initializeApp } = require("firebase/app");
const { initializeAppCheck } = require("firebase/app-check");

const app = initializeApp({
  // Your firebase configuration object
});

const appCheck = initializeAppCheck(app, {
  provider: appCheckCustomProvider,

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  isTokenAutoRefreshEnabled: true    
});

Webバージョン8

firebase.initializeApp({
  // Your firebase configuration object
});

const appCheck = firebase.appCheck();
appCheck.activate(
  appCheckCustomProvider,

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  true);

App Checkライブラリがアプリにインストールされたら、デプロイします。

更新されたクライアントアプリは、Firebaseへのすべてのリクエストとともにアプリチェックトークンの送信を開始しますが、Firebase製品では、Firebaseコンソールの[アプリチェック]セクションで適用を有効にするまで、トークンが有効である必要はありません。詳細については、次の2つのセクションを参照してください。

4.リクエストの指標を監視する

更新されたアプリがユーザーの手に渡ったので、使用しているFirebase製品に対してアプリチェックの実施を有効にできます。ただし、そうする前に、そうすることで既存の正当なユーザーを混乱させないことを確認する必要があります。

リアルタイムデータベースとクラウドストレージ

リアルタイムデータベースとクラウドストレージでこの決定を行うために使用できる重要なツールは、アプリチェックリクエストの指標画面です。

製品のアプリケーションのチェック要求メトリックを表示するには、開くプロジェクト設定>アプリケーションのチェックFirebaseコンソールのセクションを。例えば:

アプリチェックメトリックページのスクリーンショット

各製品のリクエストメトリックは、次の4つのカテゴリに分類されます。

  • 検証の要求は有効なアプリケーションはトークンをチェック有するものです。 App Checkの適用を有効にすると、このカテゴリのリクエストのみが成功します。

  • 古いクライアントの要求は、Appチェックトークンが欠落しているものです。これらのリクエストは、アプリチェックがアプリに含まれる前の古いバージョンのFirebaseSDKからのものである可能性があります。

  • 原因不明の要求は、アプリケーションはトークン確認不足しているものであり、それらはFirebase SDKから来るようには見えません。これらは、盗まれたAPIキーを使用して行われたリクエスト、またはFirebaseSDKを使用せずに行われた偽造されたリクエストからのものである可能性があります。

  • 無効なリクエストは、無効なアプリはアプリを偽装しようとして本物でないクライアントから、またはエミュレートされた環境からであるかもしれない、トークンチェック有するものです。

アプリのこれらのカテゴリの分布は、強制を有効にすることを決定したときに通知する必要があります。ここにいくつかのガイドラインがあります:

  • 最近のリクエストのほとんどすべてが検証済みのクライアントからのものである場合は、強制を有効にしてバックエンドリソースの保護を開始することを検討してください。

  • 最近のリクエストの大部分が古いクライアントからのものである場合は、ユーザーの混乱を避けるために、施行を有効にする前に、より多くのユーザーがアプリを更新するのを待つことを検討してください。リリースされたアプリにAppCheckを適用すると、App CheckSDKと統合されていない以前のアプリバージョンが破損します。

  • アプリがまだ起動されていない場合は、使用中の古いクライアントがないため、すぐにアプリチェックの適用を有効にする必要があります。

クラウド機能

Cloud Functionsの場合、関数のログを調べることでアプリチェックの指標を取得できます。呼び出し可能な関数を呼び出すたびに、次の例のような構造化されたログエントリが出力されます。

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

あなたがでGoogleクラウドコンソールでこれらの指標を分析することができます作成カウンタメトリックログをベース以下のメトリックのフィルタで:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

メトリックラベルフィールド使用してjsonPayload.verifications.appCheck

5.施行を有効にする

強制を有効にするには、以下の各製品の手順に従ってください。製品の強制を有効にすると、その製品に対する未確認のリクエストはすべて拒否されます。

リアルタイムデータベースとクラウドストレージ

リアルタイムデータベースとクラウドストレージの適用を有効にするには:

  1. 開き、プロジェクト設定>アプリケーションのチェックFirebaseコンソールのセクションを。

  2. 強制を有効にする製品のメトリックビューを展開します。

  3. 強制クリックして選択を確認。

強制を有効にしてから有効になるまで、最大10分かかる場合があることに注意してください。

クラウド機能

参照クラウド機能のためのAppチェック執行を有効にします