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ü'nün zorunlu kılınmasını etkinleştirebilirsiniz.
Yaptırımı etkinleştirme
Çağrılanabilir cihazınızda Uygulama Kontrolü jetonu gereksinimlerini zorunlu kılmaya başlamak için Cloud Functions, geçerli uygulama kontrolü olup olmadığını kontrol etmek için işlevlerinizi değiştirin jetonları aşağıda gösterildiği gibidir. Zorunlu kılmayı etkinleştirdiğinizde doğrulanmamış tüm istekler reddedilecektir.
Cloud Functions SDK'sını yükleyin.
Node.js (1. nesil)
Projenizin
firebase-functions
bağımlılığını 4.0.0 sürümüne güncelleyin veya daha yeni:npm install firebase-functions@">=4.0.0"
Node.js (2. nesil)
Projenizin
firebase-functions
bağımlılığını 4.0.0 sürümüne güncelleyin veya daha yeni:npm install firebase-functions@">=4.0.0"
Python (önizleme)
firebase-functions
öğesinifunctions/requirements.txt
öğesine ekleyin:firebase-functions >= 0.1.0
Ardından projenizin sanal ortamında bağımlılıkları güncelleyin:
./venv/bin/pip install -r requirements.txt
İşleviniz için Uygulama Kontrolü'nün zorunlu kılınması ç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şlevleriniz için Geçerli Uygulama Kontrolü jetonları. Cloud Functions istemci SDK'ları otomatik olarak çağrılabilir bir işlevi çağırdığınızda Uygulama Kontrolü jetonu ekleyin.
Tekrar oynatma koruması (beta)
Çağrılabilir bir işlevi tekrar saldırılarından korumak için uygulamayı kullanabilirsiniz. Jetonu doğruladıktan sonra kontrol edin. Jeton bir kez kullanıldıktan sonra kullanılamaz tekrar.
Tekrar oynatma korumasını kullandığınızda jetona bir ağ gidiş dönüş seyahati eklendiğini unutmayın bu nedenle Cloud Functions işlevi çağrısına gecikme ekler. Bunun için çoğu uygulama, tekrar oynatma korumasını yalnızca özellikle hassas uç noktalar.
Jetonları kullanmak için:
Cloud Console, "Firebase Uygulama Kontrol Jetonu Doğrulayıcı"yı verin rolünü etkinleştirmelisiniz. Cloud Functions işlevi tarafından kullanılır.
- Admin SDK'yı açık bir şekilde başlatıyorsanız ve Yönetici SDK'sı hizmet hesabı kimlik bilgilerini kullanıyorsanız, gerekli rol zaten verildi.
- 1. nesil Cloud Functions'ı varsayılan Yönetici ayarıyla kullanıyorsanız SDK yapılandırması, rolü App Engine varsayılan hizmetine verin hesap. Hizmet hesabı izinlerini değiştirme başlıklı makaleyi inceleyin.
- Varsayılan Yönetici ayarıyla 2. nesil Cloud Functions'ı kullanıyorsanız SDK yapılandırması, rolü Varsayılan bilgi işlem hizmeti hesap.
İşlev tanımınızda
consumeAppCheckToken
öğesinitrue
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. ... } );
Sınırlı kullanım için uygun kullanıcı edinmek üzere uygulama istemci kodunuzu güncelleyin jetonları da kullanabilirsiniz:
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();