Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Ativar a aplicação do App Check para o Cloud Functions

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Quando você entender como o App Check afetará seus usuários e estiver pronto para continuar, poderá ativar a aplicação do App Check.

Para começar a aplicar os requisitos de token do App Check em seu Cloud Functions que pode ser chamado, modifique suas funções para verificar se há tokens válidos do App Check, conforme mostrado abaixo. Depois de ativar a aplicação, todas as solicitações não verificadas serão rejeitadas.

  1. Atualize a dependência firebase-functions do firebase do seu projeto para a versão 3.14.0 ou mais recente:

    npm install firebase-functions@">=3.14.0"
    

    E atualize a dependência do firebase firebase-admin do seu projeto para a versão 9.8.0 ou mais recente:

    npm install firebase-admin@">=9.8.0"
    
  2. Adicione uma verificação de context.app à sua função. Sua função deve falhar se context.app não estiver 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) Se você quiser lidar com tokens inválidos do App Check com sua própria lógica (por exemplo, se quiser registrar temporariamente, em vez de rejeitar, solicitações inválidas antes de ativar a aplicação completa), defina allowInvalidAppCheckToken como 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 a proteção completa do App Check, defina allowInvalidAppCheckToken como false .

  4. Reimplante suas funções:

    firebase deploy --only functions
    

Depois que essas alterações forem implantadas, o Cloud Functions que pode ser chamado exigirá tokens válidos do App Check. Os SDKs do cliente do Cloud Functions anexam automaticamente um token do App Check quando você invoca uma função que pode ser chamada.