اجرای بررسی برنامه را برای عملکردهای ابری فعال کنید

وقتی متوجه شدید که بررسی برنامه چگونه بر کاربران شما تأثیر می گذارد و آماده ادامه کار هستید، می توانید اجرای بررسی برنامه را فعال کنید.

امکان اجرا

برای شروع اجرای الزامات نشانه بررسی برنامه در توابع Cloud قابل فراخوانی، عملکردهای خود را تغییر دهید تا نشانه های معتبر بررسی برنامه را بررسی کنید، همانطور که در زیر نشان داده شده است. پس از فعال کردن اجرای، همه درخواست‌های تأیید نشده رد می‌شوند.

  1. Cloud Functions 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
    
  2. گزینه App Check Enforcement Runtime را برای عملکرد خود فعال کنید:

    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.
        ...
    
  3. توابع خود را مجدداً مستقر کنید:

    firebase deploy --only functions
    

پس از اعمال این تغییرات، توابع Cloud قابل فراخوانی به کدهای معتبر App Check نیاز دارند. هنگامی که یک تابع قابل فراخوانی را فراخوانی می کنید، کیت توسعه نرم افزاری سرویس گیرنده توابع Cloud به طور خودکار یک نشانه بررسی برنامه را متصل می کند.

محافظت از پخش مجدد (بتا)

برای محافظت از یک تابع قابل فراخوانی در برابر حملات بازپخش، می‌توانید رمز App Check را پس از تأیید آن مصرف کنید. پس از مصرف توکن، دیگر نمی توان از آن استفاده کرد.

توجه داشته باشید که استفاده از محافظت از پخش مجدد، یک رفت و برگشت شبکه را به تأیید رمز اضافه می کند، و بنابراین تأخیر را به فراخوانی عملکرد ابری اضافه می کند. به همین دلیل، اکثر برنامه‌ها معمولاً محافظت از پخش مجدد را فقط در نقاط انتهایی حساس فعال می‌کنند.

برای مصرف توکن:

  1. در کنسول Cloud ، نقش «تأییدکننده نشانه بررسی برنامه Firebase» را به حساب سرویس مورد استفاده توسط Cloud Function اعطا کنید.

    • اگر صراحتاً Admin SDK را مقداردهی اولیه می‌کنید و اعتبار حساب سرویس Admin SDK پروژه خود را مشخص کرده‌اید، نقش مورد نیاز قبلاً داده شده است.
    • اگر از نسل اول توابع Cloud با پیکربندی پیش‌فرض Admin SDK استفاده می‌کنید، این نقش را به حساب سرویس پیش‌فرض App Engine اختصاص دهید. به تغییر مجوزهای حساب سرویس مراجعه کنید.
    • اگر از نسل دوم توابع Cloud با پیکربندی پیش‌فرض Admin SDK استفاده می‌کنید، این نقش را به حساب خدمات محاسباتی پیش‌فرض اعطا کنید.
  2. 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.
        ...
      }
    );
    
  3. کد سرویس گیرنده برنامه خود را به‌روزرسانی کنید تا هنگام فراخوانی عملکرد، توکن‌های مصرفی محدود را به دست آورید:

    سریع

    let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true)
    let yourCallableFunction =
        Functions.functions().httpsCallable("yourCallableFunction", options: options)
    do {
        let result = try await yourCallableFunction.call()
    } catch {
        // ...
    }
    

    API ماژولار وب

    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();