পাসকিগুলি ব্যবহারকারীর অ্যাকাউন্টগুলিকে নিরাপদ, সরল, ব্যবহার করা সহজ করে তোলে।
পাসকি ব্যবহার নিরাপত্তা বাড়ায়, লগইন সহজ করে এবং পাসওয়ার্ড প্রতিস্থাপন করে। নিয়মিত পাসওয়ার্ডের বিপরীতে, যা ব্যবহারকারীদের অবশ্যই মনে রাখতে হবে এবং ম্যানুয়ালি লিখতে হবে, পাসকিগুলি ডিভাইসের স্ক্রিন লক প্রক্রিয়া যেমন বায়োমেট্রিক্স বা পিন ব্যবহার করে এবং ফিশিং ঝুঁকি এবং শংসাপত্র চুরি কমায়৷
Google Password Manager এবং iCloud Keychain-এর মতো পাসকি প্রদানকারী ব্যবহার করে পাসকিগুলি ডিভাইস জুড়ে সিঙ্ক হয়।
একটি পাসকি তৈরি করতে হবে, পাসকি প্রদানকারীর কাছে প্রাইভেট কী নিরাপদে সংরক্ষণ করে প্রয়োজনীয় মেটাডেটা এবং তার সার্ভারে প্রমাণীকরণের জন্য সঞ্চিত সর্বজনীন কী। পাসকিগুলিকে ফিশিং প্রতিরোধী তৈরি করে বৈধ ডোমেনে ব্যবহারকারী যাচাই করার পরে ব্যক্তিগত কী একটি স্বাক্ষর জারি করে৷ পাবলিক কী সংবেদনশীল শংসাপত্র সংরক্ষণ না করে স্বাক্ষর যাচাই করে, পাসকিগুলিকে শংসাপত্র চুরি প্রতিরোধী করে তোলে।
কিভাবে একটি পাসকি তৈরি কাজ করে
কোনও ব্যবহারকারী পাসকি দিয়ে সাইন ইন করার আগে, আপনার পাসকি তৈরি করা উচিত, এটি একটি ব্যবহারকারীর অ্যাকাউন্টের সাথে সংযুক্ত করা উচিত এবং আপনার সার্ভারে এর সর্বজনীন কী সংরক্ষণ করা উচিত।
আপনি নিম্নলিখিত পরিস্থিতিতে একটি পাসকি তৈরি করতে ব্যবহারকারীদের বলতে পারেন:
- সাইন আপ করার সময় বা পরে।
- সাইন ইন করার পর।
- অন্য ডিভাইস থেকে একটি পাসকি ব্যবহার করে সাইন ইন করার পর (অর্থাৎ,
[authenticatorAttachment](https://web.dev/articles/passkey-form-autofill#authenticator-attachment)
হলcross-platform
)। - একটি উত্সর্গীকৃত পৃষ্ঠায় যেখানে ব্যবহারকারীরা তাদের পাসকিগুলি পরিচালনা করতে পারে৷
একটি পাসকি তৈরি করতে, আপনি WebAuthn API ব্যবহার করেন।
পাসকি নিবন্ধন প্রবাহের চারটি উপাদান হল:
- ব্যাকএন্ড : পাবলিক কী সহ ব্যবহারকারীর অ্যাকাউন্টের বিবরণ সঞ্চয় করে।
- ফ্রন্টএন্ড : ব্রাউজারের সাথে যোগাযোগ করে এবং ব্যাকএন্ড থেকে প্রয়োজনীয় ডেটা আনে।
- ব্রাউজার : আপনার জাভাস্ক্রিপ্ট চালায় এবং WebAuthn API এর সাথে ইন্টারঅ্যাক্ট করে।
- পাসকি প্রদানকারী : পাসকি তৈরি করে এবং সংরক্ষণ করে। এটি সাধারণত একটি পাসওয়ার্ড ম্যানেজার যেমন Google পাসওয়ার্ড ম্যানেজার বা একটি নিরাপত্তা কী।

একটি পাসকি তৈরি করার আগে, নিশ্চিত করুন যে সিস্টেমটি এই পূর্বশর্তগুলি পূরণ করে:
ব্যবহারকারীর অ্যাকাউন্টটি একটি নিরাপদ পদ্ধতির মাধ্যমে যাচাই করা হয় (উদাহরণস্বরূপ, ইমেল, ফোন যাচাইকরণ, বা পরিচয় ফেডারেশন) একটি অর্থপূর্ণ সংক্ষিপ্ত উইন্ডোর মধ্যে।
ফ্রন্টএন্ড এবং ব্যাকএন্ড শংসাপত্রের ডেটা বিনিময় করতে নিরাপদে যোগাযোগ করতে পারে।
ব্রাউজার WebAuthn এবং পাসকি তৈরি সমর্থন করে।
আমরা নিম্নলিখিত বিভাগে তাদের অধিকাংশ পরীক্ষা কিভাবে আপনি দেখাতে পারেন.
একবার সিস্টেমটি এই শর্তগুলি পূরণ করলে, একটি পাসকি তৈরি করতে নিম্নলিখিত প্রক্রিয়াটি ঘটে:
- ব্যবহারকারী যখন ক্রিয়া শুরু করেন তখন সিস্টেমটি পাসকি তৈরির প্রক্রিয়াটিকে ট্রিগার করে (উদাহরণস্বরূপ, তাদের পাসকি পরিচালনা পৃষ্ঠায় বা তাদের নিবন্ধন শেষ করার পরে একটি "একটি পাসকি তৈরি করুন" বোতামে ক্লিক করা)।
- ফ্রন্টএন্ড ব্যাকএন্ড থেকে প্রয়োজনীয় শংসাপত্রের ডেটার অনুরোধ করে, যার মধ্যে ব্যবহারকারীর তথ্য, একটি চ্যালেঞ্জ, এবং ডুপ্লিকেট প্রতিরোধের জন্য শংসাপত্র আইডি রয়েছে।
- ব্যাকএন্ড থেকে তথ্য ব্যবহার করে একটি পাসকি তৈরি করতে ডিভাইসের পাসকি প্রদানকারীকে অনুরোধ করতে ফ্রন্টএন্ড
navigator.credentials.create()
কল করে। মনে রাখবেন যে এই কলটি একটি প্রতিশ্রুতি প্রদান করে। - ব্যবহারকারীর ডিভাইস পাসকি তৈরি করতে বায়োমেট্রিক পদ্ধতি, পিন বা প্যাটার্ন ব্যবহার করে ব্যবহারকারীকে প্রমাণীকরণ করে।
- পাসকি প্রদানকারী একটি পাসকি তৈরি করে এবং প্রতিশ্রুতি সমাধান করে ফ্রন্টএন্ডে একটি পাবলিক কী শংসাপত্র ফেরত দেয়।
- ফ্রন্টএন্ড তৈরি করা পাবলিক কী শংসাপত্রটি ব্যাকএন্ডে পাঠায়।
- ব্যাকএন্ড ভবিষ্যতের প্রমাণীকরণের জন্য সর্বজনীন কী এবং অন্যান্য গুরুত্বপূর্ণ ডেটা সঞ্চয় করে,
- ব্যাকএন্ড ব্যবহারকারীকে (উদাহরণস্বরূপ, ইমেল ব্যবহার করে) পাসকি তৈরি নিশ্চিত করতে এবং সম্ভাব্য অননুমোদিত অ্যাক্সেস সনাক্ত করতে সূচিত করে।
এই প্রক্রিয়া ব্যবহারকারীদের জন্য একটি নিরাপদ এবং নিরবচ্ছিন্ন পাসকি নিবন্ধন প্রক্রিয়া নিশ্চিত করে।
সামঞ্জস্য
বেশিরভাগ ব্রাউজার কিছু ছোটখাটো ফাঁক সহ WebAuthn সমর্থন করে। ব্রাউজার এবং ওএস সামঞ্জস্যের বিবরণের জন্য passkeys.dev দেখুন।
একটি নতুন পাসকি তৈরি করুন
একটি নতুন পাসকি তৈরি করতে, এই প্রক্রিয়াটি ফ্রন্টএন্ডের অনুসরণ করা উচিত:
- সামঞ্জস্যের জন্য পরীক্ষা করুন।
- ব্যাকএন্ড থেকে তথ্য আনুন.
- একটি পাসকি তৈরি করতে WebAuth API কল করুন।
- ফিরে আসা সর্বজনীন কী ব্যাকএন্ডে পাঠান।
- শংসাপত্র সংরক্ষণ করুন.
নিম্নলিখিত বিভাগগুলি দেখায় যে আপনি কীভাবে এটি করতে পারেন।
সামঞ্জস্যের জন্য পরীক্ষা করুন
"একটি নতুন পাসকি তৈরি করুন" বোতাম প্রদর্শন করার আগে, ফ্রন্টএন্ডটি পরীক্ষা করা উচিত যদি:
- ব্রাউজারটি
PublicKeyCredential
সাথে WebAuthn সমর্থন করে।
- ডিভাইসটি
PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
এর সাথে একটি প্ল্যাটফর্ম প্রমাণীকরণকারীকে সমর্থন করে (একটি পাসকি তৈরি করতে এবং পাসকি দিয়ে প্রমাণীকরণ করতে পারে)।
- ব্রাউজারটি
PublicKeyCredenital.isConditionalMediationAvailable()
সহ WebAuthn শর্তসাপেক্ষ UI সমর্থন করে।
নিম্নলিখিত কোড স্নিপেট দেখায় কিভাবে আপনি পাসকি-সম্পর্কিত বিকল্পগুলি প্রদর্শন করার আগে সামঞ্জস্যতা পরীক্ষা করতে পারেন।
// Availability of `window.PublicKeyCredential` means WebAuthn is usable.
// `isUserVerifyingPlatformAuthenticatorAvailable` means the feature detection is usable.
// `isConditionalMediationAvailable` means the feature detection is usable.
if (window.PublicKeyCredential &&
PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable &&
PublicKeyCredential.isConditionalMediationAvailable) {
// Check if user verifying platform authenticator is available.
Promise.all([
PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable(),
PublicKeyCredential.isConditionalMediationAvailable(),
]).then(results => {
if (results.every(r => r === true)) {
// Display "Create a new passkey" button
}
});
}
এই উদাহরণে, সমস্ত শর্ত পূরণ হলেই একটি নতুন পাসকি তৈরি করুন বোতামটি প্রদর্শিত হবে।
ব্যাকএন্ড থেকে তথ্য আনুন
ব্যবহারকারী যখন বোতামটি ক্লিক করেন, 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
: একটি RP আইডি (নির্ভর পার্টি আইডি), একটি ডোমেন এবং একটি ওয়েবসাইট তার ডোমেন বা একটি নিবন্ধনযোগ্য প্রত্যয় নির্দিষ্ট করতে পারে। উদাহরণস্বরূপ, যদি একটি RP-এর উৎপত্তি হয়https://login.example.com:1337
, তাহলে RP ID হয়login.example.com
বাexample.com
হতে পারে। যদি RP আইডিexample.com
হিসাবে নির্দিষ্ট করা হয়, ব্যবহারকারীlogin.example.com
বাexample.com
এর যেকোনো সাবডোমেনে প্রমাণীকরণ করতে পারেন। দেখুন, এই বিষয়ে আরও তথ্যের জন্য রিলেটেড অরিজিন রিকোয়েস্ট সহ আপনার সাইট জুড়ে পাসকি পুনরায় ব্যবহারের অনুমতি দিন । -
rp.name
: RP এর (নির্ভর পার্টি) নাম। 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 এবং RSA PKCS#1 এর সাথে ECDSA-এর জন্য সমর্থন নির্দিষ্ট করে এবং এগুলোকে সমর্থন করা সম্পূর্ণ কভারেজ দেয়। -
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()
এ কল করুন। API একটি প্রতিশ্রুতি প্রদান করে, ব্যবহারকারীর মিথস্ক্রিয়া একটি মডেল ডায়ালগ প্রদর্শনের জন্য অপেক্ষা করে।
// 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 : পাসকি প্রদানকারীর একটি অনন্য শনাক্তকারী।
- ব্যাকআপ যোগ্যতা পতাকা : ডিভাইসটি পাসকি সিঙ্ক্রোনাইজেশনের জন্য যোগ্য হলে সত্য। এই তথ্য ব্যবহারকারীদের পাসকি পরিচালনা পৃষ্ঠায় সিঙ্কযোগ্য পাসকি এবং ডিভাইস-বাউন্ড (সিঙ্কযোগ্য নয়) পাসকিগুলি সনাক্ত করতে সহায়তা করে৷
সার্ভার-সাইড পাসকি রেজিস্ট্রেশনে আরও বিস্তারিত নির্দেশাবলী অনুসরণ করুন
নিবন্ধন ব্যর্থ হলে সংকেত
যদি একটি পাসকি নিবন্ধন ব্যর্থ হয়, এটি ব্যবহারকারীর কাছে বিভ্রান্তির কারণ হতে পারে। যদি পাসকি প্রদানকারীতে একটি পাসকি থাকে এবং ব্যবহারকারীর জন্য উপলব্ধ থাকে, কিন্তু সংশ্লিষ্ট সর্বজনীন কীটি সার্ভারের পাশে সংরক্ষণ করা না থাকে, তাহলে পাসকি ব্যবহার করে সাইন-ইন করার প্রচেষ্টা কখনই সফল হবে না এবং এটির সমস্যা সমাধান করা কঠিন। ব্যবহারকারীকে জানাতে ভুলবেন না যদি এটি হয়।
এই ধরনের অবস্থা প্রতিরোধ করতে, আপনি সিগন্যাল API ব্যবহার করে পাসকি প্রদানকারীকে একটি অজানা পাসকি সংকেত দিতে পারেন। PublicKeyCredential.signalUnknownCredential()
একটি RP আইডি এবং একটি শংসাপত্র আইডি সহ কল করে, RP পাসকি প্রদানকারীকে জানাতে পারে যে নির্দিষ্ট শংসাপত্রটি সরানো হয়েছে বা বিদ্যমান নেই৷ এই সংকেতটি কীভাবে মোকাবেলা করবেন তা পাসকি প্রদানকারীর উপর নির্ভর করে, কিন্তু যদি সমর্থিত হয়, তাহলে সংশ্লিষ্ট পাসকিটি সরানো হবে বলে আশা করা হচ্ছে।
// 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.
...
}
}
সিগন্যাল এপিআই সম্পর্কে আরও জানতে, সিগন্যাল এপিআই এর সাথে আপনার সার্ভারে ক্রেডেনশিয়ালের সাথে সামঞ্জস্যপূর্ণ পাসকিগুলিকে পড়ুন।
ব্যবহারকারীকে একটি বিজ্ঞপ্তি পাঠান
একটি পাসকি নিবন্ধিত হলে একটি বিজ্ঞপ্তি (যেমন একটি ইমেল) পাঠানো ব্যবহারকারীদের অননুমোদিত অ্যাকাউন্ট অ্যাক্সেস সনাক্ত করতে সহায়তা করে। যদি একজন আক্রমণকারী ব্যবহারকারীর অজান্তেই একটি পাসকি তৈরি করে, পাসকিটি ভবিষ্যতে অপব্যবহারের জন্য উপলব্ধ থাকে, এমনকি পাসওয়ার্ড পরিবর্তন করার পরেও। বিজ্ঞপ্তি ব্যবহারকারীকে সতর্ক করে এবং এটি প্রতিরোধ করতে সহায়তা করে।
চেকলিস্ট
- একটি পাসকি তৈরি করার অনুমতি দেওয়ার আগে ব্যবহারকারীকে যাচাই করুন (ইমেল বা নিরাপদ পদ্ধতি ব্যবহার করে)।
-
excludeCredentials
ব্যবহার করে একই পাসকি প্রদানকারীর জন্য ডুপ্লিকেট পাসকি তৈরি করা প্রতিরোধ করুন। - পাসকি প্রদানকারীকে সনাক্ত করতে এবং ব্যবহারকারীর জন্য শংসাপত্রের নাম দিতে AAGUID সংরক্ষণ করুন৷
-
PublicKeyCredential.signalUnknownCredential()
দিয়ে পাসকি রেজিস্টার করার চেষ্টা ব্যর্থ হলে সংকেত। - তাদের অ্যাকাউন্টের জন্য একটি পাসকি তৈরি এবং নিবন্ধন করার পরে ব্যবহারকারীকে একটি বিজ্ঞপ্তি পাঠান।
সম্পদ
- সার্ভার-সাইড পাসকি নিবন্ধন
- অ্যাপল নথি: একটি ওয়েব পরিষেবার মাধ্যমে ব্যবহারকারীর প্রমাণীকরণ
- গুগল ডকুমেন্ট: পাসওয়ার্ডবিহীন লগইন পাসকি দিয়ে
পরবর্তী ধাপ: ফর্ম অটোফিলের মাধ্যমে একটি পাসকি দিয়ে সাইন ইন করুন ।