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

যখন আপনি বুঝতে পারবেন কিভাবে 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 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.
            ...
      });
    
    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
    

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

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

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

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

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

  1. ক্লাউড কনসোলে , ফাংশন দ্বারা ব্যবহৃত পরিষেবা অ্যাকাউন্টে "Firebase অ্যাপ চেক টোকেন যাচাইকারী" ভূমিকা মঞ্জুর করুন৷

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

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

    সুইফট WebKotlinJava
    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();
    
    val yourCallableFunction = Firebase.functions.getHttpsCallable("yourCallableFunction") {
        limitedUseAppCheckTokens = true
    }
    val result = yourCallableFunction.call().await()
    
    HttpsCallableReference yourCallableFunction = FirebaseFunctions.getInstance().getHttpsCallable(
            "yourCallableFunction",
            new HttpsCallableOptions.Builder()
                    .setLimitedUseAppCheckTokens(true)
                    .build()
    );
    Task<HttpsCallableResult> result = yourCallableFunction.call();