ক্রেডেনশিয়াল ম্যানেজারের সাহায্যে পুনরুদ্ধার ক্রেডেনশিয়াল বাস্তবায়ন করুন

এই পৃষ্ঠাটি বর্ণনা করে কিভাবে একটি পুনরুদ্ধার কী তৈরি করতে, সাইন ইন করতে এবং মুছে ফেলতে হয়।

সংস্করণের সামঞ্জস্য

ক্রেডেনশিয়াল ম্যানেজারের রিস্টোর ক্রেডেনশিয়ালগুলি অ্যান্ড্রয়েড ৯ এবং তার পরবর্তী ভার্সন, গুগল প্লে সার্ভিসেস (জিএমএস) কোর ভার্সন ২৪২২০০০ বা তার পরবর্তী ভার্সন এবং androidx.credentials লাইব্রেরির ১.৫.০ বা তার পরবর্তী ভার্সন চলমান ডিভাইসগুলিতে কাজ করে।

পূর্বশর্ত

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

নির্ভরতা

আপনার অ্যাপ মডিউলের build.gradle ফাইলে নিম্নলিখিত নির্ভরতাগুলি যোগ করুন:

কোটলিন

dependencies {
    implementation("androidx.credentials:credentials:1.6.0-rc01")
    implementation("androidx.credentials:credentials-play-services-auth:1.6.0-rc01")
}

গ্রোভি

dependencies {
    implementation "androidx.credentials:credentials:1.6.0-rc01"
    implementation "androidx.credentials:credentials-play-services-auth:1.6.0-rc01"
}

androidx.credentials লাইব্রেরির ১.৫.০ এবং তার পরবর্তী সংস্করণ থেকে Restore Credentials পাওয়া যাচ্ছে। তবে, সম্ভব হলে নির্ভরতার সর্বশেষ স্থিতিশীল সংস্করণ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।

সংক্ষিপ্ত বিবরণ

  1. একটি পুনরুদ্ধার কী তৈরি করুন : একটি পুনরুদ্ধার কী তৈরি করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:
    1. ক্রেডেনশিয়াল ম্যানেজার ইন্সট্যান্টিয়েট করুন : একটি CredentialManager অবজেক্ট তৈরি করুন।
    2. অ্যাপ সার্ভার থেকে ক্রেডেনশিয়াল তৈরির বিকল্পগুলি পান : আপনার অ্যাপ সার্ভার থেকে পুনরুদ্ধার কী তৈরি করার জন্য প্রয়োজনীয় বিবরণ ক্লায়েন্ট অ্যাপটিকে পাঠান।
    3. পুনরুদ্ধার কী তৈরি করুন : ব্যবহারকারী যদি আপনার অ্যাপে সাইন ইন করে থাকেন তবে তার অ্যাকাউন্টের জন্য একটি পুনরুদ্ধার কী তৈরি করুন।
    4. ক্রেডেনশিয়াল তৈরির প্রতিক্রিয়া পরিচালনা করুন : আপনার ক্লায়েন্ট অ্যাপ থেকে ক্রেডেনশিয়ালগুলি প্রক্রিয়াকরণের জন্য আপনার অ্যাপ সার্ভারে পাঠান এবং যেকোনো ব্যতিক্রম পরিচালনা করুন।
  2. একটি পুনরুদ্ধার কী দিয়ে সাইন ইন করুন : একটি পুনরুদ্ধার কী দিয়ে সাইন ইন করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:
    1. অ্যাপ সার্ভার থেকে শংসাপত্র পুনরুদ্ধারের বিকল্পগুলি পান : আপনার অ্যাপ সার্ভার থেকে পুনরুদ্ধার কী পুনরুদ্ধার করার জন্য প্রয়োজনীয় বিবরণ ক্লায়েন্ট অ্যাপটিকে পাঠান।
    2. পুনরুদ্ধার কী পান : ব্যবহারকারী যখন একটি নতুন ডিভাইস সেট আপ করেন তখন ক্রেডেনশিয়াল ম্যানেজার থেকে পুনরুদ্ধার কী অনুরোধ করুন। এটি ব্যবহারকারীকে অতিরিক্ত ইনপুট ছাড়াই সাইন ইন করতে দেয়।
    3. শংসাপত্র পুনরুদ্ধার প্রতিক্রিয়া পরিচালনা করুন : ব্যবহারকারীকে সাইন ইন করার জন্য ক্লায়েন্ট অ্যাপ থেকে অ্যাপ সার্ভারে পুনরুদ্ধার কী পাঠান।
  3. একটি পুনরুদ্ধার কী মুছুন

