Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

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

アプリのチェックが組み込まれており、いくつかのプロバイダのサポート:iOSのDeviceCheckとApp証明、SAFETYNETをアンドロイド、またはreCAPTCHAのv3でのWebアプリケーション(に概説)。これらはよく理解されているプロバイダーであり、ほとんどの開発者のニーズを満たす必要があります。ただし、独自のカスタムAppCheckプロバイダーを実装することもできます。カスタムプロバイダーの使用は、次の場合に必要です。

  • iOSのDeviceCheckまたはAppAttest、AndroidのSafetyNet、またはWebアプリのreCAPTCHA以外のプロバイダーを使用したい。

  • iOS、Android、およびWeb以外のプラットフォームを使用してデバイスを検証する必要があります。たとえば、デスクトップOSまたはモノのインターネットデバイス用のアプリチェックプロバイダーを作成できます。

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

概要

カスタムアプリのチェック・プロバイダーを実装するには、Node.jsの実行することができ、安全なバックエンド環境必要Firebase管理SDKを。これは、次のようなクラウド機能、コンテナプラットフォームすることができクラウドファイル名を指定して実行、または独自のサーバー。

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

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

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

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

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

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

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

    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. オプション:生存時間をアプリの確認のために(TTL)を渡すことで、カスタムプロバイダによって発行されたトークンを設定しAppCheckTokenOptionsにオブジェクトをcreateToken() TTLは30分から7日の間の任意の値に設定できます。この値を設定するときは、次のトレードオフに注意してください。

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

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

次のステップ

今、あなたはあなたのカスタムプロバイダーのサーバー側のロジックを実装しましたことを、あなたからそれを使用する方法を学ぶのiOSアンドロイド、およびウェブクライアント。