HTTP Basic Authentication: কাজ করার পদ্ধতি, সিকিউরিটি ইস্যু ও বেস্ট প্র্যাকটিস
Basic Authentication কী?
HTTP Basic Authentication হলো HTTP প্রোটোকলের বিল্ট-ইন একটি সিম্পল অথেন্টিকেশন স্কিম। ক্লায়েন্ট রিকোয়েস্ট হেডারে `Authorization` ফিল্ড পাঠায় যার ফরম্যাট: Authorization: Basic <base64(username:password)>
কীভাবে কাজ করে?
- ক্লায়েন্ট রিকোয়েস্ট পাঠায় (Authorization হেডার ছাড়া)
- সার্ভার ৪০১ Unauthorized রেসপন্স দেয় সাথে `WWW-Authenticate: Basic realm="..."` হেডার
- ব্রাউজার/ক্লায়েন্ট ইউজারনেম/পাসওয়ার্ড চেয়ে (ডায়ালগ বক্স দেখায়)
- ক্লায়েন্ট `username:password` কে Base64 এনকোড করে `Authorization: Basic
` হেডার দিয়ে রিকোয়েস্ট পাঠায় - সার্ভার ডিকোড করে যাচাই করে, সফল হলে ২০০ OK, ব্যর্থ হলে ৪০১/৪০৩
উদাহরণ
# Username: demo, Password: p@55w0rd
# Plain: demo:p@55w0rd
# Base64: ZGVtbzpwQDU1dzByZA==
Authorization: Basic ZGVtbzpwQDU1dzByZA==
নোট: Base64 এনকোডিং ≠ এনক্রিপশন। কেউ যেকোনো সময় ডিকোড করে পাসওয়ার্ড পেতে পারে।
Basic Auth-এর সিকিউরিটি সমস্যা
- ক্রেডেনশিয়াল প্রতি রিকোয়েস্টে পাঠায়: CSRF, লগ লিকেজ রিস্ক
- Base64 সহজে ডিকোড হয়: HTTPS ছাড়া কেউ স্নিফ করতে পারে
- লগআউট মেকানিজম নেই: ব্রাউজার বন্ধ না পর্যন্ত ক্যাশে থাকে
- পাসওয়ার্ড রোটেশন কঠিন: ক্লায়েন্ট সাইডে আপডেট করা চ্যালেঞ্জিং
- MFA সাপোর্ট নেই: শুধু ইউজারনেম/পাসওয়ার্ড
Basic Auth কখন নিরাপদ?
শুধু HTTPS (TLS 1.2+) এর ওপর ব্যবহার করলে। TLS ছাড়া Basic Auth ব্যবহার করা বড় সিকিউরিটি রিস্ক।
Windows Basic Authentication vs Windows Authentication
| ফিচার | Basic Auth | Windows Auth (Integrated/Kerberos/NTLM) |
|---|---|---|
| ক্রেডেনশিয়াল যাচাই | ডাটাবেস/ফাইল বনাম | Active Directory Domain Controller |
| সিঙ্গেল সাইন-অন (SSO) | না | হ্যাঁ (Kerberos/NTLM SPNEGO) |
| ডোমেন জয়েন প্রয়োজন | না | হ্যাঁ |
| ইন্টারনেট-ফেসিং অ্যাপের জন্য | উপযুক্ত (HTTPS+s) | উপযুক্ত নয় (KerberosConstrained Delegation প্রয়োজন) |
Basic Authentication ইনেবল/ডিজেবল করা (IIS/Windows Server)
- Server Manager > Manage > Add Roles and Features
- Web Server (IIS) > Web Server > Security > Basic Authentication টিক দিন
- या PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName IIS-BasicAuthentication - IIS Manager > Site > Authentication > Basic Authentication > Enable/Disable
আধুনিক বিকল্প (Modern Alternatives) - Basic Auth বাদ দিয়ে
- OAuth 2.0 / OpenID Connect: Industry standard, টোকেন-ভিত্তিক, MFA সাপোর্ট
- JWT (JSON Web Tokens): স্টেটলেস, স্কেলেবল, মাইক্রোসার্ভিসের জন্য আদর্শ
- API Keys / Bearer Tokens: সিম্পল, রিভোকেবল, স্কোপ-ভিত্তিক
- Certificate-based Auth (mTLS): পারস্পরিক অথেন্টিকেশন, zelo সিকিউর
- FIDO2/WebAuthn/Passkeys: পাসওয়ার্ডলেস, ফিশিং-রেজিস্ট্যান্ট
Basic Auth এখনো কোথায় ব্যবহার হয়?
- লিগ্যাসি অ্যাপ্লিকেশন / এমবেডেড ডিভাইস
- সিম্পল ইন্টারন্যাল টুলস (HTTPS-এর ওপর)
- Docker Registry, npm Registry, Git over HTTP
- Server-to-Server কমিউনিকেশন (মিউচুয়াল TLS না থাকা ক্ষেত্রে)
- টেস্টিং/ডেভেলপমেন্ট এনভায়রনমেন্ট
বেস্ট প্র্যাকটিস Basic Auth ব্যবহার করলে অবশ্যই
- HTTPS বাধ্যতামূলক (HSTS, Certificate Pinning)
- স্ট্রং পাসওয়ার্ড পলিসি + রোটেশন
- Rate Limiting / Account Lockout
- Audit Logging (Failed/Successful attempts)
- Short-lived Credentials (Service Accounts-এর জন্য)
- Network Level Restriction (IP Whitelist, VPN Only)