এই ডকুমেন্টটি WebAuthn-এ userVerification
কী এবং পাসকি তৈরি বা প্রমাণীকরণের সময় userVerification
নির্দিষ্ট করার সময় ব্রাউজারের আচরণগুলি নিয়ে আলোচনা করে।
WebAuthn-এ "ব্যবহারকারী যাচাইকরণ" কী?
পাসকিগুলি পাবলিক কী ক্রিপ্টোগ্রাফির উপর ভিত্তি করে তৈরি। একটি পাসকি তৈরি করে, একটি পাবলিক-প্রাইভেট কী জোড়া তৈরি করা হয়, পাসকি প্রদানকারী প্রাইভেট কী সংরক্ষণ করে এবং পাবলিক কীটি নির্ভরশীল পক্ষের (RP) সার্ভারে সংরক্ষণের জন্য ফেরত পাঠানো হয়। সার্ভারটি জোড়াযুক্ত পাবলিক কী ব্যবহার করে একই পাসকি দ্বারা স্বাক্ষরিত একটি স্বাক্ষর যাচাই করে একজন ব্যবহারকারীকে প্রমাণীকরণ করতে পারে। একটি পাবলিক কী শংসাপত্রের "ব্যবহারকারী উপস্থিত" (UP) পতাকা প্রমাণ করে যে প্রমাণীকরণের সময় কেউ ডিভাইসের সাথে ইন্টারঅ্যাক্ট করেছে।
ব্যবহারকারী যাচাইকরণ হল নিরাপত্তার একটি ঐচ্ছিক স্তর যা নিশ্চিত করে যে প্রমাণীকরণের সময় সঠিক ব্যক্তি উপস্থিত ছিলেন, কেবল কোনও ব্যক্তি নয়, যেমন ব্যবহারকারীর উপস্থিতি দাবি করে। স্মার্টফোনে, এটি সাধারণত স্ক্রিন-লক প্রক্রিয়া ব্যবহার করে করা হয়, তা বায়োমেট্রিক হোক বা পিন বা পাসওয়ার্ড। ব্যবহারকারী যাচাইকরণ সম্পন্ন হয়েছে কিনা তা "UV" ফ্ল্যাগে রিপোর্ট করা হয় যা পাসকি নিবন্ধন এবং প্রমাণীকরণের সময় প্রমাণীকরণকারী ডেটাতে ফেরত পাঠানো হয়।


সার্ভারে UP এবং UV কীভাবে যাচাই করা হয়
ব্যবহারকারীর উপস্থিতি (UP) এবং ব্যবহারকারী যাচাইকৃত (UV) বুলিয়ান পতাকাগুলি প্রমাণীকরণকারী ডেটা ক্ষেত্রে সার্ভারে সংকেতিত করা হয়। প্রমাণীকরণের সময়, সঞ্চিত পাবলিক কী ব্যবহার করে স্বাক্ষর যাচাই করে প্রমাণীকরণকারী ডেটা ক্ষেত্রের বিষয়বস্তু যাচাই করা যেতে পারে। যতক্ষণ স্বাক্ষরটি বৈধ থাকে, ততক্ষণ সার্ভার পতাকাগুলিকে আসল বলে বিবেচনা করতে পারে।

