পাসকি ব্যবহারকারীর অ্যাকাউন্টকে আরও নিরাপদ, সরল এবং ব্যবহারে সুবিধাজনক করে তোলে।
প্রকাশিত: ১২ অক্টোবর, ২০২২, সর্বশেষ হালনাগাদ: ০৯ এপ্রিল, ২০২৬
পাসকি ব্যবহার করলে নিরাপত্তা বাড়ে, লগইন সহজ হয় এবং এটি পাসওয়ার্ডের বিকল্প হিসেবে কাজ করে। সাধারণ পাসওয়ার্ডের মতো নয়, যা ব্যবহারকারীদের মনে রাখতে এবং হাতে লিখতে হয়, পাসকি বায়োমেট্রিক্স বা পিনের মতো ডিভাইসের স্ক্রিন লক ব্যবস্থা ব্যবহার করে এবং ফিশিংয়ের ঝুঁকি ও তথ্য চুরির সম্ভাবনা কমায়।
গুগল পাসওয়ার্ড ম্যানেজার এবং আইক্লাউড কিচেইনের মতো পাসকি প্রোভাইডার ব্যবহার করে ডিভাইসজুড়ে পাসকিগুলো সিঙ্ক হয়।
একটি পাসকি তৈরি করতে হবে, যার জন্য প্রাইভেট কী-টি প্রয়োজনীয় মেটাডেটা সহ নিরাপদে পাসকি প্রোভাইডারের কাছে এবং অথেনটিকেশনের জন্য এর পাবলিক কী-টি আপনার সার্ভারে সংরক্ষণ করতে হবে। বৈধ ডোমেইনে ব্যবহারকারী যাচাইয়ের পর প্রাইভেট কী-টি একটি সিগনেচার তৈরি করে, যা পাসকি-কে ফিশিং-রোধী করে তোলে। পাবলিক কী-টি সংবেদনশীল ক্রেডেনশিয়াল সংরক্ষণ না করেই সিগনেচারটি যাচাই করে, ফলে পাসকি ক্রেডেনশিয়াল চুরির বিরুদ্ধে সুরক্ষিত থাকে।
পাসকি তৈরি করার পদ্ধতি
কোনো ব্যবহারকারী পাসকি দিয়ে সাইন ইন করার আগে, আপনাকে পাসকিটি তৈরি করতে হবে, সেটিকে একটি ব্যবহারকারী অ্যাকাউন্টের সাথে যুক্ত করতে হবে এবং এর পাবলিক কী আপনার সার্ভারে সংরক্ষণ করতে হবে।
আপনি নিম্নলিখিত পরিস্থিতিগুলির মধ্যে কোনো একটিতে ব্যবহারকারীদের একটি পাসকি তৈরি করতে বলতে পারেন:
- নিবন্ধন করার সময় বা পরে।
- সাইন ইন করার পর।
- অন্য ডিভাইস থেকে একটি পাসকি ব্যবহার করে সাইন ইন করার পর (অর্থাৎ,
authenticatorAttachmentcross-platform)। - একটি নির্দিষ্ট পৃষ্ঠায়, যেখানে ব্যবহারকারীরা তাদের পাসকিগুলো পরিচালনা করতে পারেন।
পাসকি তৈরি করতে, আপনি WebAuthn API ব্যবহার করেন।
পাসকি নিবন্ধন প্রক্রিয়ার চারটি উপাদান হলো:
- ব্যাকএন্ড : পাবলিক কী সহ ব্যবহারকারীর অ্যাকাউন্টের বিবরণ সংরক্ষণ করে।
- ফ্রন্টএন্ড : ব্রাউজারের সাথে যোগাযোগ করে এবং ব্যাকএন্ড থেকে প্রয়োজনীয় ডেটা সংগ্রহ করে।
- ব্রাউজার : আপনার জাভাস্ক্রিপ্ট চালায় এবং WebAuthn API-এর সাথে যোগাযোগ স্থাপন করে।
- পাসকি প্রদানকারী : পাসকি তৈরি এবং সংরক্ষণ করে। এটি সাধারণত গুগল পাসওয়ার্ড ম্যানেজারের মতো কোনো পাসওয়ার্ড ম্যানেজার বা একটি সিকিউরিটি কী হয়ে থাকে।

