Quando hai compreso l'impatto di App Check sugli utenti e sei pronto a procedere, puoi attivare l'applicazione di App Check per funzioni richiamabili.
Attivare l'applicazione
Per iniziare ad applicare i requisiti dei token App Check nelle funzioni richiamabili, modificale in modo che controllino la presenza di token App Check validi, come mostrato di seguito. Una volta attivata l'applicazione, tutte le richieste non verificate verranno rifiutate.
Installa l'SDK Cloud Functions.
Node.js (2ª gen)
Aggiorna la dipendenza
firebase-functionsdel progetto alla versione 4.0.0 o successive:npm install firebase-functions@">=4.0.0"Node.js (1ª gen)
Aggiorna la dipendenza
firebase-functionsdel progetto alla versione 4.0.0 o successive:npm install firebase-functions@">=4.0.0"Python (anteprima)
Aggiungi
firebase-functionsafunctions/requirements.txt:firebase-functions >= 0.1.0Quindi, aggiorna le dipendenze nell'ambiente virtuale del progetto:
./venv/bin/pip install -r requirements.txtAttiva l'opzione di runtime per l'applicazione di App Check per la funzione:
Node.js (2ª gen)
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. ... } );Node.js (1ª gen)
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. ... });Python (anteprima)
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. ...Esegui di nuovo il deployment delle funzioni:
firebase deploy --only functions
Una volta eseguito il deployment di queste modifiche, le funzioni richiamabili richiederanno token App Check validi. Gli SDK client Cloud Functions allegano automaticamente un token App Check quando richiami una funzione richiamabile.
Protezione di riproduzione (beta)
Per proteggere una funzione richiamabile dagli attacchi di riproduzione, puoi utilizzare il token App Check dopo averlo verificato. Una volta utilizzato, il token non può essere riutilizzato.
Tieni presente che l'utilizzo della protezione di riproduzione aggiunge un'andata e ritorno di rete alla verifica del token e, di conseguenza, aggiunge latenza alla chiamata di funzione. Per questo motivo, la maggior parte delle app in genere attiva la protezione di riproduzione solo sugli endpoint particolarmente sensibili.
Per utilizzare i token:
Nella Google Cloud console, concedi il ruolo "Verificatore token Firebase App Check" al service account utilizzato dalla funzione.
- Se stai inizializzando esplicitamente l'SDK Admin e hai specificato le credenziali del service account dell'SDK Admin del progetto, il ruolo richiesto è già concesso.
- Se utilizzi Cloud Functions di 1ª generazione con la configurazione predefinita dell'SDK Admin, concedi il ruolo al service account predefinito di App Engine. Consulta Modificare le autorizzazioni del service account.
- Se utilizzi Cloud Functions di 2ª generazione con la configurazione predefinita dell'SDK Admin, concedi il ruolo al service account di Compute predefinito.
Imposta
consumeAppCheckTokensutruenella definizione della funzione:Node.js (2ª gen)
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. ... } );Node.js (1ª gen)
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. ... });Aggiorna il codice client dell'app per acquisire token di utilizzo limitato utilizzabili quando chiami la funzione:
Swift
let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true) let yourCallableFunction = Functions.functions().httpsCallable("yourCallableFunction", options: options) do { let result = try await yourCallableFunction.call() } catch { // ... }Kotlin
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();Web
import { getFunctions, httpsCallable } from "firebase/functions"; const yourCallableFunction = httpsCallable( getFunctions(), "yourCallableFunction", { limitedUseAppCheckTokens: true }, ); await yourCallableFunction();