Activer l'application de l'App Check pour Cloud Functions

Pour commencer à appliquer les exigences des jetons App Check dans vos fonctions Cloud appelables, modifiez vos fonctions pour vérifier les jetons App Check valides.

Avant que tu commences

Activer App Vérifiez dans votre d' Apple , Android et Web clients.

Ajouter la prise en charge d'App Check à une fonction

  1. Mettez à jour votre projet de firebase-functions de la dépendance à la version 3.14.0 ou plus récent:

    npm install firebase-functions@">=3.14.0"
    

    Et mettre à jour votre projet de firebase-admin dépendance à la version 9.8.0 ou plus récent:

    npm install firebase-admin@">=9.8.0"
    
  2. Ajouter un chèque de context.app à votre fonction. Votre fonction doit échouer si context.app est pas défini.

    exports.yourCallableFunction = functions.https.onCall((data, context) => {
      // context.app will be undefined if the request doesn't include an
      // App Check token. (If the request includes an invalid App Check
      // token, the request will be rejected with HTTP error 401.)
      if (context.app == undefined) {
        throw new functions.https.HttpsError(
            'failed-precondition',
            'The function must be called from an App Check verified app.')
      }
    
      // Your function logic follows.
    });
    
  3. (Facultatif) Si vous voulez gérer invalides App Vérifiez jetons avec votre propre logique (par exemple, si vous voulez vous connecter temporairement, plutôt que de rejeter, les demandes non valides avant d' activer l' application complète), mis allowInvalidAppCheckToken à true :

    exports.yourCallableFunction = functions.
      .runWith({
        allowInvalidAppCheckToken: true  // Opt-out: Requests with invalid App
                                         // Check tokens continue to your code.
      })
      .https.onCall((data, context) => {
        // Now, requests with an invalid App Check token are not rejected.
        //
        // context.app will be undefined if the request:
        //   1) Does not include an App Check token
        //   2) Includes an invalid App Check token
        if (context.app == undefined) {
          // You can inspect the raw request header to check whether an App
          // Check token was provided in the request. If you're not ready to
          // fully enable App Check yet, you could log these conditions instead
          // of throwing errors.
          const rawToken = context.rawRequest.header['X-Firebase-AppCheck'];
          if (rawToken == undefined) {
            throw new functions.https.HttpsError(
                'failed-precondition',
                'The function must be called from an App Check verified app.'
            );
          } else {
            throw new functions.https.HttpsError(
                'unauthenticated',
                'Provided App Check token failed to validate.'
            );
          }
        }
    
        // Your function logic follows.
      });
    

    Pour activer la protection de vérification complète App, mis allowInvalidAppCheckToken à false .

  4. Redéployez vos fonctions :

    firebase deploy --only functions
    

Une fois ces modifications déployées, vos fonctions Cloud appelables nécessiteront des jetons App Check valides. Les SDK client Cloud Functions attachent automatiquement un jeton App Check lorsque vous appelez une fonction appelable.