অধ্যায় ২.২ — অথেনটিকেশন (Authentication)
১. উদ্দেশ্য
ব্যবহারকারীরা কীভাবে travoBooks-এ প্রমাণীকৃত হয় — পাসওয়ার্ড, MFA, API টোকেন, এবং সেশন ব্যবস্থাপনা।
২. পাসওয়ার্ড
- হ্যাশিং: Argon2id (memory cost: 64MB, time cost: 3, parallelism: 4)
- ন্যূনতম দৈর্ঘ্য: 12 অক্ষর
- জটিলতা: লোয়ার + আপার + সংখ্যা + চিহ্ন
- প্যাটার্ন চেক: সাধারণ পাসওয়ার্ড ব্ল্যাকলিস্ট (HaveIBeenPwned API ইন্টিগ্রেশন)
- রোটেশন: ঐচ্ছিক — ৯০ দিনে বাধ্যতামূলক রোটেশন পার্টনার কনফিগারেবল
৩. মাল্টি-ফ্যাক্টর অথেনটিকেশন (MFA)
- প্রকার: TOTP (Google Authenticator, Authy ইত্যাদি)
- ব্যাকআপ কোড: 10টি একক-ব্যবহারের কোড
- Step-up MFA: ক্রিটিক্যাল অপারেশনের আগে পুনরায় চ্যালেঞ্জ (পেআউট অনুমোদন, ব্যাঙ্ক ডিটেইল পরিবর্তন)
কিছু ভূমিকা (Controller, Treasurer) এর জন্য MFA বাধ্যতামূলক।
৪. সেশন
- কুকি:
__Host-tvb_session— HttpOnly, Secure, SameSite=Strict - টাইমআউট: 8 ঘণ্টা নিষ্ক্রিয়তা; বাধ্যতামূলক পুনঃলগইন 12 ঘণ্টার বেশি
- ডিভাইস ট্র্যাকিং: প্রতিটি সেশনে IP, User-Agent, geolocation রেকর্ড
- সক্রিয় সেশন তালিকা: ব্যবহারকারী সেটিংসে দেখতে পারে এবং দূরবর্তীভাবে বাতিল করতে পারে
৫. Personal Access Tokens (PATs)
API-এর জন্য:
- ফরম্যাট:
tvb_live_<random>বাtvb_test_<random> - স্টোরেজ: Argon2id-হ্যাশড (সার্ভারে প্লেইনটেক্সট কখনো নয়)
- স্কোপ: একটি পার্টনারের সাথে আবদ্ধ, একজন ব্যবহারকারীর সাথে সংযুক্ত
- মেয়াদ: ঐচ্ছিক expiry; সর্বোচ্চ 365 দিন
- প্রদর্শন: শুধুমাত্র তৈরির সময়; পরে কখনো নয়
৬. ব্রুট-ফোর্স প্রতিরোধ
| পরিমাপ | বিশদ |
|---|---|
| অ্যাকাউন্ট লক | ১০ ব্যর্থ চেষ্টার পর ১৫ মিনিট লক |
| IP রেট লিমিট | প্রতি IP ৫০/মিনিট লগইন চেষ্টা |
| ক্যাপচা | তৃতীয় ব্যর্থ চেষ্টার পর |
| অস্বাভাবিক লগইন | নতুন দেশ/ডিভাইস → step-up MFA চ্যালেঞ্জ + ইমেইল অ্যালার্ট |
৭. পাসওয়ার্ড রিসেট
- চাহিদা: ইমেইল দিয়ে পরিচয় যাচাই
- লিঙ্ক: 1-ঘণ্টা মেয়াদ, একক-ব্যবহার
- নোটিফিকেশন: রিসেট সফল হলে পুরাতন ইমেইলে অবহিতকরণ
৮. একক-সাইন-অন (SSO) — Phase 2
বড় এন্টারপ্রাইজ পার্টনারদের জন্য: - SAML 2.0 (Okta, Azure AD) - OIDC (Google Workspace)
৯. অডিট ঘটনা
প্রতিটি প্রমাণীকরণ ইভেন্ট অডিট লগে: - লগইন সফল / ব্যর্থ - MFA চ্যালেঞ্জ / সাফল্য / ব্যর্থতা - পাসওয়ার্ড পরিবর্তন - সেশন তৈরি / বাতিলকরণ - টোকেন ইস্যু / প্রত্যাহার
১০. সাধারণ ফাঁদ
- 🔒 কুকি
Secureফ্ল্যাগ ছাড়া — HTTP-তে ফাঁস হতে পারে - 🔒 সেশন আইডি predictable — UUID v4 বা ভাল ব্যবহার করুন
- 🔒 পাসওয়ার্ড রিসেট লিঙ্ক ইমেইলে — দ্রুত মেয়াদ + একক ব্যবহার
- 🔒 PAT লগে — অনুরোধ পেলোড লগ করার আগে মাস্ক করুন