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

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

امکان اجرا

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

  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 Functions قابل فراخوانی به کدهای معتبر App Check نیاز دارند. هنگامی که یک تابع قابل فراخوانی را فراخوانی می کنید، کیت توسعه نرم افزاری سرویس گیرنده Cloud Functions به طور خودکار یک نشانه App Check را متصل می کند.

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

برای محافظت از یک تابع قابل فراخوانی در برابر حملات بازپخش، می‌توانید رمز 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 {
        // ...
    }
    

    Web

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