অ্যান্ড্রয়েডে একটি কাস্টম প্রদানকারীর সাথে অ্যাপ চেক সক্ষম করুন

এই পৃষ্ঠাটি আপনাকে দেখায় কিভাবে আপনার কাস্টম অ্যাপ চেক প্রদানকারী ব্যবহার করে একটি Android অ্যাপে অ্যাপ চেক সক্ষম করবেন। আপনি যখন অ্যাপ চেক সক্ষম করেন, তখন আপনি নিশ্চিত করতে সাহায্য করেন যে শুধুমাত্র আপনার অ্যাপ আপনার প্রকল্পের ফায়ারবেস সংস্থানগুলি অ্যাক্সেস করতে পারে।

আপনি যদি ডিফল্ট প্লে ইন্টিগ্রিটি প্রদানকারীর সাথে অ্যাপ চেক ব্যবহার করতে চান, তাহলে অ্যান্ড্রয়েডে প্লে ইন্টিগ্রিটির সাথে অ্যাপ চেক সক্ষম করুন দেখুন

তুমি শুরু করার আগে

1. আপনার অ্যাপে অ্যাপ চেক লাইব্রেরি যোগ করুন

আপনার মডিউলে (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত app/build.gradle ), অ্যাপ চেক অ্যান্ড্রয়েড লাইব্রেরির জন্য নির্ভরতা ঘোষণা করুন:

Java

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.0.0'
}

Kotlin+KTX

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.0.0'
}

2. অ্যাপ চেক ইন্টারফেস প্রয়োগ করুন

প্রথমে, আপনাকে এমন ক্লাস তৈরি করতে হবে যা AppCheckProvider এবং AppCheckProviderFactory ইন্টারফেসগুলিকে বাস্তবায়ন করে।

আপনার AppCheckProvider ক্লাসে অবশ্যই একটি getToken() পদ্ধতি থাকতে হবে, যা সত্যতার প্রমাণ হিসাবে আপনার কাস্টম অ্যাপ চেক প্রদানকারীর প্রয়োজনীয় তথ্য সংগ্রহ করে এবং একটি অ্যাপ চেক টোকেনের বিনিময়ে আপনার টোকেন অধিগ্রহণ পরিষেবাতে পাঠায়। অ্যাপ চেক SDK টোকেন ক্যাশিং পরিচালনা করে, তাই getToken() এর বাস্তবায়নে সর্বদা একটি নতুন টোকেন পান।

Java

public class YourCustomAppCheckToken extends AppCheckToken {
    private String token;
    private long expiration;

    YourCustomAppCheckToken(String token, long expiration) {
        this.token = token;
        this.expiration = expiration;
    }

    @NonNull
    @Override
    public String getToken() {
        return token;
    }

    @Override
    public long getExpireTimeMillis() {
        return expiration;
    }
}

public class YourCustomAppCheckProvider implements AppCheckProvider {
    @Override
    public Task<AppCheckToken> getToken() {
        // Logic to exchange proof of authenticity for an App Check token and
        //   expiration time.
        // ...

        // Refresh the token early to handle clock skew.
        long expMillis = expirationFromServer * 1000 - 60000;

        // Create AppCheckToken object.
        AppCheckToken appCheckToken =
                YourCustomAppCheckToken(tokenFromServer, expMillis);

        return appCheckToken;
    }
}

Kotlin+KTX

class YourCustomAppCheckToken(
    private val token: String,
    private val expiration: Long
) : AppCheckToken() {
    override fun getToken(): String {
        return token
    }

    override fun getExpireTimeMillis(): Long {
        return expiration
    }
}

class YourCustomAppCheckProvider : AppCheckProvider {
    val token: Task<AppCheckToken>
        get() {
            // Logic to exchange proof of authenticity for an App Check token.
            // ...

            // Refresh the token early to handle clock skew.
            val expMillis: Long = expirationFromServer * 1000 - 60000

            // Create AppCheckToken object.
            val appCheckToken: AppCheckToken =
                    YourCustomAppCheckToken(tokenFromServer, expMillis)

            return appCheckToken!
        }
}

এছাড়াও, একটি AppCheckProviderFactory ক্লাস প্রয়োগ করুন যা আপনার AppCheckProvider বাস্তবায়নের উদাহরণ তৈরি করে:

Java

public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory {
  @Override
  public AppCheckProvider create(FirebaseApp firebaseApp) {
    // Create and return an AppCheckProvider object.
    return new YourCustomAppCheckProvider(firebaseApp);
  }
}

Kotlin+KTX

class YourCustomAppCheckProviderFactory : AppCheckProviderFactory {
    fun create(firebaseApp: FirebaseApp): AppCheckProvider {
        // Create and return an AppCheckProvider object.
        return YourCustomAppCheckProvider(firebaseApp)
    }
}

3. অ্যাপ চেক শুরু করুন

আপনার অ্যাপে নিম্নলিখিত আরম্ভ করার কোড যোগ করুন যাতে আপনি অন্য কোনো Firebase SDK ব্যবহার করার আগে এটি চলে যায়:

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory.getInstance());

Kotlin+KTX

FirebaseApp.initializeApp(/*context=*/ this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory.getInstance())

একবার আপনার অ্যাপে অ্যাপ চেক লাইব্রেরি ইনস্টল হয়ে গেলে, আপডেট করা অ্যাপটি আপনার ব্যবহারকারীদের কাছে বিতরণ করা শুরু করুন।

