عندما تفهم كيف سيؤثر فحص التطبيق على المستخدمين لديك وأنت مستعد للمتابعة ، يمكنك تمكين فرض التحقق من التطبيق.
تمكين الإنفاذ
لبدء فرض متطلبات رمز التحقق من التطبيق في وظائف السحابة القابلة للاستدعاء ، قم بتعديل وظائفك للتحقق من وجود رموز التحقق من التطبيق الصالحة ، كما هو موضح أدناه. بمجرد تمكين التنفيذ ، سيتم رفض جميع الطلبات التي لم يتم التحقق منها.
قم بتثبيت حزمة SDK الخاصة بوظائف السحابة.
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"
بايثون (معاينة)
أضف
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. ... } );
بايثون (معاينة)
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
بمجرد نشر هذه التغييرات ، ستتطلب وظائف السحابة القابلة للاستدعاء رموز التحقق من التطبيق الصالحة. تقوم SDKs الخاصة بعميل Cloud Functions تلقائيًا بإرفاق رمز مميز للتحقق من التطبيق عند استدعاء وظيفة قابلة للاستدعاء.
إعادة الحماية (تجريبي)
لحماية وظيفة قابلة للاستدعاء من هجمات إعادة التشغيل ، يمكنك استخدام رمز التحقق من التطبيق بعد التحقق منه. بمجرد استهلاك الرمز المميز ، لا يمكن استخدامه مرة أخرى.
لاحظ أن استخدام حماية إعادة التشغيل يضيف رحلة ذهابًا وإيابًا للشبكة للتحقق من الرمز المميز ، وبالتالي يضيف زمن انتقال إلى استدعاء وظيفة السحابة. لهذا السبب ، تعمل معظم التطبيقات عادةً على تمكين الحماية من إعادة التشغيل فقط على نقاط النهاية الحساسة بشكل خاص.
لاستهلاك الرموز:
في وحدة التحكم السحابية ، امنح دور "Firebase App Check Token Verifier" لحساب الخدمة الذي تستخدمه وظيفة السحابة.
- إذا كنت تقوم بتهيئة Admin SDK بشكل صريح وقمت بتحديد بيانات اعتماد حساب خدمة SDK للمشرف الخاص بمشروعك ، فسيتم منح الدور المطلوب بالفعل.
- إذا كنت تستخدم الجيل الأول من وظائف السحابة مع تكوين Admin SDK الافتراضي ، فامنح الدور لحساب خدمة App Engine الافتراضي . انظر تغيير أذونات حساب الخدمة .
- إذا كنت تستخدم الجيل الثاني من وظائف السحابة مع تكوين 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. ... } );
قم بتحديث رمز عميل التطبيق الخاص بك للحصول على الرموز المميزة القابلة للاستهلاك محدودة الاستخدام عند استدعاء الوظيفة:
سويفت
let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true) let yourCallableFunction = Functions.functions().httpsCallable("yourCallableFunction", options: options) do { let result = try await yourCallableFunction.call() } catch { // ... }
واجهة برمجة تطبيقات الويب المعيارية
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();