Activer l'application d'App Check pour Cloud Functions

Pour commencer à appliquer les exigences de jeton App Check dans vos fonctions cloud appelables, modifiez vos fonctions pour rechercher des jetons App Check valides.

Avant que tu commences

Activez App Check dans vos clients Apple , Android et Web .

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

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

    npm install firebase-functions@">=3.14.0"
    

    Et mettez à jour la dépendance firebase-admin de votre projet vers la version 9.8.0 ou plus récente :

    npm install firebase-admin@">=9.8.0"
    
  2. Ajoutez une vérification pour context.app à votre fonction. Votre fonction devrait échouer si context.app n'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 souhaitez gérer les jetons App Check non valides avec votre propre logique (par exemple, si vous souhaitez enregistrer temporairement, plutôt que rejeter, les demandes non valides avant d'activer l'application complète), définissez allowInvalidAppCheckToken sur 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 complète d'App Check, définissez allowInvalidAppCheckToken sur 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 clients Cloud Functions associent automatiquement un jeton App Check lorsque vous appelez une fonction appelable.