Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

カスタムアプリチェックプロバイダーを実装する

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

App Check には、Apple プラットフォームでの DeviceCheck と App Attest、Android での Play Integrity と SafetyNet、Web アプリでの reCAPTCHA v3 と reCAPTCHA Enterprise (概要) など、いくつかのプロバイダーのサポートが組み込まれています。これらは、ほとんどの開発者のニーズを満たす十分に理解されたプロバイダーです。ただし、独自のカスタム App Check プロバイダーを実装することもできます。次の場合は、カスタム プロバイダーを使用する必要があります。

  • 組み込み以外のプロバイダーを使用したい。

  • サポートされていない方法で組み込みプロバイダーを使用したい。

  • Apple、Android、および Web 以外のプラットフォームを使用してデバイスを検証したい。たとえば、デスクトップ OS またはモノのインターネット デバイス用の App Check プロバイダーを作成できます。

  • 任意のプラットフォームに独自の検証手法を実装したいと考えています。

概要

カスタム App Check プロバイダを実装するには、Node.js Firebase Admin SDKを実行できる安全なバックエンド環境が必要です。これは、Cloud Functions、 Cloud Runなどのコンテナー プラットフォーム、または独自のサーバーにすることができます。

この環境から、アプリ クライアントから信頼性の証明を受け取るネットワーク アクセス可能なサービスを提供し、信頼性の証明が信頼性評価に合格した場合は、App Check トークンを返します。信頼性の証明として使用する特定のインジケーターは、使用しているサードパーティ プロバイダー、またはカスタム ロジックを実装している場合は独自の発明のインジケーターのいずれかに依存します。

通常、このサービスは REST または gRPC エンドポイントとして公開しますが、詳細はユーザー次第です。

トークン取得エンドポイントを作成する

  1. Admin SDK をインストールして初期化します

  2. クライアントから認証データを受信できるネットワーク アクセス可能なエンドポイントを作成します。たとえば、Cloud Functions を使用すると、次のようになります。

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onCall((authenticityData, context) => {
      // ...
    });
    
  3. 真正性データを評価するエンドポイント ロジックに追加します。これは、カスタム App Check プロバイダのコア ロジックであり、自分で記述する必要があります。

  4. クライアントが本物であると判断した場合は、Admin SDK を使用して App Check トークンを生成し、トークンとその有効期限をクライアントに返します。

    const admin = require('firebase-admin');
    admin.initializeApp();
    
    // ...
    
    admin.appCheck().createToken(appId)
        .then(function (appCheckToken) {
          // Token expires in an hour.
          const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60;
    
          // Return appCheckToken and expiresAt to the client.
        })
       .catch(function (err) {
         console.error('Unable to create App Check token.');
         console.error(err);
       });
    

    クライアントの信頼性を確認できない場合は、エラーを返します (たとえば、HTTP 403 エラーを返します)。

  5. オプション: AppCheckTokenOptionsオブジェクトをcreateToken()に渡すことで、カスタム プロバイダーによって発行された App Check トークンの有効期限 (TTL) を設定します。 TTL は 30 分から 7 日間の任意の値に設定できます。この値を設定するときは、次のトレードオフに注意してください。

    • セキュリティ: TTL を短くすると、漏洩または傍受されたトークンが攻撃者によって悪用される可能性があるウィンドウが減少するため、セキュリティが強化されます。
    • パフォーマンス: TTL が短いほど、アプリはより頻繁に構成証明を実行します。アプリの構成証明プロセスは、実行されるたびにネットワーク リクエストに待機時間を追加するため、短い TTL はアプリのパフォーマンスに影響を与える可能性があります。

    デフォルトの TTL である 1 時間は、ほとんどのアプリにとって妥当です。

次のステップ

カスタム プロバイダーのサーバー側ロジックを実装したので、 AppleAndroid 、およびWebクライアントからそれを使用する方法を学びます。