আপনার শংসাপত্রগুলি শংসাপত্র প্রদানকারীদের সাথে সামঞ্জস্যপূর্ণ রাখুন

যখন একজন ব্যবহারকারী একটি পাসকি তৈরি করেন, তখন নির্ভরশীল পক্ষের সার্ভার নির্দিষ্ট কিছু বিবরণ সংরক্ষণ করে, অন্যদিকে গুগল পাসওয়ার্ড ম্যানেজারের মতো শংসাপত্র প্রদানকারী অন্যগুলি সংরক্ষণ করে। বিশেষ করে:

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

নির্ভরশীল পক্ষের সার্ভারে সংরক্ষিত ডেটা এবং শংসাপত্র প্রদানকারীর মধ্যে সম্ভাব্য অসঙ্গতির কারণে ব্যবহারকারীর অভিজ্ঞতা খারাপ হতে পারে। নিম্নলিখিত পরিস্থিতিতে সমস্যা দেখা দিতে পারে:

  • নির্ভরশীল পক্ষের সার্ভারে একটি শংসাপত্র মুছে ফেলা হয় কিন্তু শংসাপত্র প্রদানকারীতে নয়, যার ফলে শংসাপত্র প্রদানকারী ব্যবহারকারীকে মুছে ফেলা শংসাপত্র প্রদর্শন করে।
  • একটি ব্যবহারকারীর নাম বা প্রদর্শন নাম নির্ভরশীল পক্ষের সার্ভারে আপডেট করা হয় কিন্তু শংসাপত্র প্রদানকারীতে নয়, যার ফলে শংসাপত্র প্রদানকারী পুরানো বিবরণ দেখায়।

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

  • SignalUnknownCredentialRequest

    • নির্দেশ করে যে একটি নির্দিষ্ট শংসাপত্র আর বৈধ নয় এবং শংসাপত্র প্রদানকারীর কাছ থেকে লুকানো বা অপসারণ করা উচিত।
  • SignalAllAcceptedCredentialIdsRequest

    • শংসাপত্র প্রদানকারীকে গৃহীত শংসাপত্র আইডির একটি তালিকা প্রদান করে।
  • SignalCurrentUserDetailsRequest

    • ব্যবহারকারীর মেটাডেটা বিবরণ আপডেট করে।

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

সিগন্যাল এপিআই অ্যান্ড্রয়েড ১৫ বা তার বেশি ভার্সন চালিত ডিভাইসগুলিতে উপলব্ধ এবং androidx.credentials লাইব্রেরির 1.6.0-beta03 সংস্করণ থেকে শুরু করে উপলব্ধ।

বাস্তবায়ন

