Włącz wymuszanie sprawdzania aplikacji dla Cloud Functions

Aby rozpocząć wymuszanie wymagań dotyczących tokenów sprawdzania aplikacji w wywoływanych funkcjach Cloud Functions, zmodyfikuj funkcje, aby sprawdzić, czy istnieją prawidłowe tokeny sprawdzania aplikacji.

Zanim zaczniesz

Włącz sprawdzanie aplikacji w klientach Apple , Android i Web .

Dodaj obsługę sprawdzania aplikacji do funkcji

  1. Zaktualizuj zależność firebase-functions Firebase w projekcie do wersji 3.14.0 lub nowszej:

    npm install firebase-functions@">=3.14.0"
    

    I zaktualizuj zależność Firebase firebase-admin swojego projektu do wersji 9.8.0 lub nowszej:

    npm install firebase-admin@">=9.8.0"
    
  2. Dodaj czek dla context.app do swojej funkcji. Twoja funkcja powinna zakończyć się niepowodzeniem, jeśli context.app nie jest zdefiniowany.

    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. (Opcjonalnie) Jeśli chcesz obsługiwać nieprawidłowe tokeny sprawdzania aplikacji za pomocą własnej logiki (na przykład, jeśli chcesz tymczasowo rejestrować nieprawidłowe żądania, a nie odrzucać je przed włączeniem pełnego wymuszania), ustaw allowInvalidAppCheckToken na 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.
      });
    

    Aby włączyć pełną ochronę sprawdzania aplikacji, ustaw allowInvalidAppCheckToken na false .

  4. Ponownie wdróż swoje funkcje:

    firebase deploy --only functions
    

Po wdrożeniu tych zmian możliwe do wywołania funkcje Cloud Functions będą wymagały prawidłowych tokenów sprawdzania aplikacji. Pakiety SDK klienta Cloud Functions automatycznie dołączają token sprawdzania aplikacji po wywołaniu funkcji, którą można wywołać.