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

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

এনফোর্সমেন্ট সক্রিয় করা হচ্ছে

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

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

    Node.js (1ম প্রজন্ম)

    আপনার প্রকল্পের 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"
    

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

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

    firebase-functions >= 0.1.0
    

    তারপর, আপনার প্রকল্পের ভার্চুয়াল পরিবেশে নির্ভরতা আপডেট করুন:

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

    Node.js (1ম প্রজন্ম)

    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 ক্লায়েন্ট SDK স্বয়ংক্রিয়ভাবে একটি App Check টোকেন সংযুক্ত করে যখন আপনি একটি কলযোগ্য ফাংশন চালু করেন।

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

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

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

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

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

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

    Node.js (1ম প্রজন্ম)

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