পাসকি তৈরি করার আগে, নিশ্চিত করুন যে সিস্টেমটি এই পূর্বশর্তগুলো পূরণ করে:
ব্যবহারকারীর অ্যাকাউন্টটি একটি নিরাপদ পদ্ধতির মাধ্যমে (যেমন, ইমেল, ফোন যাচাইকরণ, বা পরিচয় একত্রীকরণ) তুলনামূলকভাবে অল্প সময়ের মধ্যে যাচাই করা হয়।
ফ্রন্টএন্ড এবং ব্যাকএন্ড নিরাপদে যোগাযোগ করে পরিচয়পত্রের তথ্য আদান-প্রদান করতে পারে।
ব্রাউজারটি WebAuthn এবং পাসকি তৈরি করা সমর্থন করে।
পরবর্তী বিভাগগুলিতে আমরা আপনাকে দেখাতে পারি কীভাবে সেগুলির বেশিরভাগ পরীক্ষা করতে হয়।
সিস্টেমটি এই শর্তগুলো পূরণ করলে, একটি পাসকি তৈরি করার জন্য নিম্নলিখিত প্রক্রিয়াটি সম্পন্ন হয়:
- যখন ব্যবহারকারী কোনো পদক্ষেপ গ্রহণ করেন (উদাহরণস্বরূপ, তাদের পাসকি ব্যবস্থাপনা পৃষ্ঠায় 'একটি পাসকি তৈরি করুন' বোতামে ক্লিক করে অথবা তাদের নিবন্ধন সম্পন্ন করার পরে), তখন সিস্টেমটি পাসকি তৈরির প্রক্রিয়াটি চালু করে।
- ডুপ্লিকেট প্রতিরোধ করার জন্য ফ্রন্টএন্ড ব্যাকএন্ড থেকে ব্যবহারকারীর তথ্য, একটি চ্যালেঞ্জ এবং ক্রেডেনশিয়াল আইডি সহ প্রয়োজনীয় ক্রেডেনশিয়াল ডেটার অনুরোধ করে।
- ফ্রন্টএন্ড, ব্যাকএন্ড থেকে পাওয়া তথ্য ব্যবহার করে একটি পাসকি তৈরি করার জন্য ডিভাইসের পাসকি প্রোভাইডারকে নির্দেশ দিতে
navigator.credentials.create()ফাংশনটিকে কল করে। উল্লেখ্য যে, এই কলটি একটি প্রমিজ রিটার্ন করে। - পাসকি তৈরি করার জন্য ব্যবহারকারীর ডিভাইসটি বায়োমেট্রিক পদ্ধতি, পিন বা প্যাটার্ন ব্যবহার করে ব্যবহারকারীকে প্রমাণীকরণ করে।
- পাসকি প্রোভাইডার একটি পাসকি তৈরি করে এবং প্রমিসটি রিজলভ করার মাধ্যমে ফ্রন্টএন্ডে একটি পাবলিক কী ক্রেডেনশিয়াল ফেরত পাঠায়।
- ফ্রন্টএন্ড তৈরি করা পাবলিক কী ক্রেডেনশিয়ালটি ব্যাকএন্ডে পাঠিয়ে দেয়।
- ভবিষ্যৎ প্রমাণীকরণের জন্য ব্যাকএন্ড পাবলিক কী এবং অন্যান্য গুরুত্বপূর্ণ ডেটা সংরক্ষণ করে।
- পাসকি তৈরি নিশ্চিত করতে এবং সম্ভাব্য অননুমোদিত প্রবেশ শনাক্ত করতে ব্যাকএন্ড ব্যবহারকারীকে (উদাহরণস্বরূপ, ইমেলের মাধ্যমে) অবহিত করে।
এই প্রক্রিয়াটি ব্যবহারকারীদের জন্য একটি নিরাপদ ও নির্বিঘ্ন পাসকি নিবন্ধন প্রক্রিয়া নিশ্চিত করে।
সামঞ্জস্যতা
কিছু সামান্য সীমাবদ্ধতা ছাড়া বেশিরভাগ ব্রাউজারই WebAuthn সমর্থন করে। ব্রাউজার এবং অপারেটিং সিস্টেমের সামঞ্জস্যতার বিস্তারিত জানতে passkeys.dev দেখুন।
একটি নতুন পাসকি তৈরি করুন
একটি নতুন পাসকি তৈরি করতে, ফ্রন্টএন্ডকে এই প্রক্রিয়াটি অনুসরণ করতে হবে:
- সামঞ্জস্য যাচাই করুন।
- ব্যাকএন্ড থেকে তথ্য সংগ্রহ করুন।
- পাসকি তৈরি করতে WebAuth API-কে কল করুন।
- প্রাপ্ত পাবলিক কী-টি ব্যাকএন্ডে পাঠিয়ে দিন।
- পরিচয়পত্রটি সংরক্ষণ করুন।
পরবর্তী অংশগুলোতে দেখানো হয়েছে আপনি কীভাবে এটি করতে পারেন।
সামঞ্জস্যতা যাচাই করুন
'নতুন পাসকি তৈরি করুন' বাটনটি দেখানোর আগে, ফ্রন্টএন্ডকে যাচাই করতে হবে যে:
- ব্রাউজারটি
PublicKeyCredentialসহ WebAuthn সমর্থন করে।
- ব্রাউজারটি
PublicKeyCredential.getClientCapabilities()এর মাধ্যমে সক্ষমতা শনাক্তকরণ সমর্থন করে।
ব্রাউজারটি
conditionalGetএর মাধ্যমে WebAuthn কন্ডিশনাল UI সমর্থন করে।ডিভাইসটি
passkeyPlatformAuthenticatorমাধ্যমে একটি প্ল্যাটফর্ম অথেন্টিকেটর সমর্থন করে (এর মাধ্যমে একটি পাসকি তৈরি করা এবং ডিভাইসে প্রমাণীকরণ করা যায়)।
নিম্নলিখিত কোড স্নিপেটটি দেখায় যে, পাসকি-সম্পর্কিত অপশনগুলো প্রদর্শন করার আগে আপনি কীভাবে সামঞ্জস্যতা যাচাই করতে পারেন।
if (window.PublicKeyCredential && PublicKeyCredential.getClientCapabilities) {
const capabilities = await PublicKeyCredential.getClientCapabilities();
if (capabilities.conditionalGet === true &&
capabilities.passkeyPlatformAuthenticator === true) {
// The browser supports passkeys and the conditional UI.
}
}
এই উদাহরণে, 'নতুন পাসকি তৈরি করুন ' বাটনটি শুধুমাত্র তখনই প্রদর্শিত হওয়া উচিত যখন সমস্ত শর্ত পূরণ হবে।
ব্যাকএন্ড থেকে তথ্য সংগ্রহ করুন
যখন ব্যবহারকারী বোতামে ক্লিক করেন, তখন navigator.credentials.create() কল করার জন্য ব্যাকএন্ড থেকে প্রয়োজনীয় তথ্য সংগ্রহ করুন।
নিম্নলিখিত কোড স্নিপেটটি navigator.credentials.create() কল করার জন্য প্রয়োজনীয় তথ্যসহ একটি JSON অবজেক্ট দেখাচ্ছে:
// Example `PublicKeyCredentialCreationOptions` contents
{
challenge: *****,
rp: {
name: "Example",
id: "example.com",
},
user: {
id: *****,
name: "john78",
displayName: "John",
},
pubKeyCredParams: [{
alg: -7, type: "public-key"
},{
alg: -257, type: "public-key"
}],
excludeCredentials: [{
id: *****,
type: 'public-key',
transports: ['internal'],
}],
authenticatorSelection: {
authenticatorAttachment: "platform",
requireResidentKey: true,
}
}
অবজেক্টের কী-ভ্যালু পেয়ারগুলোতে নিম্নলিখিত তথ্যগুলো থাকে:
-
challenge: এই নিবন্ধনের জন্য ArrayBuffer-এ সার্ভার দ্বারা তৈরি একটি চ্যালেঞ্জ। -
rp.id: একটি আরপি আইডি (রিলায়িং পার্টি আইডি) , একটি ডোমেইন এবং একটি ওয়েবসাইট তার নিজস্ব ডোমেইন অথবা একটি রেজিস্টারযোগ্য সাফিক্স নির্দিষ্ট করতে পারে। উদাহরণস্বরূপ, যদি একটি আরপি-এর অরিজিনhttps://login.example.com:1337হয়, তাহলে আরপি আইডিটিlogin.example.comঅথবাexample.comহতে পারে। যদি আরপি আইডিexample.comহিসেবে নির্দিষ্ট করা হয়, তাহলে ব্যবহারকারীlogin.example.comএ অথবাexample.comএর যেকোনো সাবডোমেইনে অথেন্টিকেট করতে পারবেন। এই বিষয়ে আরও তথ্যের জন্য, ‘রিলেটেড অরিজিন রিকোয়েস্টের মাধ্যমে আপনার সাইটগুলোতে পাসকি পুনঃব্যবহারের অনুমতি দিন’ দেখুন। -
rp.name: আরপি-র (রিলায়িং পার্টি) নাম। WebAuthn L3-তে এটি অপ্রচলিত হলেও সামঞ্জস্যতার কারণে অন্তর্ভুক্ত করা হয়েছে। -
user.id: ArrayBuffer-এ থাকা একটি অনন্য ইউজার আইডি, যা অ্যাকাউন্ট তৈরির সময় তৈরি হয়। এটি স্থায়ী হওয়া উচিত, ইউজারনেমের মতো নয় যা পরিবর্তনযোগ্য হতে পারে। ইউজার আইডি একটি অ্যাকাউন্টকে শনাক্ত করে, কিন্তু এতে কোনো ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য (PII) থাকা উচিত নয় । আপনার সিস্টেমে সম্ভবত ইতিমধ্যেই একটি ইউজার আইডি আছে, কিন্তু প্রয়োজনে, পাসকিগুলোর জন্য বিশেষভাবে একটি তৈরি করুন যাতে এটি যেকোনো PII থেকে মুক্ত থাকে। -
user.name: অ্যাকাউন্টের একটি অনন্য শনাক্তকারী যা ব্যবহারকারী চিনতে পারবেন, যেমন তার ইমেল ঠিকানা বা ইউজারনেম। এটি অ্যাকাউন্ট সিলেক্টরে প্রদর্শিত হবে। -
user.displayName: অ্যাকাউন্টের জন্য একটি আবশ্যক ও ব্যবহার-বান্ধব নাম। এটি অনন্য হওয়ার প্রয়োজন নেই এবং এটি ব্যবহারকারীর পছন্দের নামও হতে পারে। যদি আপনার সাইটে এখানে অন্তর্ভুক্ত করার মতো কোনো উপযুক্ত মান না থাকে, তবে একটি খালি স্ট্রিং দিন। ব্রাউজারের উপর নির্ভর করে এটি অ্যাকাউন্ট সিলেক্টরে প্রদর্শিত হতে পারে। -
pubKeyCredParams: RP (রিলায়িং পার্টি) সমর্থিত পাবলিক-কী অ্যালগরিদমগুলো নির্দিষ্ট করে। আমরা এটিকে[{alg: -7, type: "public-key"},{alg: -257, type: "public-key"}]-এ সেট করার পরামর্শ দিই। এটি P-256 সহ ECDSA এবং RSA PKCS#1-এর জন্য সমর্থন নির্দিষ্ট করে এবং এগুলিকে সমর্থন করলে সম্পূর্ণ কভারেজ পাওয়া যায়। -
excludeCredentials: ইতিমধ্যে নিবন্ধিত ক্রেডেনশিয়াল আইডিগুলির একটি তালিকা। ইতিমধ্যে নিবন্ধিত ক্রেডেনশিয়াল আইডিগুলির একটি তালিকা প্রদান করে একই ডিভাইসকে দুবার নিবন্ধন করা থেকে বিরত রাখে ।transportsমেম্বারটি, যদি প্রদান করা হয়, তবে এতে প্রতিটি ক্রেডেনশিয়াল নিবন্ধনের সময়getTransports()কল করার ফলাফল থাকা উচিত। -
authenticatorSelection.authenticatorAttachment: যদি এই পাসকি তৈরি করাটি পাসওয়ার্ড থেকে একটি আপগ্রেড হয়, উদাহরণস্বরূপ সাইন-ইন করার পরে কোনো প্রচারণার অংশ হিসেবে, তাহলে এটিকে"platform"-এ সেট করুন এবং সাথেhint: ['client-device']যোগ করুন।"platform"নির্দেশ করে যে RP একটি প্ল্যাটফর্ম অথেন্টিকেটর (প্ল্যাটফর্ম ডিভাইসে এমবেড করা একটি অথেন্টিকেটর) চান, যা উদাহরণস্বরূপ, একটি USB সিকিউরিটি কী ঢোকাতে বলবে না। ব্যবহারকারীর কাছে একটি পাসকি তৈরি করার জন্য আরও সহজ একটি বিকল্প রয়েছে। -
authenticatorSelection.requireResidentKey: এটিকে একটি বুলিয়ানtrueতে সেট করুন। একটি আবিষ্কারযোগ্য ক্রেডেনশিয়াল (রেসিডেন্ট কী) পাসকী-তে ব্যবহারকারীর তথ্য সংরক্ষণ করে এবং প্রমাণীকরণের সময় ব্যবহারকারীদের অ্যাকাউন্ট নির্বাচন করতে দেয়। authenticatorSelection.userVerification: ডিভাইস স্ক্রিন লক ব্যবহার করে ব্যবহারকারী যাচাইকরণ"required","preferred"নাকি"discouraged"তা নির্দেশ করে। ডিফল্ট হলো"preferred", যার অর্থ অথেন্টিকেটর ব্যবহারকারী যাচাইকরণ এড়িয়ে যেতে পারে। এটিকে"preferred"-এ সেট করুন অথবা প্রপার্টিটি বাদ দিন।
আমরা সার্ভারে অবজেক্টটি তৈরি করার, Base64URL দিয়ে ArrayBuffer-কে এনকোড করার এবং ফ্রন্টএন্ড থেকে তা ফেচ করার পরামর্শ দিই। এইভাবে, আপনি PublicKeyCredential.parseCreationOptionsFromJSON() ব্যবহার করে পেলোডটি ডিকোড করতে পারবেন এবং সরাসরি navigator.credentials.create() -এ পাস করতে পারবেন।
নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে আপনি পাসকি তৈরি করার জন্য প্রয়োজনীয় তথ্য সংগ্রহ এবং ডিকোড করতে পারেন।
// Fetch an encoded `PubicKeyCredentialCreationOptions` from the server.
const _options = await fetch('/webauthn/registerRequest');
// Deserialize and decode the `PublicKeyCredentialCreationOptions`.
const decoded_options = JSON.parse(_options);
const options = PublicKeyCredential.parseCreationOptionsFromJSON(decoded_options);
...
পাসকি তৈরি করতে WebAuthn API-কে কল করুন
একটি নতুন পাসকি তৈরি করতে navigator.credentials.create() কল করুন। এপিআইটি একটি প্রমিজ রিটার্ন করে, যা একটি মোডাল ডায়ালগ প্রদর্শনের জন্য ব্যবহারকারীর ইন্টারঅ্যাকশনের অপেক্ষায় থাকে।
// Invoke WebAuthn to create a passkey.
const credential = await navigator.credentials.create({
publicKey: options
});
ফেরত আসা পাবলিক কী ক্রেডেনশিয়ালটি ব্যাকএন্ডে পাঠান।
ডিভাইসের স্ক্রিন লক ব্যবহার করে ব্যবহারকারীকে যাচাই করার পর, একটি পাসকি তৈরি করা হয় এবং প্রমিসটি রিজলভ হয়ে ফ্রন্টএন্ডে একটি PublicKeyCredential অবজেক্ট ফেরত পাঠায়।
বিভিন্ন কারণে প্রমিসটি প্রত্যাখ্যাত হতে পারে। আপনি Error অবজেক্টের name প্রপার্টিটি পরীক্ষা করে এই ত্রুটিগুলো সামলাতে পারেন:
-
InvalidStateError: ডিভাইসে ইতিমধ্যে একটি পাসকি বিদ্যমান। ব্যবহারকারীকে কোনো ত্রুটির ডায়ালগ দেখানো হবে না। সাইটটির এটিকে ত্রুটি হিসেবে গণ্য করা উচিত নয়। ব্যবহারকারী স্থানীয় ডিভাইসটি নিবন্ধিত চেয়েছিলেন এবং সেটি নিবন্ধিত আছে। -
NotAllowedError: ব্যবহারকারী অপারেশনটি বাতিল করেছেন। -
AbortError: অপারেশনটি বাতিল করা হয়েছে। - অন্যান্য ব্যতিক্রম : অপ্রত্যাশিত কিছু ঘটেছে। ব্রাউজারটি ব্যবহারকারীকে একটি ত্রুটির ডায়ালগ বক্স দেখায়।
পাবলিক কী ক্রেডেনশিয়াল অবজেক্টটিতে নিম্নলিখিত প্রোপার্টিগুলো রয়েছে:
-
id: তৈরি করা পাসকি-র একটি Base64URL এনকোডেড আইডি। প্রমাণীকরণের সময় ডিভাইসে একটি মিলে যাওয়া পাসকি আছে কিনা, তা নির্ধারণ করতে এই আইডি ব্রাউজারকে সাহায্য করে। এই মানটি অবশ্যই ব্যাকএন্ডের ডেটাবেসে সংরক্ষণ করতে হবে। -
rawId: ক্রেডেনশিয়াল আইডি-র একটি ArrayBuffer সংস্করণ। -
response.clientDataJSON: একটি ArrayBuffer এনকোডেড ক্লায়েন্ট ডেটা। -
response.attestationObject: একটি ArrayBuffer এনকোডেড অ্যাটেস্টেশন অবজেক্ট। এতে RP ID, ফ্ল্যাগ এবং পাবলিক কী-এর মতো গুরুত্বপূর্ণ তথ্য থাকে। -
authenticatorAttachment: যখন এই ক্রেডেনশিয়ালটি কোনো পাস-কী সক্ষম ডিভাইসে তৈরি করা হয়, তখন এটি"platform"রিটার্ন করে। -
type: এই ফিল্ডটি সর্বদা"public-key"হিসেবে সেট করা থাকে।
.toJSON() মেথড দিয়ে অবজেক্টটি এনকোড করুন, JSON.stringify() দিয়ে সিরিয়ালাইজ করুন এবং তারপর সার্ভারে পাঠান।
...
// Encode and serialize the `PublicKeyCredential`.
const _result = credential.toJSON();
const result = JSON.stringify(_result);
// Encode and send the credential to the server for verification.
const response = await fetch('/webauthn/registerResponse', {
method: 'post',
credentials: 'same-origin',
body: result
});
...
পরিচয়পত্রটি সংরক্ষণ করুন
ব্যাকএন্ডে পাবলিক কী ক্রেডেনশিয়াল পাওয়ার পর, পাবলিক-কী ক্রেডেনশিয়াল প্রসেস করার জন্য নিজের কোড লেখার পরিবর্তে আমরা একটি সার্ভার-সাইড লাইব্রেরি বা সলিউশন ব্যবহার করার পরামর্শ দিই ।
এরপর আপনি ভবিষ্যৎ ব্যবহারের জন্য ক্রেডেনশিয়াল থেকে প্রাপ্ত তথ্য ডেটাবেসে সংরক্ষণ করতে পারেন।
সংরক্ষণের জন্য প্রস্তাবিত বৈশিষ্ট্যগুলো নিম্নলিখিত তালিকায় অন্তর্ভুক্ত করা হয়েছে:
- ক্রেডেনশিয়াল আইডি : পাবলিক কী ক্রেডেনশিয়ালের সাথে প্রাপ্ত ক্রেডেনশিয়াল আইডি।
- ক্রেডেনশিয়ালের নাম : ক্রেডেনশিয়ালটির নাম। যে পাসকি প্রোভাইডার এটি তৈরি করেছে, তার নামানুসারে এর নামকরণ করুন, যাকে AAGUID-এর মাধ্যমে শনাক্ত করা যায় ।
- ইউজার আইডি : পাসকি তৈরি করতে ব্যবহৃত ইউজার আইডি।
- পাবলিক কী : পাবলিক কী ক্রেডেনশিয়ালের সাথে প্রাপ্ত পাবলিক কী। একটি পাসকী অ্যাসারশন যাচাই করার জন্য এটি প্রয়োজন।
- তৈরির তারিখ ও সময় : পাসকি তৈরির তারিখ ও সময় লিখে রাখুন। এটি পাসকি শনাক্ত করতে সহায়ক।
- সর্বশেষ ব্যবহারের তারিখ ও সময় : ব্যবহারকারী সর্বশেষ কখন পাসকি ব্যবহার করে সাইন ইন করেছেন, তার তারিখ ও সময় রেকর্ড করে। ব্যবহারকারী কোন পাসকি ব্যবহার করেছেন (বা করেননি) তা নির্ধারণ করতে এটি সহায়ক।
- AAGUID : পাসকি প্রদানকারীর একটি অনন্য শনাক্তকারী।
- ব্যাকআপ যোগ্যতা ফ্ল্যাগ : ডিভাইসটি পাসকি সিঙ্ক্রোনাইজেশনের জন্য যোগ্য হলে 'true'। এই তথ্যটি ব্যবহারকারীদের পাসকি ম্যানেজমেন্ট পেজে সিঙ্কযোগ্য পাসকি এবং ডিভাইস-বাউন্ড (সিঙ্কযোগ্য নয়) পাসকি শনাক্ত করতে সাহায্য করে।
সার্ভার-সাইড পাসকি রেজিস্ট্রেশন- এ আরও বিস্তারিত নির্দেশাবলী অনুসরণ করুন।
নিবন্ধন ব্যর্থ হলে সংকেত দিন।
পাসকি রেজিস্ট্রেশন ব্যর্থ হলে, তা ব্যবহারকারীর জন্য বিভ্রান্তির কারণ হতে পারে। যদি পাসকি প্রোভাইডারে একটি পাসকি থাকে এবং তা ব্যবহারকারীর জন্য উপলব্ধ থাকে, কিন্তু এর সাথে যুক্ত পাবলিক কী সার্ভার সাইডে সংরক্ষিত না থাকে, তাহলে পাসকি ব্যবহার করে সাইন-ইন করার প্রচেষ্টা কখনোই সফল হবে না এবং এর সমস্যা সমাধান করা কঠিন হয়ে পড়ে। এমনটা হলে ব্যবহারকারীকে অবশ্যই জানিয়ে দিন।
এই ধরনের পরিস্থিতি এড়াতে, আপনি সিগন্যাল এপিআই (Signal API) ব্যবহার করে পাসকি প্রোভাইডারকে একটি অজানা পাসকি সম্পর্কে সংকেত দিতে পারেন। একটি আরপি আইডি (RP ID) এবং একটি ক্রেডেনশিয়াল আইডি (credential ID) সহ PublicKeyCredential.signalUnknownCredential() কল করার মাধ্যমে, আরপি পাসকি প্রোভাইডারকে জানাতে পারে যে নির্দিষ্ট ক্রেডেনশিয়ালটি সরিয়ে ফেলা হয়েছে বা এর অস্তিত্ব নেই। এই সংকেতটির সাথে কীভাবে মোকাবিলা করা হবে তা পাসকি প্রোভাইডারের উপর নির্ভর করে, তবে যদি এটি সমর্থিত হয়, তবে সংশ্লিষ্ট পাসকিটি সরিয়ে ফেলা হবে বলে আশা করা হয়।
// Detect authentication failure due to lack of the credential
if (response.status === 404) {
// Feature detection
if (PublicKeyCredential.signalUnknownCredential) {
await PublicKeyCredential.signalUnknownCredential({
rpId: "example.com",
credentialId: "vI0qOggiE3OT01ZRWBYz5l4MEgU0c7PmAA" // base64url encoded credential ID
});
} else {
// Encourage the user to delete the passkey from the password manager nevertheless.
...
}
}
Signal API সম্পর্কে আরও জানতে, “Signal API ব্যবহার করে আপনার সার্ভারে ক্রেডেনশিয়ালের সাথে পাসকি সামঞ্জস্যপূর্ণ রাখুন” পড়ুন।
ব্যবহারকারীকে একটি বিজ্ঞপ্তি পাঠান
পাসকি নিবন্ধিত হলে একটি বিজ্ঞপ্তি (যেমন ইমেল) পাঠানো হলে তা ব্যবহারকারীদের অননুমোদিত অ্যাকাউন্ট অ্যাক্সেস শনাক্ত করতে সাহায্য করে। যদি কোনো আক্রমণকারী ব্যবহারকারীর অজান্তেই একটি পাসকি তৈরি করে, তবে পাসওয়ার্ড পরিবর্তন করার পরেও সেই পাসকিটি ভবিষ্যতে অপব্যবহারের জন্য উপলব্ধ থাকে। এই বিজ্ঞপ্তিটি ব্যবহারকারীকে সতর্ক করে এবং এটি প্রতিরোধ করতে সাহায্য করে।
চেকলিস্ট
- ব্যবহারকারীকে পাসকি তৈরি করার অনুমতি দেওয়ার আগে তাকে যাচাই করুন (বিশেষত ইমেল বা কোনো সুরক্ষিত পদ্ধতির মাধ্যমে)।
-
excludeCredentialsব্যবহার করে একই পাসকি প্রোভাইডারের জন্য ডুপ্লিকেট পাসকি তৈরি হওয়া প্রতিরোধ করুন। - পাসকি প্রদানকারীকে শনাক্ত করতে এবং ব্যবহারকারীর ক্রেডেনশিয়ালের নামকরণ করতে AAGUID সংরক্ষণ করুন।
-
PublicKeyCredential.signalUnknownCredential()ব্যবহার করে পাসকি নিবন্ধনের প্রচেষ্টা ব্যর্থ হলে সংকেত দিন। - ব্যবহারকারীর অ্যাকাউন্টের জন্য পাসকি তৈরি ও নিবন্ধন করার পর তাকে একটি বিজ্ঞপ্তি পাঠান।
সম্পদ
- সার্ভার-সাইড পাসকি নিবন্ধন
- অ্যাপল ডকুমেন্ট: ওয়েব সার্ভিসের মাধ্যমে একজন ব্যবহারকারীকে প্রমাণীকরণ
- গুগল ডকুমেন্ট: পাসকি ব্যবহার করে পাসওয়ার্ডবিহীন লগইন
পরবর্তী ধাপ: ফর্মটি স্বয়ংক্রিয়ভাবে পূরণ হওয়ার মাধ্যমে একটি পাসকি দিয়ে সাইন ইন করুন ।