পাসকী সংক্রান্ত ওরিয়েন্টেশন

ওয়েব ফিচার: ওয়েব যাচাইকরণ

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

১. পাসকী ব্যবহারের জন্য মূল পূর্বশর্ত

পাসকী, Web Authentication API (WebAuthn)-এর উপর নির্ভর করে, যা কঠোর ক্রস-কাটিং নিরাপত্তা সংক্রান্ত সীমাবদ্ধতা আরোপ করে এবং কোনও কিছু প্রয়োগ করার চেষ্টা করার আগে অবশ্যই তা পূরণ করতে হবে:

  • নিরাপদ কনটেক্সট: WebAuthn পদ্ধতি (navigator.credentials.create এবং navigator.credentials.get) নিরাপদ কনটেক্সটের মাধ্যমে কঠোরভাবে গেট করা হয়। অ্যাপ্লিকেশন প্রোডাকশনে https://-এ অথবা লোকাল ডেভেলপমেন্টের জন্য http://localhost-এ রান করতে হবে।
  • নির্ভরশীল পার্টি (RP) আইডি: প্রতিটি ক্রেডেনশিয়াল একটি RP আইডির (মূলত অ্যাপ্লিকেশনের ডোমেন নাম) সাথে যুক্ত থাকে। সার্ভার-সাইড বিকল্পে পাস করা RP আইডি বর্তমান উৎসের ডোমেন নামের সাথে অবশ্যই মিলতে হবে বা একটি সঠিক সাফিক্স হতে হবে (যেমন, login.example.com-এর জন্য example.com সঠিক)। অমিল হলে ক্লায়েন্ট সাইডে SecurityError ব্যতিক্রম হয়।

২. AAGUID UX Caveat

Authenticator Attestation Globally Unique Identifier (AAGUID) হল ১২৮-বিট শনাক্তকারী যা রেজিস্ট্রেশন অ্যাটেস্টেশন ডেটায় ফেরত পাঠানো হয় এবং এটি প্রমাণীকরণের মডেল/প্রদানকারীকে (যেমন, Google Password Manager, iCloud Keychain, 1Password) উপস্থাপন করে।

  • শুধুমাত্র UX হিন্টিং: Relying Parties-কে অবশ্যই শুধুমাত্র UX হিন্টের জন্য AAGUID ব্যবহার করতে হবে (যেমন, ব্যবহারকারীকে সাহায্য করার জন্য ম্যানেজমেন্ট লিস্টে পাসকী প্রদানকারীর নাম এবং আইকন রেন্ডার করা)।
  • নিরাপত্তা সংক্রান্ত কোনও নির্ভরতা নেই: ক্রিপ্টোগ্রাফিক নিরাপত্তা বা অ্যাক্সেস সংক্রান্ত সিদ্ধান্তের জন্য অ্যাপ্লিকেশনকে অবশ্যই AAGUID ব্যবহার করলে চলবে না। প্ল্যাটফর্ম পাসকী বর্তমানে তাদের AAGUID-এর জন্য ক্রিপ্টোগ্রাফিক অ্যাটেস্টেশন প্রদান করে না, যার অর্থ হল এটি ব্যবহারকারী এজেন্টদের দ্বারা পরিবর্তিত বা সিমুলেট করা যেতে পারে।

৩. ডিকাপল করা লাইব্রেরি সাজেশন

ব্যাকএন্ড FIDO2/WebAuthn বিকল্প জেনারেশন এবং স্বাক্ষর যাচাইকরণের জন্য, ডেভেলপারদের অবশ্যই হ্যান্ড-রোলিং ক্রিপ্টোগ্রাফির পরিবর্তে ভাষা প্রতি যাচাই করা ওপেন সোর্স লাইব্রেরির উপর নির্ভর করতে হবে:

  • JavaScript/TypeScript: SimpleWebAuthn (github.com/MasterKale/SimpleWebAuthn)
  • Python: py_webauthn (github.com/duo-labs/py_webauthn)
  • Java: Java WebAuthn Server (github.com/Yubico/java-webauthn-server), WebAuthn4J (github.com/webauthn4j/webauthn4j)
  • .NET: FIDO2-এর জন্য .NET লাইব্রেরি (github.com/abergs/fido2-net-lib)
  • Go: WebAuthn Go Library (github.com/go-webauthn/webauthn)
  • Ruby: WebAuthn Ruby (github.com/cedarcode/webauthn-ruby)
  • PHP: WebAuthn ফ্রেমওয়ার্ক (github.com/web-auth/webauthn-framework)

৪. ব্যবহারের উদাহরণ সংক্রান্ত রেফারেন্স ম্যাট্রিক্স

নিচে দেখানো ব্যবহারের কেস থেকে আপনার সাথে মেলে এমন কেসটি শনাক্ত করুন এবং এটি প্রয়োগ করার সম্পূর্ণ নির্দেশিকা পান। প্রতিটি ব্যবহারের ক্ষেত্রে গুরুত্বপূর্ণ API (PublicKeyCredential.parseCreationOptionsFromJSON, parseRequestOptionsFromJSON, signalAllAcceptedCredentials, signalCurrentUserDetails, signalUnknownCredential, কন্ডিশনাল মিডিয়েশন, AAGUID ম্যানেজ করা ইত্যাদি) থাকে যা শুধুমাত্র ব্যবহারের ক্ষেত্র অনুযায়ী গাইডে ডকুমেন্ট করা থাকে। এই রিট্রিভাল ধাপটি এড়িয়ে যাবেন না এবং ক্লায়েন্টে থার্ড-পার্টি লাইব্রেরি র‍্যাপার (যেমন SimpleWebAuthn-এর startAuthentication/startRegistration) ব্যবহার করবেন না — সরাসরি নেটিভ WebAuthn ব্রাউজার API কল করুন। অনুচ্ছেদ ৩-এ লাইব্রেরি সংক্রান্ত সাজেশন শুধুমাত্র সার্ভার-সাইড (ব্যাকএন্ড FIDO2 যাচাইকরণ) ক্ষেত্রে প্রযোজ্য।

নির্দিষ্ট পাসকী এবং WebAuthn প্রয়োগ সংক্রান্ত বিবরণ নিম্নলিখিত নির্দেশিকায় ম্যাপ করা হয়েছে: