Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

Uygulama Kontrolü'nün kullanıcılarınızı nasıl etkileyeceğini anladığınızda ve devam etmeye hazır olduğunuzda Uygulama Kontrolü uygulamasını etkinleştirebilirsiniz.

Uygulamayı etkinleştirme

Çağrılabilir Bulut İşlevlerinizde Uygulama Kontrolü belirteci gereksinimlerini uygulamaya başlamak için, aşağıda gösterildiği gibi geçerli Uygulama Kontrolü belirteçlerini kontrol etmek için işlevlerinizi değiştirin. Zorlamayı etkinleştirdiğinizde, doğrulanmamış tüm istekler reddedilecektir.

  1. Cloud Functions SDK'sını kurun.

    Node.js (1. nesil)

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

    npm install firebase-functions@">=4.0.0"
    

    Node.js (2. nesil)

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

    npm install firebase-functions@">=4.0.0"
    

    Python (önizleme)

    functions/requirements.txt dosyasına firebase-functions ekleyin:

    firebase-functions >= 0.1.0
    

    Ardından, projenizin sanal ortamındaki bağımlılıkları güncelleyin:

    ./venv/bin/pip install -r requirements.txt
    
  2. İşleviniz için Uygulama Kontrolü yürütme çalışma zamanı seçeneğini etkinleştirin:

    Node.js (1. nesil)

    const functions = require("firebase-functions/v1");
    
    exports.yourV1CallableFunction = functions
      .runWith({
          enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.
      })
      .https.onCall((data, context) => {
            // context.app contains data from App Check, including the app ID.
            // Your function logic follows.
            ...
      });
    

    Node.js (2. nesil)

    const { onCall } = require("firebase-functions/v2/https");
    
    exports.yourV2CallableFunction = onCall(
      {
        enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.
      },
      (request) => {
        // request.app contains data from App Check, including the app ID.
        // Your function logic follows.
        ...
      }
    );
    

    Python (önizleme)

    from firebase_functions import https_fn
    
    @https_fn.on_call(
        enforce_app_check=True  # Reject requests with missing or invalid App Check tokens.
    )
    def your_callable_function(req: https_fn.CallableRequest) -> https_fn.Response:
        # req.app contains data from App Check, including the app ID.
        # Your function logic follows.
        ...
    
  3. İşlevlerinizi yeniden konuşlandırın:

    firebase deploy --only functions
    

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

Tekrar koruması (beta)

Çağrılabilir bir işlevi yeniden oynatma saldırılarından korumak için Uygulama Kontrolü belirtecini doğruladıktan sonra kullanabilirsiniz. Belirteç tüketildikten sonra tekrar kullanılamaz.

Yeniden oynatma korumasını kullanmanın belirteç doğrulamaya bir ağ gidiş-dönüş eklediğini ve bu nedenle bulut işlev çağrısına gecikme eklediğini unutmayın. Bu nedenle, çoğu uygulama genellikle yalnızca özellikle hassas uç noktalarda yeniden oynatma korumasını etkinleştirir.

Belirteçleri tüketmek için işlev tanımınızda consumeAppCheckToken true olarak ayarlayın:

Node.js (1. nesil)

const functions = require("firebase-functions/v1");

exports.yourV1CallableFunction = functions
  .runWith({
      enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.
      consumeAppCheckToken: true  // Consume the token after verification.
  })
  .https.onCall((data, context) => {
      // context.app contains data from App Check, including the app ID.
      // Your function logic follows.
      ...
  });

Node.js (2. nesil)

const { onCall } = require("firebase-functions/v2/https");

exports.yourV2CallableFunction = onCall(
  {
    enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.
    consumeAppCheckToken: true  // Consume the token after verification.
  },
  (request) => {
    // request.app contains data from App Check, including the app ID.
    // Your function logic follows.
    ...
  }
);

Belirli bir Bulut İşlevi için bu özelliği etkinleştirdiğinizde, işlevi çağırdığınızda tüketilebilir sınırlı kullanım belirteçleri almak için uygulama istemci kodunuzu da güncellemeniz gerekir:

Süratli

let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true)
let yourCallableFunction =
    Functions.functions().httpsCallable("yourCallableFunction", options: options)
do {
    let result = try await yourCallableFunction.call()
} catch {
    // ...
}

Web version 9

import { getFunctions, httpsCallable } from "firebase/functions";

const yourCallableFunction = httpsCallable(
  getFunctions(),
  "yourCallableFunction",
  { limitedUseAppCheckTokens: true },
);
await yourCallableFunction();

Kotlin+KTX

val yourCallableFunction = Firebase.functions.getHttpsCallable("yourCallableFunction") {
    limitedUseAppCheckTokens = true
}
val result = yourCallableFunction.call().await()

Java

HttpsCallableReference yourCallableFunction = FirebaseFunctions.getInstance().getHttpsCallable(
        "yourCallableFunction",
        new HttpsCallableOptions.Builder()
                .setLimitedUseAppCheckTokens(true)
                .build()
);
Task<HttpsCallableResult> result = yourCallableFunction.call();