একটি পুনরুদ্ধার কী তৈরি করুন

ব্যবহারকারী আপনার অ্যাপে প্রমাণীকরণ করার পর পুনরুদ্ধার কী তৈরি করুন—সাইন-ইন করার পরপরই, অথবা যদি তারা ইতিমধ্যেই সাইন ইন করে থাকে, তাহলে পরবর্তী অ্যাপ লঞ্চের সময়।

ইনস্ট্যান্টিয়েট ক্রেডেনশিয়াল ম্যানেজার

একটি CredentialManager অবজেক্ট তৈরি করতে আপনার অ্যাপের কার্যকলাপ প্রসঙ্গ ব্যবহার করুন।

// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)

আপনার অ্যাপ সার্ভার থেকে শংসাপত্র তৈরির বিকল্পগুলি পান

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

পুনরুদ্ধার কী তৈরি করুন

সার্ভার কর্তৃক প্রেরিত পাবলিক কী তৈরির বিকল্পগুলি বিশ্লেষণ করার পরে, এই বিকল্পগুলিকে একটি CreateRestoreCredentialRequest অবজেক্টে মোড়ানো এবং createCredential() পদ্ধতিটি CredentialManager অবজেক্ট দিয়ে কল করে একটি পুনরুদ্ধার কী তৈরি করুন।

val credentialManager = CredentialManager.create(context)

// On a successful authentication create a Restore Key
// Pass in the context and CreateRestoreCredentialRequest object
val response = credentialManager.createCredential(context, createRestoreRequest)

কোড সম্পর্কে গুরুত্বপূর্ণ বিষয়সমূহ

  • CreateRestoreCredentialRequest অবজেক্টে নিম্নলিখিত ক্ষেত্রগুলি রয়েছে:

    • requestJson : PublicKeyCredentialCreationOptionsJSON এর জন্য ওয়েব প্রমাণীকরণ API ফর্ম্যাটে অ্যাপ সার্ভার দ্বারা প্রেরিত শংসাপত্র তৈরির বিকল্পগুলি।
    • isCloudBackupEnabled : Boolean ফিল্ড যা নির্ধারণ করে যে রিস্টোর কীটি ক্লাউডে ব্যাক আপ করা উচিত কিনা। ডিফল্টরূপে, এই ফ্ল্যাগটি true । এই ফিল্ডের নিম্নলিখিত মান রয়েছে:

      • true : ( প্রস্তাবিত ) ব্যবহারকারীর যদি গুগল ব্যাকআপ এবং এন্ড-টু-এন্ড এনক্রিপশন, যেমন স্ক্রিন লক, সক্ষম থাকে, তাহলে এই মানটি ক্লাউডে পুনরুদ্ধার কীগুলির ব্যাকআপ সক্ষম করে।
      • false : এই মানটি স্থানীয়ভাবে কী সংরক্ষণ করে, ক্লাউডে নয়। ব্যবহারকারী যদি ক্লাউড থেকে পুনরুদ্ধার করতে চান তবে নতুন ডিভাইসে কীটি উপলব্ধ থাকবে না।

শংসাপত্র তৈরির প্রতিক্রিয়া পরিচালনা করুন

ক্রেডেনশিয়াল ম্যানেজার API CreateRestoreCredentialResponse টাইপের একটি প্রতিক্রিয়া প্রদান করে। এই প্রতিক্রিয়াটি JSON ফর্ম্যাটে পাবলিক কী ক্রেডেনশিয়াল রেজিস্ট্রেশন প্রতিক্রিয়া ধারণ করে।

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

পুনরুদ্ধার কী তৈরির প্রক্রিয়া চলাকালীন, এই ব্যতিক্রমগুলি পরিচালনা করুন:

  • CreateRestoreCredentialDomException : এই ব্যতিক্রমটি তখনই ঘটে যখন requestJson অবৈধ হয় এবং PublicKeyCredentialCreationOptionsJSON এর WebAuthn ফর্ম্যাট অনুসরণ না করে।
  • E2eeUnavailableException : এই ব্যতিক্রমটি তখনই ঘটে যখন isCloudBackupEnabled true হয়, কিন্তু ব্যবহারকারীর ডিভাইসে ডেটা ব্যাকআপ বা এন্ড-টু-এন্ড এনক্রিপশন না থাকে, যেমন স্ক্রিন লক।
  • IllegalArgumentException : এই ব্যতিক্রমটি তখনই ঘটে যখন createRestoreRequest খালি থাকে অথবা JSON বৈধ না থাকে, অথবা যদি এর কোন বৈধ user.id না থাকে যা WebAuthn স্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ হয়।

