Habilitar la aplicación de verificación de aplicaciones para Cloud Functions

Para comenzar a hacer cumplir los requisitos del token de verificación de aplicaciones en sus funciones en la nube a las que se puede llamar, modifique sus funciones para verificar si hay tokens de verificación de aplicaciones válidos.

Antes de que empieces

Activar la aplicación cheque en su manzana , Android y Web clientes.

Agregar compatibilidad con App Check a una función

  1. Actualizar su proyecto de firebase-functions de dependencia a la versión 3.14.0 o posterior:

    npm install firebase-functions@">=3.14.0"
    

    Y actualizar el proyecto de firebase-admin dependencia a la versión 9.8.0 o posterior:

    npm install firebase-admin@">=9.8.0"
    
  2. Añadir un cheque por context.app a su función. Su función debe fallar si context.app no está definido.

    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. (Opcional) Si desea gestionar las no válidas de la aplicación Verificar fichas con su propia lógica (por ejemplo, si desea iniciar sesión temporalmente, en lugar de rechazar, las solicitudes no válidas antes de activar la aplicación plena), establecido allowInvalidAppCheckToken de 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.
      });
    

    Para habilitar la aplicación plena protección Check, establecer allowInvalidAppCheckToken a false .

  4. Redistribuya sus funciones:

    firebase deploy --only functions
    

Una vez que se implementen estos cambios, sus Cloud Functions a las que se puede llamar requerirán tokens de verificación de aplicaciones válidos. Los SDK de cliente de Cloud Functions adjuntan automáticamente un token de App Check cuando invocas una función invocable.