আপনার এপিআই কী সুরক্ষিত করতে অ্যাপ চেক ব্যবহার করুন।
ফায়ারবেস অ্যাপ চেক বৈধ অ্যাপ ছাড়া অন্য উৎস থেকে আসা ট্র্যাফিক ব্লক করার মাধ্যমে আপনার অ্যাপ থেকে গুগল ম্যাপস প্ল্যাটফর্মে করা কলগুলোকে সুরক্ষা প্রদান করে। এটি অ্যাপ অ্যাটেস্ট-এর মতো কোনো অ্যাটেস্টেশন প্রোভাইডারের টোকেন যাচাই করার মাধ্যমে এই কাজটি করে থাকে। আপনার অ্যাপগুলোকে অ্যাপ চেক-এর সাথে ইন্টিগ্রেট করলে তা ক্ষতিকর রিকোয়েস্ট থেকে সুরক্ষা দিতে সাহায্য করে, ফলে অননুমোদিত এপিআই কলের জন্য আপনাকে কোনো চার্জ দিতে হয় না।
অ্যাপ চেক কি আমার জন্য উপযুক্ত?
বেশিরভাগ ক্ষেত্রে অ্যাপ চেক করার পরামর্শ দেওয়া হয়, তবে নিম্নলিখিত ক্ষেত্রগুলিতে অ্যাপ চেকের প্রয়োজন নেই বা এটি সমর্থিত নয়:
- আপনি মূল Places SDK ব্যবহার করছেন। অ্যাপ চেক শুধুমাত্র Places SDK (New)-এর জন্য সমর্থিত ।
- ব্যক্তিগত বা পরীক্ষামূলক অ্যাপ। আপনার অ্যাপটি যদি সর্বজনীনভাবে অ্যাক্সেসযোগ্য না হয়, তাহলে অ্যাপ চেকের প্রয়োজন নেই।
- আপনার অ্যাপটি যদি শুধু সার্ভার-টু-সার্ভার ব্যবহৃত হয়, তাহলে অ্যাপ চেকের প্রয়োজন নেই। তবে, জিএমপি-র সাথে যোগাযোগকারী সার্ভারটি যদি পাবলিক ক্লায়েন্ট (যেমন মোবাইল অ্যাপ) ব্যবহার করে, তাহলে জিএমপি-র পরিবর্তে সেই সার্ভারটিকে সুরক্ষিত করতে অ্যাপ চেক ব্যবহার করার কথা বিবেচনা করতে পারেন।
- আপনার অ্যাটেস্টেশন প্রোভাইডারের দ্বারা আপোসকৃত বা অবিশ্বস্ত বলে বিবেচিত ডিভাইসগুলিতে অ্যাপ চেকের প্রস্তাবিত অ্যাটেস্টেশন প্রোভাইডাররা কাজ করবে না। যদি আপনার এই ধরনের ডিভাইসগুলিকে সমর্থন করার প্রয়োজন হয়, তবে আপনি একটি কাস্টম অ্যাটেস্টেশন পরিষেবা স্থাপন করতে পারেন। আরও তথ্যের জন্য, নির্দেশাবলী দেখুন।
বাস্তবায়নের ধাপগুলোর সংক্ষিপ্ত বিবরণ
মোটামুটিভাবে, আপনার অ্যাপকে অ্যাপ চেক-এর সাথে সংযুক্ত করতে আপনাকে এই ধাপগুলো অনুসরণ করতে হবে:
- আপনার অ্যাপে Firebase যোগ করুন।
- অ্যাপ চেক লাইব্রেরিটি যোগ ও চালু করুন।
- আপনার অ্যাপে টোকেন প্রোভাইডারটি যোগ করুন।
- Places এবং App Check API-গুলো ইনিশিয়ালাইজ করুন।
- ডিবাগিং সক্ষম করুন।
- আপনার অ্যাপের অনুরোধগুলো পর্যবেক্ষণ করুন এবং প্রয়োগের বিষয়ে সিদ্ধান্ত নিন।
একবার আপনি অ্যাপ চেক-এর সাথে ইন্টিগ্রেট করলে, ফায়ারবেস কনসোলে ব্যাকএন্ড ট্র্যাফিক মেট্রিক্স দেখতে পারবেন। এই মেট্রিক্সগুলো অনুরোধগুলোর সাথে একটি বৈধ অ্যাপ চেক টোকেন আছে কি না, তার ভিত্তিতে বিস্তারিত তথ্য প্রদান করে। আরও তথ্যের জন্য ফায়ারবেস অ্যাপ চেক ডকুমেন্টেশন দেখুন।
যখন আপনি নিশ্চিত হবেন যে বেশিরভাগ অনুরোধ বৈধ উৎস থেকে আসছে এবং ব্যবহারকারীরা আপনার অ্যাপের সর্বশেষ সংস্করণে আপডেট করেছেন, যেটিতে আপনার অ্যাপ চেক বাস্তবায়ন অন্তর্ভুক্ত রয়েছে, তখন আপনি এনফোর্সমেন্ট চালু করতে পারেন। এনফোর্সমেন্ট চালু হয়ে গেলে, অ্যাপ চেক একটি বৈধ অ্যাপ চেক টোকেন ছাড়া সমস্ত ট্র্যাফিক প্রত্যাখ্যান করবে।
অ্যাপ চেক ইন্টিগ্রেশন পরিকল্পনা করার সময় বিবেচ্য বিষয়সমূহ
আপনার ইন্টিগ্রেশনের পরিকল্পনা করার সময় এখানে কিছু বিষয় বিবেচনা করার জন্য দেওয়া হলো:
আমরা যে অ্যাটেস্টেশন প্রদানকারীদের সুপারিশ করি, যেমন ডিভাইস চেক বা অ্যাপ অ্যাটেস্ট , সেগুলো অ্যাপল কর্তৃক নির্ধারিত কোটা এবং সীমাবদ্ধতার অধীন।
আপনি একটি কাস্টম অ্যাটেস্টেশন প্রোভাইডার ব্যবহার করতে পারেন, যদিও এটি একটি উন্নত ব্যবহার পদ্ধতি। আরও তথ্যের জন্য Firebase App Check ডকুমেন্টেশন দেখুন।
আপনার অ্যাপের ব্যবহারকারীরা অ্যাপ চালু হওয়ার সময় কিছুটা ল্যাটেন্সি অনুভব করবেন। তবে, এরপরে, যেকোনো পর্যায়ক্রমিক পুনঃ-অ্যাটেস্টেশন ব্যাকগ্রাউন্ডে সম্পন্ন হবে এবং ব্যবহারকারীরা আর কোনো ল্যাটেন্সি অনুভব করবেন না। অ্যাপ চালু হওয়ার সময় ল্যাটেন্সির সঠিক পরিমাণ নির্ভর করে আপনার নির্বাচিত অ্যাটেস্টেশন প্রোভাইডারের উপর।
অ্যাপ চেক টোকেনটি যে সময়কাল ধরে বৈধ থাকে ( টাইম টু লিভ বা টিটিএল), তা পুনঃ-অ্যাটেস্টেশনের পুনরাবৃত্তি নির্ধারণ করে। এই সময়কাল ফায়ারবেস কনসোলে কনফিগার করা যায়। টিটিএল-এর প্রায় অর্ধেক সময় অতিবাহিত হলে পুনঃ-অ্যাটেস্টেশন সম্পন্ন হয়। আরও তথ্যের জন্য, আপনার অ্যাটেস্টেশন প্রোভাইডারের ফায়ারবেস ডক্স দেখুন।
আপনার অ্যাপকে অ্যাপ চেকের সাথে একীভূত করুন
পূর্বশর্ত এবং প্রয়োজনীয়তা
- অ্যাপটিতে Places SDK ভার্সন ৯.২ বা তার পরবর্তী সংস্করণ ইনস্টল করা থাকতে হবে।
- অ্যাপটির বান্ডেল আইডি ।
- অ্যাপল মেম্বার সেন্টারের মেম্বারশিপ বিভাগ থেকে আপনার টিম আইডি সংগ্রহ করুন।
- আপনি যদি ডিভাইস চেক ব্যবহার করার পরিকল্পনা করেন, তাহলে আপনার প্রাইভেট কী ফাইল এবং কী আইডি প্রয়োজন হবে ।
- আপনাকে অবশ্যই ক্লাউড কনসোলে অ্যাপটির মালিক হতে হবে।
- ক্লাউড কনসোল থেকে আপনার অ্যাপটির প্রজেক্ট আইডি প্রয়োজন হবে।
ধাপ ১: আপনার অ্যাপে Firebase যোগ করুন
আপনার অ্যাপে Firebase যোগ করতে Firebase ডেভেলপার ডকুমেন্টেশনে দেওয়া নির্দেশাবলী অনুসরণ করুন।
আপনার অ্যাপটি রেজিস্টার করার সময়, আপনি GoogleService-Info.plist নামে একটি কনফিগারেশন ফাইল পাবেন। এই ফাইলটি কোনো পরিবর্তন না করে আপনার অ্যাপের রুট লেভেলে যুক্ত করুন।
iOS-এর জন্য প্লেসেস সুইফট এসডিকে
import FirebaseCore import FirebaseAppCheck import GooglePlacesSwift
সুইফট
import FirebaseCore import FirebaseAppCheck import GooglePlaces
উদ্দেশ্য-সি
@import FirebaseCore; @import FirebaseAppCheck; @import GooglePlaces;
ধাপ ২: অ্যাপ চেক লাইব্রেরি যোগ করুন এবং অ্যাপ চেক চালু করুন।
ফায়ারবেস প্রতিটি ডিফল্ট অ্যাটেস্টেশন প্রোভাইডারের জন্য নির্দেশাবলী প্রদান করে। এই নির্দেশাবলীতে দেখানো হয়েছে কীভাবে একটি ফায়ারবেস প্রজেক্ট সেট আপ করতে হয় এবং আপনার অ্যাপে অ্যাপ চেক লাইব্রেরিটি যুক্ত করতে হয়। অ্যাপ চেক ইনিশিয়ালাইজ করার জন্য প্রদত্ত কোড স্যাম্পলগুলো অনুসরণ করুন।
- অ্যাপ চেক লাইব্রেরিটি যোগ করতে ফায়ারবেসের নির্দেশাবলী অনুসরণ করুন:
- অ্যাপ চালু করা যাচাই করুন।
- আপনি যদি অ্যাপ অ্যাটেস্ট ব্যবহার করেন, তাহলে অ্যাপ অ্যাটেস্ট-এর জন্য ফায়ারবেস ডেভেলপার ডকুমেন্টেশন অনুসরণ করুন।
AppCheckProviderFactoryএর একটি ইমপ্লিমেন্টেশন তৈরি করতে Firebase App Check-এর নির্দেশাবলী অনুসরণ করুন এবং এটি আপনারAppDelegateফাইলে যুক্ত করুন।iOS-এর জন্য প্লেসেস সুইফট এসডিকে
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
সুইফট
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
উদ্দেশ্য-সি
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- আপনি যদি ডিভাইস চেক ব্যবহার করেন, তাহলে আপনার
AppDelegateএ নিম্নলিখিতগুলি যোগ করুন:iOS-এর জন্য প্লেসেস সুইফট এসডিকে
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
সুইফট
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
উদ্দেশ্য-সি
[FIRAppCheck setAppCheckProviderFactory:providerFactory];
- আপনি যদি অ্যাপ অ্যাটেস্ট ব্যবহার করেন, তাহলে অ্যাপ অ্যাটেস্ট-এর জন্য ফায়ারবেস ডেভেলপার ডকুমেন্টেশন অনুসরণ করুন।
ধাপ ৩: টোকেন প্রদানকারী যোগ করুন
আপনার অ্যাপের রুট লেভেলে AppCheckTokenProvider নামে একটি ফাইল তৈরি করুন (অথবা, আপনি যদি Objective-C ব্যবহার করেন, তাহলে AppCheckTokenProvider.h এবং AppCheckTokenProvider.m নামে দুটি ফাইল তৈরি করুন)। নিম্নলিখিত ইম্পোর্ট স্টেটমেন্ট এবং ক্লাস ডেফিনিশন যোগ করুন:
iOS-এর জন্য প্লেসেস সুইফট এসডিকে
// AppCheckTokenProvider.swift import FirebaseAppCheck import Foundation import GooglePlacesSwift struct TokenProvider: AppCheckTokenProvider { func fetchAppCheckToken() async throws -> String { return try await AppCheck.appCheck().token(forcingRefresh: false).token } }
সুইফট
// AppCheckTokenProvider.swift import FirebaseAppCheck import Foundation import GooglePlaces class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider { func fetchAppCheckToken() async throws -> String { return try await AppCheck.appCheck().token(forcingRefresh: false).token } }
উদ্দেশ্য-সি
// AppCheckTokenProvider.h @import Foundation; @import GooglePlaces; @interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider> @end // AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" @import FirebaseAppCheck; @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
ধাপ ৪: প্লেসেস এবং অ্যাপ চেক এপিআইগুলো ইনিশিয়ালাইজ করুন
- আপনার
AppDelegateফাইলে Places API-টি ইনিশিয়ালাইজ করুন:iOS-এর জন্য প্লেসেস সুইফট এসডিকে
PlacesClient.provideAPIKey("YOUR_API_KEY")
সুইফট
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
উদ্দেশ্য-সি
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
- তারপর, অ্যাপ চেক এপিআই (App Check API) চালু করুন:
iOS-এর জন্য প্লেসেস সুইফট এসডিকে
PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
সুইফট
GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
উদ্দেশ্য-সি
[GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];
ধাপ ৫: ডিবাগিং সক্ষম করুন (ঐচ্ছিক)
আপনি যদি আপনার অ্যাপটি স্থানীয়ভাবে তৈরি ও পরীক্ষা করতে চান, অথবা একটি কন্টিনিউয়াস ইন্টিগ্রেশন (CI) পরিবেশে চালাতে চান, তাহলে আপনি আপনার অ্যাপের একটি ডিবাগ বিল্ড তৈরি করতে পারেন যা বৈধ অ্যাপ চেক টোকেন পাওয়ার জন্য একটি ডিবাগ সিক্রেট ব্যবহার করে। এর ফলে আপনি আপনার ডিবাগ বিল্ডে আসল অ্যাটেস্টেশন প্রোভাইডার ব্যবহার করা এড়াতে পারবেন।
সিমুলেটরে বা কোনো টেস্ট ডিভাইসে আপনার অ্যাপ পরীক্ষা করতে:
অ্যাপ চেক ডিবাগ প্রোভাইডার ফ্যাক্টরি তৈরি ও সেট করুন।
এই কোড নমুনাটি ডিবাগিং এবং প্রোডাকশন উভয় পরিস্থিতিই সামাল দেয়:iOS-এর জন্য প্লেসেস সুইফট এসডিকে
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif
সুইফট
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif
উদ্দেশ্য-সি
if (targetEnvironment == simulator){ FIRAppCheckDebugProviderFactory *providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; } else { YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; }
- আপনার Xcode প্রজেক্টে লগিং চালু করুন, অ্যাপটি চালু করুন এবং লগ থেকে লোকাল ডিবাগ টোকেনটি খুঁজুন।
- এই টোকেনটি ফায়ারবেস কনসোলে যোগ করুন।
- আরও তথ্য ও নির্দেশাবলীর জন্য, অ্যাপ চেক ডকুমেন্টেশন দেখুন।
আপনার অ্যাপটি CI পরিবেশে চালানোর জন্য:
- Firebase কনসোলে একটি ডিবাগ টোকেন তৈরি করুন এবং সেটি আপনার CI সিস্টেমের সুরক্ষিত কী স্টোরে যুক্ত করুন।
- Xcode-এ, আপনার টেস্টিং স্কিমে
FIRAAppCheckDebugTokenনামে একটি এনভায়রনমেন্ট ভ্যারিয়েবল যোগ করুন এবং এর ভ্যালু হিসেবে$(APP_CHECK_DEBUG_TOKEN)(বা এর অনুরূপ কিছু) দিন। - আপনার CI টেস্ট স্ক্রিপ্টে, ডিবাগ টোকেনটিকে একটি এনভায়রনমেন্ট হিসেবে পাস করুন।
অ্যাপ চেক ডিবাগ প্রোভাইডার ফ্যাক্টরি তৈরি ও সেট করুন।
এই কোড নমুনাটি ডিবাগিং এবং প্রোডাকশন উভয় পরিস্থিতিই সামাল দেয়:iOS-এর জন্য প্লেসেস সুইফট এসডিকে
#if DEBUG let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
সুইফট
#if DEBUG let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
উদ্দেশ্য-সি
#if DEBUG id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else // DEBUG id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif // DEBUG AppCheck.setAppCheckProviderFactory(providerFactory)
- আরও তথ্য ও নির্দেশাবলীর জন্য, অ্যাপ চেক ডকুমেন্টেশন দেখুন।
ধাপ ৬: আপনার অ্যাপের অনুরোধগুলো পর্যবেক্ষণ করুন এবং তা কার্যকর করার বিষয়ে সিদ্ধান্ত নিন।
এনফোর্সমেন্ট শুরু করার আগে, আপনাকে নিশ্চিত করতে হবে যে আপনি আপনার অ্যাপের বৈধ ব্যবহারকারীদের কোনো অসুবিধা সৃষ্টি করবেন না। এটি করার জন্য, আপনার অ্যাপের ট্র্যাফিকের কত শতাংশ যাচাইকৃত, পুরোনো বা অবৈধ তা দেখতে অ্যাপ চেক মেট্রিক্স স্ক্রিনে যান। যখন আপনি দেখবেন যে আপনার ট্র্যাফিকের বেশিরভাগই যাচাইকৃত, তখন আপনি এনফোর্সমেন্ট চালু করতে পারেন।
আরও তথ্য ও নির্দেশাবলীর জন্য Firebase App Check ডকুমেন্টেশন দেখুন।