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.
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ınafirebase-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
İş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. ...
İş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.
Jetonları tüketmek için:
Bulut konsolunda , Bulut İşlevi tarafından kullanılan hizmet hesabına "Firebase App Check Token Verifier" rolü verin.
- Açıkça Admin SDK'yı başlatıyorsanız ve projenizin Admin SDK hizmet hesabı kimlik bilgilerini belirttiyseniz gerekli rol zaten verilmiştir.
- Varsayılan Yönetici SDK yapılandırmasıyla 1. nesil Bulut İşlevlerini kullanıyorsanız rolü App Engine varsayılan hizmet hesabına atayın. Hizmet hesabı izinlerini değiştirme konusuna bakın.
- Varsayılan Yönetici SDK yapılandırmasıyla 2. nesil Bulut İşlevlerini kullanıyorsanız, rolü Varsayılan bilgi işlem hizmeti hesabına atayın.
İş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. ... } );
İşlevi çağırdığınızda tüketilebilir sınırlı kullanım belirteçleri almak için uygulama istemci kodunuzu güncelleyin:
Süratli
let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true) let yourCallableFunction = Functions.functions().httpsCallable("yourCallableFunction", options: options) do { let result = try await yourCallableFunction.call() } catch { // ... }
Web modüler API
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();