আপডেট হওয়া ক্লায়েন্ট অ্যাপটি Firebase-এ করা প্রতিটি অনুরোধের সাথে অ্যাপ চেক টোকেন পাঠানো শুরু করবে, কিন্তু Firebase পণ্যগুলির টোকেন বৈধ হওয়ার প্রয়োজন হবে না যতক্ষণ না আপনি Firebase কনসোলের অ্যাপ চেক বিভাগে এনফোর্সমেন্ট সক্ষম করছেন। বিস্তারিত জানার জন্য পরবর্তী দুটি বিভাগ দেখুন।

4. অনুরোধের মেট্রিক্স মনিটর করুন

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

রিয়েলটাইম ডেটাবেস, ক্লাউড ফায়ারস্টোর এবং ক্লাউড স্টোরেজ

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

একটি পণ্যের জন্য অ্যাপ চেক অনুরোধের মেট্রিক্স দেখতে, Firebase কনসোলের অ্যাপ চেক বিভাগটি খুলুন। উদাহরণ স্বরূপ:

অ্যাপ চেক মেট্রিক্স পৃষ্ঠার স্ক্রিনশট

প্রতিটি পণ্যের জন্য অনুরোধের মেট্রিক্স চারটি বিভাগে বিভক্ত:

  • যাচাইকৃত অনুরোধগুলি হল সেইগুলি যেগুলির একটি বৈধ অ্যাপ চেক টোকেন রয়েছে৷ আপনি অ্যাপ চেক এনফোর্সমেন্ট সক্ষম করার পরে, শুধুমাত্র এই বিভাগের অনুরোধগুলি সফল হবে৷

  • পুরানো ক্লায়েন্ট অনুরোধগুলি হল সেইগুলি যেগুলির একটি অ্যাপ চেক টোকেন নেই৷ অ্যাপ চেক অ্যাপে অন্তর্ভুক্ত করার আগে এই অনুরোধগুলি Firebase SDK-এর পুরানো সংস্করণ থেকে হতে পারে।

  • অজানা মূল অনুরোধগুলি হল সেইগুলি যেগুলিতে একটি অ্যাপ চেক টোকেন নেই এবং মনে হচ্ছে না যে সেগুলি Firebase SDK থেকে এসেছে৷ এগুলি চুরি করা API কীগুলির সাহায্যে করা অনুরোধ থেকে হতে পারে বা Firebase SDK ছাড়াই করা জাল অনুরোধ থেকে হতে পারে৷

  • অবৈধ অনুরোধগুলি হল সেইগুলি যেগুলির একটি অবৈধ অ্যাপ চেক টোকেন রয়েছে, যা আপনার অ্যাপের ছদ্মবেশী করার চেষ্টাকারী একটি অপ্রমাণিত ক্লায়েন্ট বা অনুকরণ করা পরিবেশ থেকে হতে পারে৷

আপনি যখন এনফোর্সমেন্ট সক্ষম করার সিদ্ধান্ত নেন তখন আপনার অ্যাপের জন্য এই বিভাগগুলির ডিস্ট্রিবিউশনকে জানানো উচিত। এখানে কিছু নির্দেশিকা আছে:

  • যদি সাম্প্রতিক অনুরোধগুলির প্রায় সবগুলিই যাচাইকৃত ক্লায়েন্টদের কাছ থেকে হয়, তাহলে আপনার ব্যাকএন্ড সংস্থানগুলিকে সুরক্ষিত করার জন্য এনফোর্সমেন্ট সক্ষম করার কথা বিবেচনা করুন৷

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

  • যদি আপনার অ্যাপটি এখনও চালু না হয়ে থাকে, তাহলে আপনাকে অবিলম্বে অ্যাপ চেক এনফোর্সমেন্ট সক্ষম করতে হবে, যেহেতু কোনও পুরানো ক্লায়েন্ট ব্যবহারে নেই৷

ক্লাউড ফাংশন

ক্লাউড ফাংশনগুলির জন্য, আপনি আপনার ফাংশনগুলির লগগুলি পরীক্ষা করে অ্যাপ চেক মেট্রিক্স পেতে পারেন৷ একটি কলযোগ্য ফাংশনের প্রতিটি আহ্বান নিম্নলিখিত উদাহরণের মতো একটি কাঠামোবদ্ধ লগ এন্ট্রি নির্গত করে:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

আপনি নিম্নলিখিত মেট্রিক ফিল্টার সহ একটি লগ-ভিত্তিক কাউন্টার মেট্রিক তৈরি করে Google ক্লাউড কনসোলে এই মেট্রিকগুলি বিশ্লেষণ করতে পারেন:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

jsonPayload.verifications.appCheck ফিল্ডটি ব্যবহার করে মেট্রিক লেবেল করুন

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

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

রিয়েলটাইম ডেটাবেস, ক্লাউড ফায়ারস্টোর এবং ক্লাউড স্টোরেজ

রিয়েলটাইম ডেটাবেস, ক্লাউড ফায়ারস্টোর (আইওএস এবং অ্যান্ড্রয়েড), এবং ক্লাউড স্টোরেজের জন্য এনফোর্সমেন্ট সক্ষম করতে:

  1. Firebase কনসোলের অ্যাপ চেক বিভাগটি খুলুন।

  2. আপনি যে পণ্যটির জন্য প্রয়োগ সক্ষম করতে চান তার মেট্রিক্স ভিউ প্রসারিত করুন।

  3. এনফোর্স ক্লিক করুন এবং আপনার পছন্দ নিশ্চিত করুন।

মনে রাখবেন যে এটি কার্যকর হওয়ার জন্য আপনি এনফোর্সমেন্ট সক্ষম করার পরে এটি 15 মিনিট পর্যন্ত সময় নিতে পারে৷

ক্লাউড ফাংশন

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