এই ভলিউমে · ভলিউম 02
ব্যবহারকারী
ব্যবহারকারী, ভূমিকা ও RBAC অথেনটিকেশন

অধ্যায় ২.২ — অথেনটিকেশন (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 লগে — অনুরোধ পেলোড লগ করার আগে মাস্ক করুন