بعد فهم كيفية تأثير App Check في المستخدمين واستعدادك للمتابعة، يمكنك تفعيل فرض App Check على الدوالّ القابلة للاستدعاء.
تفعيل إجراءات التنفيذ
لبدء فرض متطلبات App Check رمز الاعتماد في وظائفك التي يمكن استدعاؤها، عدِّل وظائفك للتحقّق من صحة App Check رمز الاعتماد، كما هو موضّح أدناه. بعد تفعيل ميزة التنفيذ، سيتم رفض جميع الطلبات التي لم يتم إثبات ملكيتها.
ثبِّت حزمة تطوير البرامج (SDK) من Cloud Functions.
Node.js (الجيل الأول)
عدِّل الإصدار المتوافق مع مشروعك من
firebase-functions
إلى 4.0.0 أو إصدار أحدث:npm install firebase-functions@">=4.0.0"
Node.js (الجيل الثاني)
عدِّل الإصدار
firebase-functions
المُستخدَم في مشروعك إلى الإصدار 4.0.0 أو إصدار أحدث:npm install firebase-functions@">=4.0.0"
Python (إصدار تجريبي)
أضِف
firebase-functions
إلىfunctions/requirements.txt
:firebase-functions >= 0.1.0
بعد ذلك، عدِّل التبعيات في البيئة الافتراضية لمشروعك:
./venv/bin/pip install -r requirements.txt
فعِّل خيار وقت التشغيل لفرض فحص التطبيق لوظيفتك:
Node.js (الجيل الأول)
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 (الجيل الثاني)
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 (إصدار تجريبي)
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. ...
إعادة نشر دوالّك:
firebase deploy --only functions
بعد نشر هذه التغييرات، ستتطلّب الدوالّ القابلة للاستدعاء رموز App Check صالحة. تُرفِق حِزم تطوير البرامج (SDK) لعملاء Cloud Functions تلقائيًا رمز App Check عند استدعاء وظيفة قابلة للاستدعاء.
ميزة "حماية إعادة التشغيل" (إصدار تجريبي)
لحماية دالة قابلة للاستدعاء من هجمات إعادة التشغيل، يمكنك استخدام الرمز المميّز App Check بعد إثبات صحته. بعد استخدام الرمز المميّز، لا يمكن استخدامه مجددًا.
يُرجى العِلم أنّ استخدام ميزة "الحماية من إعادة التشغيل" يضيف رحلة ذهابًا وإيابًا على الشبكة إلى عملية التحقّق من الرمز المميّز، وبالتالي يضيف وقت استجابة إلى طلب الوظيفة. لهذا السبب، لا تفعّل معظم التطبيقات عادةً ميزة "الحماية من إعادة التشغيل" إلا على نقاط النهاية التي تتسم بالخصوصية بشكلٍ خاص.
لاستخدام الرموز المميّزة:
في وحدة تحكّم Cloud، منح دور "مُدقّق رمز أمان Firebase App Check" لحساب الخدمة الذي تستخدمه الوظيفة
- إذا كنت بصدد إعداد حزمة Admin SDK بشكل صريح وحددت بيانات اعتماد حساب الخدمة الخاصة بحزمة Admin SDK في مشروعك، سبق أن تم منح الدور المطلوب.
- إذا كنت تستخدم الجيل الأول من Cloud Functions مع الإعدادات التلقائية لحزمة SDK للمشرف، امنح الدور إلى حساب الخدمة التلقائية في App Engine. راجِع تغيير أذونات حساب الخدمة.
- إذا كنت تستخدم الجيل الثاني من Cloud Functions مع الإعدادات التلقائية لـ Admin SDK، امنح الدور إلى حساب خدمة الحوسبة التلقائية.
اضبط
consumeAppCheckToken
علىtrue
في تعريف الدالة:Node.js (الجيل الأول)
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 (الجيل الثاني)
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. ... } );
عدِّل رمز برنامج تشغيل تطبيقك للحصول على علامات محدودة الاستخدام عند استدعاء الدالة:
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
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();