App Check'un kullanıcılarınızı nasıl etkileyeceğini anladığınızda ve devam etmeye hazır olduğunuzda App Check yaptırımını etkinleştirebilirsiniz.
Yaptırım özelliğini etkinleştirme
Çağırılabilir Cloud Functions öğeniz için App Check jeton şartlarını uygulamaya başlamak üzere, işlevlerinizi aşağıdaki gibi geçerli App Check jetonları kontrol edecek şekilde değiştirin. Zorunluluğu etkinleştirdiğinizde doğrulanmamış tüm istekler reddedilir.
Cloud Functions SDK'sını yükleyin.
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)
firebase-functions
'üfunctions/requirements.txt
'a ekleme: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ü zorunlu kılma ç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 dağıtın:
firebase deploy --only functions
Bu değişiklikler dağıtıldıktan sonra, çağrılabilir Cloud Functions için geçerli App Check jetonları gerekir. Cloud Functions istemci SDK'ları, çağrılabilir bir işlevi çağırdığınızda otomatik olarak bir App Check jetonu ekler.
Tekrar koruması (beta)
Bir çağrılabilir işlevi yeniden oynatma saldırılarına karşı korumak için doğruladıktan sonra uygulama kontrolü jetonunu kullanabilirsiniz. Jeton kullanıldıktan sonra tekrar kullanılamaz.
Tekrar oynatma korumasının kullanılmasının, jeton doğrulamasına bir ağ gidiş dönüş eklediğini ve dolayısıyla Cloud Functions çağrısına gecikme eklediğini unutmayın. Bu nedenle, çoğu uygulama genellikle yeniden oynatma korumasını yalnızca özellikle hassas uç noktalarda etkinleştirir.
Jetonları kullanmak için:
Cloud Console'da, Cloud Functions tarafından kullanılan hizmet hesabına "Firebase App Check Token Doğrulayıcısı" rolünü verin.
- Yönetici SDK'sını açıkça başlatıyorsanız ve projenizin Yönetici SDK'sı hizmet hesabı kimlik bilgilerini belirttiyseniz gerekli rol zaten verilmiştir.
- 1. nesil Cloud Functions'ı varsayılan Yönetici SDK yapılandırmasıyla kullanıyorsanız rolü App Engine varsayılan hizmet hesabına verin. Hizmet hesabı izinlerini değiştirme başlıklı makaleyi inceleyin.
- 2. nesil Cloud Functions'ı varsayılan Yönetici SDK yapılandırmasıyla kullanıyorsanız rolü Varsayılan bilgi işlem hizmet hesabına verin.
İşlev tanımınıza
consumeAppCheckToken
yerinetrue
değerini girin: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 sınırlı kullanıma sahip jetonlar edinmek için uygulama istemci kodunuzu güncelleyin:
Swift
let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true) let yourCallableFunction = Functions.functions().httpsCallable("yourCallableFunction", options: options) do { let result = try await yourCallableFunction.call() } catch { // ... }
Web
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();