এই ডকুমেন্টটি WebAuthn-এ userVerification
কী এবং পাসকি তৈরি বা প্রমাণীকরণের সময় userVerification
নির্দিষ্ট করা হলে ব্রাউজার আচরণের বিষয়ে আলোচনা করে।
WebAuthn এ "ব্যবহারকারী যাচাইকরণ" কি?
পাসকিগুলি পাবলিক কী ক্রিপ্টোগ্রাফির উপর নির্মিত। একটি পাসকি তৈরি করে, একটি পাবলিক-প্রাইভেট কী জোড়া তৈরি করা হয়, পাসকি প্রদানকারীর দ্বারা ব্যক্তিগত কী সংরক্ষণ করা হয়, এবং পাবলিক কী সংরক্ষণ করার জন্য নির্ভরকারী পক্ষের (RP) সার্ভারে ফেরত দেওয়া হয়। সার্ভার পেয়ার করা পাবলিক কী ব্যবহার করে একই পাসকি দ্বারা স্বাক্ষরিত স্বাক্ষর যাচাই করে একজন ব্যবহারকারীকে প্রমাণীকরণ করতে পারে। একটি পাবলিক কী শংসাপত্রে "ব্যবহারকারী উপস্থিত" (UP) পতাকা প্রমাণ করে যে প্রমাণীকরণের সময় কেউ ডিভাইসটির সাথে ইন্টারঅ্যাক্ট করেছে৷
ব্যবহারকারী যাচাইকরণ হল নিরাপত্তার একটি ঐচ্ছিক স্তর যা নিশ্চিত করার চেষ্টা করে যে প্রমাণীকরণের সময় সঠিক ব্যক্তি উপস্থিত ছিলেন, শুধুমাত্র কিছু ব্যক্তি নয়, ব্যবহারকারীর উপস্থিতি দাবি করে। স্মার্টফোনে, এটি সাধারণত স্ক্রিন-লক মেকানিজম ব্যবহার করে করা হয়, সেটা বায়োমেট্রিক হোক বা পিন বা পাসওয়ার্ড। ব্যবহারকারীর যাচাইকরণ করা হয়েছে কিনা তা "UV" পতাকায় রিপোর্ট করা হয়েছে যা পাসকি নিবন্ধন এবং প্রমাণীকরণের সময় প্রমাণীকরণকারী ডেটাতে ফেরত দেওয়া হয়
কিভাবে UP এবং UV সার্ভারে যাচাই করা হয়
ব্যবহারকারীর উপস্থিতি (UP) এবং ব্যবহারকারী যাচাইকৃত (UV) বুলিয়ান ফ্ল্যাগগুলি প্রমাণীকরণকারী ডেটা ক্ষেত্রে সার্ভারে সংকেত দেওয়া হয়। প্রমাণীকরণের সময়, প্রমাণীকরণকারী ডেটা ক্ষেত্রের বিষয়বস্তু সংরক্ষণ করা পাবলিক কী ব্যবহার করে স্বাক্ষর যাচাই করে যাচাই করা যেতে পারে। যতক্ষণ পর্যন্ত স্বাক্ষর বৈধ থাকে, সার্ভার পতাকাগুলিকে প্রকৃত বিবেচনা করতে পারে।
পাসকি রেজিস্ট্রেশন এবং প্রমাণীকরণে, সার্ভারের পরীক্ষা করা উচিত যে ইউপি পতাকাটি true
, এবং প্রয়োজনের উপর নির্ভর করে ইউভি পতাকা 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-এ যেখানে টাচ আইডি উপলব্ধ নেই (কারণ ডিভাইসটি এটি সমর্থন করে না, এটি অক্ষম করা হয়েছে, বা ডিভাইসটি ক্ল্যামশেল মোডে রয়েছে), ব্যবহারকারীকে পরিবর্তে তাদের সিস্টেম পাসওয়ার্ড লিখতে বলা হয়। এটি ঘর্ষণ সৃষ্টি করে এবং ব্যবহারকারী সম্পূর্ণরূপে প্রমাণীকরণ ত্যাগ করতে পারে। ঘর্ষণ দূর করা আপনার কাছে বেশি গুরুত্বপূর্ণ হলে userVerification='preferred'
ব্যবহার করুন।
userVerification='preferred'
এর সাথে, ব্যবহারকারীর যাচাইকরণ সফলভাবে সম্পাদিত হলে UV পতাকাটি true
, এবং ব্যবহারকারীর যাচাইকরণ এড়িয়ে গেলে false
। উদাহরণস্বরূপ, macOS-এ যেখানে টাচ আইডি উপলব্ধ নেই, এটি ব্যবহারকারীকে ব্যবহারকারী যাচাইকরণ এড়িয়ে যাওয়ার জন্য একটি বোতামে ক্লিক করতে বলে এবং সর্বজনীন কী শংসাপত্রে একটি false
UV পতাকা অন্তর্ভুক্ত থাকে।
UV পতাকা তখন আপনার ঝুঁকি বিশ্লেষণে একটি সংকেত হতে পারে। সাইন-ইন প্রচেষ্টা অন্যান্য কারণের কারণে ঝুঁকিপূর্ণ মনে হলে, ব্যবহারকারীর যাচাইকরণ না করা হলে আপনি ব্যবহারকারীর কাছে অতিরিক্ত সাইন-ইন চ্যালেঞ্জ উপস্থাপন করতে চাইতে পারেন।
userVerification='required'
কখন ব্যবহার করবেন
userVerification='required'
ব্যবহার করুন যদি আপনি মনে করেন UP এবং UV উভয়ই একেবারে প্রয়োজনীয়।
এই বিকল্পের একটি নেতিবাচক দিক হল যে ব্যবহারকারী সাইন ইন করার সময় আরও ঘর্ষণ অনুভব করতে পারে। উদাহরণস্বরূপ, ম্যাকওএস-এ যেখানে টাচ আইডি উপলব্ধ নেই, ব্যবহারকারীকে তাদের সিস্টেম পাসওয়ার্ড লিখতে বলা হয়।
userVerification='required'
এর মাধ্যমে, আপনি নিশ্চিত করতে পারেন যে ডিভাইসে ব্যবহারকারী যাচাই করা হয়েছে। নিশ্চিত করুন যে সার্ভারটি UV পতাকাটি true
কিনা তা যাচাই করে।
উপসংহার
ব্যবহারকারীর যাচাইকরণের সুবিধার মাধ্যমে, পাসকি-নির্ভরকারী পক্ষগুলি ডিভাইসের মালিকের সাইন ইন করার সম্ভাবনার পরিমাপ করতে পারে৷ ব্যবহারকারীর যাচাইকরণের প্রয়োজন হবে কিনা, অথবা ফলব্যাক সাইন-ইন প্রক্রিয়া ব্যবহারকারীর প্রবাহকে কতটা গুরুত্বপূর্ণ প্রভাবিত করে তার উপর নির্ভর করে এটিকে ঐচ্ছিক করতে হবে তা তাদের পছন্দ৷ পাসকি ব্যবহারকারীর প্রমাণীকরণের জন্য সার্ভার ইউপি পতাকা এবং ইউভি পতাকা পরীক্ষা করে তা নিশ্চিত করুন।