একটি পুনরুদ্ধার কী দিয়ে সাইন ইন করুন

ডিভাইস সেটআপ প্রক্রিয়া চলাকালীন ব্যবহারকারীকে নীরবে সাইন ইন করতে পুনরুদ্ধার শংসাপত্র ব্যবহার করুন।

অ্যাপ সার্ভার থেকে শংসাপত্র পুনরুদ্ধারের বিকল্পগুলি পান

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

পুনরুদ্ধার কীটি পান

নতুন ডিভাইসে রিস্টোর কী পেতে, CredentialManager অবজেক্টে getCredential() পদ্ধতিটি কল করুন।

নিম্নলিখিত পরিস্থিতিতে আপনি পুনরুদ্ধার কীটি আনতে পারেন:

  • ( প্রস্তাবিত ) অ্যাপ ডেটা পুনরুদ্ধারের পরপরই। আপনার অ্যাপের ব্যাকআপ কনফিগার করতে BackupAgent ব্যবহার করুন এবং onRestore কলব্যাকের মধ্যে getCredential কার্যকারিতা সম্পূর্ণ করুন যাতে অ্যাপ ডেটা পুনরুদ্ধারের সাথে সাথে অ্যাপের শংসাপত্র পুনরুদ্ধার করা হয়। এটি ব্যবহারকারীদের প্রথমবার তাদের নতুন ডিভাইস খোলার সময় সম্ভাব্য বিলম্ব এড়ায় এবং ব্যবহারকারীদের আপনার অ্যাপ খোলার জন্য অপেক্ষা না করেই ইন্টারঅ্যাক্ট করতে দেয়।
  • ডিভাইসে অ্যাপটির প্রথম লঞ্চের সময়।

নতুন ডিভাইসে প্রথমবার অ্যাপটি খোলার আগে ব্যবহারকারীদের বিজ্ঞপ্তি পাঠানোর জন্য, BackupAgent এর onRestore কলব্যাকের মধ্যে পুনরুদ্ধার কীটি আনুন। এটি বিশেষ করে মেসেজিং বা যোগাযোগ অ্যাপের জন্য প্রাসঙ্গিক।

// Fetch the Authentication JSON from server
val authenticationJson = fetchAuthenticationJson()

// Create the GetRestoreCredentialRequest object
val options = GetRestoreCredentialOption(authenticationJson)
val getRequest = GetCredentialRequest(listOf(options))

// The restore key can be fetched in two scenarios to
// 1. On the first launch of app on the device, fetch the Restore Key
// 2. In the onRestore callback (if the app implements the Backup Agent)
val response = credentialManager.getCredential(context, getRequest)

ক্রেডেনশিয়াল ম্যানেজার API গুলি GetCredentialResponse টাইপের একটি প্রতিক্রিয়া প্রদান করে। এই প্রতিক্রিয়াটিতে পাবলিক কী থাকে।

সাইন-ইন প্রতিক্রিয়া পরিচালনা করুন

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

পুনরুদ্ধার কী মুছে ফেলুন

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

কোনও অ্যাপ আনইনস্টল করাকে সেই ডিভাইস থেকে সংশ্লিষ্ট পুনরুদ্ধার কী মুছে ফেলার উদ্দেশ্য হিসাবে ব্যাখ্যা করা হয়, যেমনটি ব্যবহারকারী সাইন আউট করার সময় করেন।

শুধুমাত্র নিম্নলিখিত পরিস্থিতিতে পুনরুদ্ধার কীগুলি সরানো হয়:

  • সিস্টেম-স্তরের ক্রিয়া : ব্যবহারকারীরা অ্যাপটি আনইনস্টল করে বা এর ডেটা সাফ করে।
  • অ্যাপ-লেভেল কল : আপনার অ্যাপের কোডে ব্যবহারকারীর সাইন আউট পরিচালনা করার সময় clearCredentialState() কল করে প্রোগ্রাম্যাটিকভাবে কীটি মুছে ফেলুন।

যখন ব্যবহারকারী আপনার অ্যাপ থেকে সাইন আউট করে, তখন CredentialManager অবজেক্টে clearCredentialState() পদ্ধতিটি কল করুন।

// Create a ClearCredentialStateRequest object
val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL)

// On user log-out, clear the restore key
val response = credentialManager.clearCredentialState(clearRequest)