Check out what’s new from Firebase at Google I/O 2022. Learn more

Cloud Functions için Uygulama Kontrolü zorlamasını etkinleştirin

Çağrılabilir Bulut İşlevlerinizde Uygulama Kontrolü belirteci gereksinimlerini uygulamaya başlamak için, geçerli Uygulama Kontrolü belirteçlerini kontrol etmek için işlevlerinizi değiştirin.

Sen başlamadan önce

Apple , Android ve Web istemcilerinizde Uygulama Kontrolü'nü etkinleştirin.

Bir işleve Uygulama Kontrolü desteği ekleme

  1. Projenizin firebase-functions bağımlılığını 3.14.0 veya daha yeni bir sürüme güncelleyin:

    npm install firebase-functions@">=3.14.0"
    

    Ve projenizin firebase-admin bağımlılığını 9.8.0 veya daha yeni bir sürüme güncelleyin:

    npm install firebase-admin@">=9.8.0"
    
  2. İşlevinize context.app için bir kontrol ekleyin. context.app tanımlı değilse işleviniz başarısız olur.

    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. (İsteğe bağlı) Geçersiz Uygulama Kontrolü belirteçlerini kendi mantığınızla işlemek istiyorsanız (örneğin, tam yaptırımı etkinleştirmeden önce geçersiz istekleri reddetmek yerine geçici olarak günlüğe kaydetmek istiyorsanız), allowInvalidAppCheckToken true olarak ayarlayın:

    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.
      });
    

    Tam Uygulama Kontrolü korumasını etkinleştirmek için allowInvalidAppCheckToken false olarak ayarlayın.

  4. İşlevlerinizi yeniden dağıtın:

    firebase deploy --only functions
    

Bu değişiklikler dağıtıldıktan sonra çağrılabilir Bulut İşlevleriniz için geçerli Uygulama Kontrolü belirteçleri gerekir. Çağrılabilir bir işlevi çağırdığınızda Cloud Functions istemci SDK'ları otomatik olarak bir Uygulama Kontrolü belirteci ekler.