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

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

এনফোর্সমেন্ট সক্ষম করুন

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

  1. Cloud Functions SDK ইনস্টল করুন।

    নোড.জেএস (দ্বিতীয় প্রজন্ম)

    আপনার প্রকল্পের 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 কনসোলে , ফাংশন দ্বারা ব্যবহৃত পরিষেবা অ্যাকাউন্টে "ফায়ারবেস অ্যাপ চেক টোকেন ভেরিফায়ার" ভূমিকাটি প্রদান করুন।

    • যদি আপনি স্পষ্টভাবে অ্যাডমিন SDK শুরু করেন এবং আপনার প্রকল্পের অ্যাডমিন SDK পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি নির্দিষ্ট করে থাকেন, তাহলে প্রয়োজনীয় ভূমিকা ইতিমধ্যেই মঞ্জুর করা হয়েছে।
    • যদি আপনি ডিফল্ট অ্যাডমিন SDK কনফিগারেশন সহ প্রথম প্রজন্মের ক্লাউড ফাংশন ব্যবহার করেন, তাহলে অ্যাপ ইঞ্জিন ডিফল্ট পরিষেবা অ্যাকাউন্টকে ভূমিকাটি প্রদান করুন। পরিষেবা অ্যাকাউন্টের অনুমতি পরিবর্তন করা দেখুন।
    • যদি আপনি ডিফল্ট অ্যাডমিন 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();