Pour commencer à appliquer les exigences concernant les jetons App Check dans vos fonctions appelables, modifiez vos fonctions pour vérifier la validité des jetons App Check, comme indiqué ci-dessous. Une fois l'application activée, toutes les requêtes non validées seront refusées.
Installez le SDK Cloud Functions.
Node.js (2e génération)
Mettez à jour la dépendance firebase-functions de votre projet vers la version 4.0.0 ou ultérieure :
npminstallfirebase-functions@">=4.0.0"
Node.js (1re génération)
Mettez à jour la dépendance firebase-functions de votre projet vers la version 4.0.0 ou ultérieure :
npminstallfirebase-functions@">=4.0.0"
Python (bêta)
Ajoutez firebase-functions à functions/requirements.txt :
firebase-functions >= 0.1.0
Mettez ensuite à jour les dépendances dans l'environnement virtuel de votre projet :
./venv/bin/pip install -r requirements.txt
Activez l'option d'exécution de l'application App Check pour votre fonction :
Node.js (2e génération)
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 (1re génération)
constfunctions=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 (bêta)
fromfirebase_functionsimporthttps_fn@https_fn.on_call(enforce_app_check=True# Reject requests with missing or invalid App Check tokens.)defyour_callable_function(req:https_fn.CallableRequest)-> https_fn.Response:# req.app contains data from App Check, including the app ID.# Your function logic follows....
Redéployez vos fonctions :
firebase deploy --only functions
Une fois ces modifications déployées, vos fonctions appelables nécessiteront des jetons App Check valides. Les SDK client Cloud Functions joignent automatiquement un jeton App Check lorsque vous appelez une fonction appelable.
Protection contre le rejeu (bêta)
Pour protéger une fonction appelable contre les attaques par relecture, vous pouvez utiliser le jeton App Check après l'avoir validé. Une fois le jeton utilisé, il ne peut plus l'être à nouveau.
Notez que l'utilisation de la protection contre la réutilisation ajoute un aller-retour réseau à la validation du jeton et, par conséquent, ajoute de la latence à l'appel de fonction. C'est pourquoi la plupart des applications n'activent généralement la protection contre la relecture que sur les points de terminaison particulièrement sensibles.
Pour consommer des jetons :
Dans la console Google Cloud, attribuez le rôle "Validateur de jetons Firebase App Check" au compte de service utilisé par la fonction.
Si vous initialisez explicitement le SDK Admin et que vous avez spécifié les identifiants du compte de service SDK Admin de votre projet, le rôle requis est déjà accordé.
Si vous utilisez Cloud Functions de première génération avec la configuration par défaut du SDK Admin, accordez le rôle au compte de service App Engine par défaut. Consultez Modifier les autorisations des comptes de service.
Si vous utilisez Cloud Functions de deuxième génération avec la configuration par défaut du SDK Admin, attribuez le rôle au compte de service Compute par défaut.
Définissez consumeAppCheckToken sur true dans la définition de votre fonction :
Node.js (2e génération)
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 (1re génération)
constfunctions=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....});
Mettez à jour le code client de votre application pour acquérir des jetons à usage limité consommables lorsque vous appelez la fonction :
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/21 (UTC).
[null,null,["Dernière mise à jour le 2025/08/21 (UTC)."],[],[],null,["When you [understand how App Check will affect your users](/docs/app-check/monitor-functions-metrics)\nand you're ready to proceed, you can enable App Check enforcement for\n[callable functions](/docs/functions/callable).\n\nEnable enforcement\n\nTo begin enforcing App Check token requirements in your callable\nfunctions, modify your functions to check for valid App Check\ntokens, as shown below. Once you enable enforcement, all unverified requests\nwill be rejected.\n\n1. Install the Cloud Functions SDK.\n\n Node.js (2nd gen)\n\n Update your project's `firebase-functions` dependency to version 4.0.0 or\n newer: \n\n npm install firebase-functions@\"\u003e=4.0.0\"\n\n Node.js (1st gen)\n\n Update your project's `firebase-functions` dependency to version 4.0.0 or\n newer: \n\n npm install firebase-functions@\"\u003e=4.0.0\"\n\n Python (preview)\n\n Add `firebase-functions` to `functions/requirements.txt`: \n\n firebase-functions \u003e= 0.1.0\n\n Then, update the dependencies in your project's virtual environment: \n\n ./venv/bin/pip install -r requirements.txt\n\n2. Enable the App Check enforcement runtime option for your function:\n\n Node.js (2nd gen) \n\n const { onCall } = require(\"firebase-functions/v2/https\");\n\n exports.yourV2CallableFunction = onCall(\n {\n enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.\n },\n (request) =\u003e {\n // request.app contains data from App Check, including the app ID.\n // Your function logic follows.\n ...\n }\n );\n\n Node.js (1st gen) \n\n const functions = require(\"firebase-functions/v1\");\n\n exports.yourV1CallableFunction = functions\n .runWith({\n enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.\n })\n .https.onCall((data, context) =\u003e {\n // context.app contains data from App Check, including the app ID.\n // Your function logic follows.\n ...\n });\n\n Python (preview) \n\n from firebase_functions import https_fn\n\n @https_fn.on_call(\n enforce_app_check=True # Reject requests with missing or invalid App Check tokens.\n )\n def your_callable_function(req: https_fn.CallableRequest) -\u003e https_fn.Response:\n # req.app contains data from App Check, including the app ID.\n # Your function logic follows.\n ...\n\n3. Redeploy your functions:\n\n ```\n firebase deploy --only functions\n ```\n\nOnce these changes are deployed, your callable functions will require\nvalid App Check tokens. The Cloud Functions client SDKs automatically\nattach an App Check token when you invoke a callable function.\n\nReplay protection (beta)\n\nTo protect a callable function from replay attacks, you can consume the App\nCheck token after verifying it. Once the token is consumed, it cannot be used\nagain.\n| **Note:** The replay protection beta supports only the Cloud Functions SDK for Node.js.\n\nNote that using replay protection adds a network round trip to token\nverification, and therefore adds latency to the function call. For this\nreason, most apps typically enable replay protection only on particularly\nsensitive endpoints.\n\nTo consume tokens:\n\n1. In the\n [Google Cloud console](https://console.cloud.google.com/iam-admin/iam?project=_),\n grant the \"Firebase App Check Token Verifier\" role to the service account\n used by the function.\n\n - If you're explicitly initializing the Admin SDK and you specified your project's Admin SDK service account credentials, the required role is already granted.\n - If you're using 1st generation Cloud Functions with the default Admin SDK configuration, grant the role to the **App Engine default service\n account** . See [Changing service account permissions](https://cloud.google.com/appengine/docs/legacy/standard/python/service-account#modifying_the_default_service_account).\n - If you're using 2nd generation Cloud Functions with the default Admin SDK configuration, grant the role to the **Default compute service\n account**.\n2. Set `consumeAppCheckToken` to `true` in your function definition:\n\n Node.js (2nd gen) \n\n const { onCall } = require(\"firebase-functions/v2/https\");\n\n exports.yourV2CallableFunction = onCall(\n {\n enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.\n consumeAppCheckToken: true // Consume the token after verification.\n },\n (request) =\u003e {\n // request.app contains data from App Check, including the app ID.\n // Your function logic follows.\n ...\n }\n );\n\n Node.js (1st gen) \n\n const functions = require(\"firebase-functions/v1\");\n\n exports.yourV1CallableFunction = functions\n .runWith({\n enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.\n consumeAppCheckToken: true // Consume the token after verification.\n })\n .https.onCall((data, context) =\u003e {\n // context.app contains data from App Check, including the app ID.\n // Your function logic follows.\n ...\n });\n\n3. Update your app client code to acquire consumable limited-use tokens when\n you call the function:\n\n Swift \n\n let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true)\n let yourCallableFunction =\n Functions.functions().httpsCallable(\"yourCallableFunction\", options: options)\n do {\n let result = try await yourCallableFunction.call()\n } catch {\n // ...\n }\n\n Kotlin \n\n val yourCallableFunction = Firebase.functions.getHttpsCallable(\"yourCallableFunction\") {\n limitedUseAppCheckTokens = true\n }\n val result = yourCallableFunction.call().await()\n\n Java \n\n HttpsCallableReference yourCallableFunction = FirebaseFunctions.getInstance().getHttpsCallable(\n \"yourCallableFunction\",\n new HttpsCallableOptions.Builder()\n .setLimitedUseAppCheckTokens(true)\n .build()\n );\n Task\u003cHttpsCallableResult\u003e result = yourCallableFunction.call();\n\n Web \n\n import { getFunctions, httpsCallable } from \"firebase/functions\";\n\n const yourCallableFunction = httpsCallable(\n getFunctions(),\n \"yourCallableFunction\",\n { limitedUseAppCheckTokens: true },\n );\n await yourCallableFunction();"]]