পাসকি রেজিস্ট্রেশন এবং প্রমাণীকরণের সময়, সার্ভারের পরীক্ষা করা উচিত যে UP ফ্ল্যাগটি true
নাকি false
, এবং UV ফ্ল্যাগটি true
নাকি false
, প্রয়োজনীয়তার উপর নির্ভর করে।
userVerification
প্যারামিটার নির্দিষ্ট করুন
WebAuthn স্পেসিফিকেশন অনুসারে, RP ক্রেডেনশিয়াল তৈরি এবং দাবি উভয় ক্ষেত্রেই userVerification
প্যারামিটার ব্যবহার করে ব্যবহারকারী যাচাইকরণের অনুরোধ করতে পারে। এটি 'preferred'
, 'required'
, অথবা 'discouraged'
গ্রহণ করে যার অর্থ যথাক্রমে:
-
'preferred'
(ডিফল্ট): ডিভাইসে ব্যবহারকারী যাচাইকরণ পদ্ধতি ব্যবহার করা পছন্দনীয় , তবে যদি এটি উপলব্ধ না হয় তবে এড়িয়ে যেতে পারে। প্রতিক্রিয়া শংসাপত্রে একটি UV পতাকা মান থাকে যা ব্যবহারকারী যাচাইকরণ সম্পন্ন হলেtrue
এবং যদি UV সম্পন্ন না হয় তবেfalse
। -
'required'
: ডিভাইসে উপলব্ধ একটি ব্যবহারকারী যাচাইকরণ পদ্ধতি ব্যবহার করা আবশ্যক। যদি একটি উপলব্ধ না থাকে, তাহলে অনুরোধটি স্থানীয়ভাবে ব্যর্থ হবে। এর অর্থ হল প্রতিক্রিয়া শংসাপত্র সর্বদা UV পতাকাtrue
তে সেট করে ফিরে আসে। -
'discouraged'
: ব্যবহারকারী যাচাইকরণ পদ্ধতি ব্যবহার করা নিরুৎসাহিত করা হয়। তবে, ডিভাইসের উপর নির্ভর করে, ব্যবহারকারী যাচাইকরণ যেকোনোভাবে করা যেতে পারে, এবং UV পতাকায়true
বাfalse
থাকতে পারে।
পাসকি তৈরির জন্য নমুনা কোড:
const publicKeyCredentialCreationOptions = {
// ...
authenticatorSelection: {
authenticatorAttachment: 'platform',
residentKey: 'required',
requireResidentKey: true,
userVerification: 'preferred'
}
};
const credential = await navigator.credentials.create({
publicKey: publicKeyCredentialCreationOptions
});
পাসকি প্রমাণীকরণের জন্য নমুনা কোড:
const publicKeyCredentialRequestOptions = {
challenge: /* Omitted challenge data... */,
rpId: 'example.com',
userVerification: 'preferred'
};
const credential = await navigator.credentials.get({
publicKey: publicKeyCredentialRequestOptions
});
userVerification
জন্য আপনার কোন বিকল্পটি বেছে নেওয়া উচিত?
আপনার userVerification
মানটি আপনার আবেদনের প্রয়োজনীয়তার পাশাপাশি আপনার ব্যবহারকারীর অভিজ্ঞতার প্রয়োজনীয়তার উপর নির্ভর করে।
কখন userVerification='preferred'
ব্যবহার করবেন
যদি আপনি সুরক্ষার চেয়ে ব্যবহারকারীর অভিজ্ঞতাকে অগ্রাধিকার দেন, তাহলে userVerification='preferred'
ব্যবহার করুন।
এমন কিছু পরিবেশ আছে যেখানে ব্যবহারকারীর যাচাইকরণ সুরক্ষার চেয়ে বেশি ঘর্ষণ করে। উদাহরণস্বরূপ, macOS-এ যেখানে Touch ID উপলব্ধ নেই (কারণ ডিভাইসটি এটি সমর্থন করে না, এটি অক্ষম করা আছে, অথবা ডিভাইসটি clamshell মোডে আছে), ব্যবহারকারীকে তার সিস্টেম পাসওয়ার্ড লিখতে বলা হয়। এর ফলে ঘর্ষণ হয় এবং ব্যবহারকারী সম্পূর্ণরূপে প্রমাণীকরণ পরিত্যাগ করতে পারেন। যদি ঘর্ষণ দূর করা আপনার কাছে বেশি গুরুত্বপূর্ণ হয়, userVerification='preferred'
ব্যবহার করুন।

userVerification='preferred'
এর ক্ষেত্রে, ব্যবহারকারীর যাচাইকরণ সফলভাবে সম্পন্ন হলে UV ফ্ল্যাগ true
এবং ব্যবহারকারীর যাচাইকরণ এড়িয়ে গেলে false
করা হয়। উদাহরণস্বরূপ, macOS-এ যেখানে Touch ID উপলব্ধ নেই, সেখানে ব্যবহারকারীকে ব্যবহারকারীর যাচাইকরণ এড়িয়ে যাওয়ার জন্য একটি বোতামে ক্লিক করতে বলা হয় এবং পাবলিক কী শংসাপত্রে একটি false
UV ফ্ল্যাগ থাকে।
UV পতাকাটি তখন আপনার ঝুঁকি বিশ্লেষণে একটি সংকেত হতে পারে। যদি অন্যান্য কারণে সাইন-ইন প্রচেষ্টা ঝুঁকিপূর্ণ বলে মনে হয়, তাহলে ব্যবহারকারীর যাচাইকরণ সম্পন্ন না হলে আপনি ব্যবহারকারীর কাছে অতিরিক্ত সাইন-ইন চ্যালেঞ্জ উপস্থাপন করতে চাইতে পারেন।
কখন userVerification='required'
ব্যবহার করবেন
যদি আপনার মনে হয় UP এবং UV উভয়ই একান্তভাবে প্রয়োজনীয়, userVerification='required'
ব্যবহার করুন।
এই বিকল্পের একটি অসুবিধা হল, ব্যবহারকারী সাইন ইন করার সময় আরও বেশি ঘর্ষণ অনুভব করতে পারেন। উদাহরণস্বরূপ, macOS-এ যেখানে টাচ আইডি উপলব্ধ নেই, ব্যবহারকারীকে তাদের সিস্টেম পাসওয়ার্ড লিখতে বলা হয়।
userVerification='required'
ব্যবহার করে, আপনি নিশ্চিত করতে পারবেন যে ডিভাইসে ব্যবহারকারীর যাচাইকরণ সম্পন্ন হয়েছে। নিশ্চিত করুন যে সার্ভারটি যাচাই করছে যে UV পতাকাটি true
।
উপসংহার
ব্যবহারকারী যাচাইকরণের মাধ্যমে, পাসকি-নির্ভর পক্ষগুলি ডিভাইস মালিকের সাইন ইন করার সম্ভাবনা পরিমাপ করতে পারে। ব্যবহারকারী যাচাইকরণের প্রয়োজন হবে কিনা, নাকি এটি ঐচ্ছিক করা হবে তা তাদের পছন্দ, ফলব্যাক সাইন-ইন প্রক্রিয়া ব্যবহারকারীর প্রবাহকে কতটা গুরুত্বপূর্ণভাবে প্রভাবিত করে তার উপর নির্ভর করে। নিশ্চিত করুন যে সার্ভার পাসকি ব্যবহারকারী প্রমাণীকরণের জন্য UP পতাকা এবং UV পতাকা পরীক্ষা করে।