ক্লাউড ফাংশনের জন্য অ্যাপ চেক এনফোর্সমেন্ট সক্ষম করুন

যখন আপনি বুঝতে পারবেন App Check আপনার ব্যবহারকারীদের কীভাবে প্রভাবিত করবে এবং আপনি এগিয়ে যেতে প্রস্তুত হবেন, তখন আপনি কলযোগ্য ফাংশনগুলির জন্য App Check প্রয়োগ সক্ষম করতে পারেন।

প্রয়োগ সক্ষম করুন

আপনার কলযোগ্য ফাংশনগুলিতে App Check টোকেনের আবশ্যকতা প্রয়োগ করা শুরু করতে, নীচে দেখানো অনুযায়ী বৈধ App Check টোকেন পরীক্ষা করার জন্য আপনার ফাংশনগুলি পরিবর্তন করুন। একবার আপনি এই প্রয়োগ চালু করলে, সমস্ত যাচাইবিহীন অনুরোধ প্রত্যাখ্যান করা হবে।

  1. Cloud Functions এসডিকে ইনস্টল করুন।

    নোড.জেএস (২য় প্রজন্ম)

    আপনার প্রোজেক্টের firebase-functions ডিপেন্ডেন্সিটি 4.0.0 বা তার পরবর্তী সংস্করণে আপডেট করুন:

    npm install firebase-functions@">=4.0.0"

    নোড.জেএস (১ম প্রজন্ম)

    আপনার প্রোজেক্টের firebase-functions ডিপেন্ডেন্সিটি 4.0.0 বা তার পরবর্তী সংস্করণে আপডেট করুন:

    npm install firebase-functions@">=4.0.0"

    পাইথন (প্রিভিউ)

    functions/requirements.txtfirebase-functions যোগ করুন:

    firebase-functions >= 0.1.0
    

    এরপর, আপনার প্রোজেক্টের ভার্চুয়াল এনভায়রনমেন্টে ডিপেন্ডেন্সিগুলো আপডেট করুন:

    ./venv/bin/pip install -r requirements.txt
    
  2. আপনার ফাংশনের জন্য অ্যাপ চেক এনফোর্সমেন্ট রানটাইম অপশনটি সক্রিয় করুন:

    নোড.জেএস (২য় প্রজন্ম)

    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.
        ...
      }
    );
    

    নোড.জেএস (১ম প্রজন্ম)

    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.
            ...
      });
    

    পাইথন (প্রিভিউ)

    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
    

এই পরিবর্তনগুলি স্থাপন করা হয়ে গেলে, আপনার কলযোগ্য ফাংশনগুলির জন্য বৈধ App Check টোকেনের প্রয়োজন হবে। আপনি যখন কোনো কলযোগ্য ফাংশন চালু করেন, তখন Cloud Functions ক্লায়েন্ট SDK-গুলি স্বয়ংক্রিয়ভাবে একটি App Check টোকেন সংযুক্ত করে।

রিপ্লে সুরক্ষা (বিটা)

রিপ্লে অ্যাটাক থেকে একটি কলযোগ্য ফাংশনকে সুরক্ষিত রাখতে, আপনি অ্যাপ চেক টোকেনটি যাচাই করার পর কনজিউম করতে পারেন। একবার টোকেনটি কনজিউম করা হলে, তা আর পুনরায় ব্যবহার করা যায় না।

মনে রাখবেন যে, রিপ্লে প্রোটেকশন ব্যবহার করলে টোকেন যাচাইকরণের জন্য একটি নেটওয়ার্ক রাউন্ড ট্রিপ যুক্ত হয়, এবং এর ফলে ফাংশন কলে ল্যাটেন্সি বেড়ে যায়। এই কারণে, বেশিরভাগ অ্যাপ সাধারণত শুধুমাত্র বিশেষভাবে সংবেদনশীল এন্ডপয়েন্টগুলিতেই রিপ্লে প্রোটেকশন চালু করে।

টোকেন ব্যবহার করতে:

  1. Google Cloud কনসোলে , ফাংশনটি দ্বারা ব্যবহৃত সার্ভিস অ্যাকাউন্টটিকে 'Firebase App Check Token Verifier' রোলটি প্রদান করুন।

    • আপনি যদি সুস্পষ্টভাবে অ্যাডমিন এসডিকে চালু করেন এবং আপনার প্রোজেক্টের অ্যাডমিন এসডিকে সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল উল্লেখ করে থাকেন, তাহলে প্রয়োজনীয় রোলটি ইতিমধ্যেই মঞ্জুর করা আছে।
    • আপনি যদি ডিফল্ট অ্যাডমিন SDK কনফিগারেশনের সাথে প্রথম প্রজন্মের ক্লাউড ফাংশন ব্যবহার করেন, তাহলে অ্যাপ ইঞ্জিনের ডিফল্ট সার্ভিস অ্যাকাউন্টকে রোলটি প্রদান করুন। সার্ভিস অ্যাকাউন্টের অনুমতি পরিবর্তন দেখুন।
    • আপনি যদি ডিফল্ট অ্যাডমিন এসডিকে কনফিগারেশনের সাথে দ্বিতীয় প্রজন্মের ক্লাউড ফাংশন ব্যবহার করেন, তাহলে ডিফল্ট কম্পিউট সার্ভিস অ্যাকাউন্টকে রোলটি প্রদান করুন।
  2. আপনার ফাংশন সংজ্ঞায় consumeAppCheckToken true সেট করুন:

    নোড.জেএস (২য় প্রজন্ম)

    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.
        ...
      }
    );
    

    নোড.জেএস (১ম প্রজন্ম)

    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.
          ...
      });
    
  3. ফাংশনটি কল করার সময় ব্যবহারযোগ্য সীমিত-ব্যবহারের টোকেন সংগ্রহ করার জন্য আপনার অ্যাপ ক্লায়েন্ট কোড আপডেট করুন:

    সুইফট

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

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

    Web

    import { getFunctions, httpsCallable } from "firebase/functions";
    
    const yourCallableFunction = httpsCallable(
      getFunctions(),
      "yourCallableFunction",
      { limitedUseAppCheckTokens: true },
    );
    await yourCallableFunction();