সিগন্যাল এপিআই ব্যবহার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার প্রকল্পে ক্রেডেনশিয়াল ম্যানেজার নির্ভরতা যোগ করুন।

    কোটলিন

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

    গ্রোভি

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

  2. সিগন্যাল এপিআই কল করুন

    ক্রেডেনশিয়াল প্রোভাইডারকে সিগন্যাল রিকোয়েস্ট পাঠাতে, একটি সমর্থিত সিগন্যাল রিকোয়েস্ট ব্যবহার করুন। প্রতিটি সিগন্যাল রিকোয়েস্টের জন্য একটি JSON রিকোয়েস্ট প্রয়োজন, যেমনটি নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে:

    • অজানা শংসাপত্র ( SignalUnknownCredentialRequest )

      SignalUnknownCredentialRequest ব্যবহার করে একটি শংসাপত্র প্রত্যাখ্যান করা হয়েছে এবং অজানা বলে বিবেচিত হয়েছে তা সিগন্যাল করুন। যখন শংসাপত্র প্রদানকারী এই সংকেতটি পায়, তখন এটি শংসাপত্রটি লুকিয়ে রাখে বা মুছে ফেলে।

      ব্যবহার

      যখন নির্ভরশীল পক্ষ পাসকির দাবি যাচাই করতে ব্যর্থ হয় তখন এই সংকেতটি ব্যবহার করুন। এর অর্থ হল পাসকিটি অবৈধ এবং শংসাপত্র প্রদানকারীর কাছ থেকে লুকানো বা অপসারণ করা আবশ্যক।

      এই অনুরোধের জন্য প্রয়োজনীয় JSON প্যারামিটারগুলি হল rpId এবং credentialId । JSON কাঠামো সম্পর্কে আরও তথ্যের জন্য, signalUnknownCredential বিকল্পগুলি দেখুন।

      credentialManager.signalCredentialState(
          SignalUnknownCredentialRequest(
              requestJson = JSONObject().apply {
                  put("rpId", rpId /* [String] RP ID of the relying party */)
                  put("credentialId", credentialId /* [String] Credential ID of the credential to be hidden or deleted */)
              }.toString()
          )
      )
      
    • সকল গৃহীত শংসাপত্র ( SignalAllAcceptedCredentialIdsRequest )

      SignalAllAcceptedCredentialIdsRequest ব্যবহার করে সমস্ত গৃহীত শংসাপত্রের সেট সম্পর্কে শংসাপত্র প্রদানকারীদের অবহিত করুন। শংসাপত্র প্রদানকারী একবার সিগন্যালটি গ্রহণ করলে, শংসাপত্র প্রদানকারী এই তালিকায় অন্তর্ভুক্ত নয় এমন যেকোনো শংসাপত্র লুকিয়ে রাখে বা মুছে ফেলে, অথবা তালিকায় অন্তর্ভুক্ত থাকা পূর্বে লুকানো যেকোনো শংসাপত্র প্রদর্শন করে।

      ব্যবহার

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

      এই অনুরোধের জন্য প্রয়োজনীয় JSON প্যারামিটারগুলি হল rpId , userId , এবং allAcceptedCredentialIds । JSON কাঠামো সম্পর্কে আরও তথ্যের জন্য, signalAllAcceptedCredential বিকল্পগুলি দেখুন।

      credentialManager.signalCredentialState(
          SignalAllAcceptedCredentialIdsRequest(
              requestJson = JSONObject().apply {
                  put("rpId", rpId /* [String] RP ID of the relying party */)
                  put("userId", userId /* [String] User ID of the current user */)
                  put(
                      "allAcceptedCredentialIds",
                      JSONArray(credentialIdsList /* [List<String>] List of accepted Credential IDs */)
                  )
              }.toString()
          )
      )
      
    • বর্তমান ব্যবহারকারীর বিবরণ ( SignalCurrentUserDetailsRequest )

      SignalCurrentUserDetailsRequest ব্যবহার করে ক্রেডেনশিয়াল প্রোভাইডারদের জানাতে পারেন যে মেটাডেটা, যেমন কোনও ব্যবহারকারীর ব্যবহারকারীর নাম এবং প্রদর্শন নাম, আপডেট করা হয়েছে এবং ক্রেডেনশিয়াল প্রোভাইডারে উপস্থিত হওয়া উচিত।

      ব্যবহার

      ব্যবহারকারী বা নির্ভরশীল পক্ষ যখন ব্যবহারকারীর অ্যাকাউন্টের সাথে সম্পর্কিত পাসকি মেটাডেটা আপডেট করে তখন এই সংকেতটি ব্যবহার করুন।

      এই অনুরোধের জন্য প্রয়োজনীয় JSON প্যারামিটারগুলি হল rpId , userId , name , এবং displayName । JSON কাঠামো সম্পর্কে আরও তথ্যের জন্য, signalCurrentUserDetails বিকল্পগুলি দেখুন।

      credentialManager.signalCredentialState(
          SignalCurrentUserDetailsRequest(
              requestJson = JSONObject().apply {
                  put("rpId", rpId /* [String] RP ID of the relying party */)
                  put("userId", userId /* [String] User ID of the current user */)
                  put("name", name /* [String] New Name to be updated for the current user */)
                  put("displayName", displayName /* [String] New display name to be updated for the current user */)
              }.toString()
          )
      )
      

বাস্তবায়ন পরীক্ষা করুন

আপনার Signal API বাস্তবায়ন পরীক্ষা করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. MyVault নামের শংসাপত্র প্রদানকারী নমুনাটি ইনস্টল করুন।

  2. সেটিংস > পাসওয়ার্ড, পাসকি এবং অ্যাকাউন্ট > পছন্দের পরিষেবা -এ MyVault কে একটি শংসাপত্র প্রদানকারী হিসেবে সক্ষম করুন।

    অ্যান্ড্রয়েড সেটিংসে পছন্দের পরিষেবা মেনু, যেখানে MyVault কে একটি শংসাপত্র প্রদানকারী হিসেবে সক্ষম দেখানো হচ্ছে।

  3. সেটিংস > অ্যাপস > MyVault > বিজ্ঞপ্তিগুলিতে MyVault এর জন্য সমস্ত বিজ্ঞপ্তি সক্ষম করুন।

    MyVault অ্যাপের বিজ্ঞপ্তি মেনু, যেখানে সমস্ত বিজ্ঞপ্তি সক্রিয় দেখানো হচ্ছে।

  4. সেটিংস > অ্যাপস > মাইভল্ট > বিজ্ঞপ্তি > বিভাগ > সিগন্যাল এপিআই বিজ্ঞপ্তি চ্যানেলে বিজ্ঞপ্তির জন্য পপ অন স্ক্রিন চালু আছে কিনা তা যাচাই করুন।

    MyVault-এর জন্য সিগন্যাল API বিজ্ঞপ্তি চ্যানেল সেটিংস, 'পপ অন স্ক্রিন' বিকল্পটি সক্রিয় দেখানো হচ্ছে।

  5. আপনার অ্যাপে, ক্রেডেনশিয়াল প্রোভাইডারকে সিগন্যাল অনুরোধ পাঠানোর প্রবাহগুলি ট্রিগার করুন। আপনি স্ক্রিনে MyVault থেকে বিজ্ঞপ্তিগুলি দেখতে পাবেন। এটি যাচাই করে যে ক্রেডেনশিয়াল প্রোভাইডার অনুরোধগুলি পেয়েছে।