欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

Activer l'application d'App Check pour Cloud Functions

Lorsque vous comprenez comment App Check affectera vos utilisateurs et que vous êtes prêt à continuer, vous pouvez activer l'application d'App Check.

Pour commencer à appliquer les exigences de jeton App Check dans vos fonctions cloud appelables, modifiez vos fonctions pour rechercher des jetons App Check valides, comme indiqué ci-dessous. Une fois que vous avez activé l'application, toutes les demandes non vérifiées seront rejetées.

  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.