Authentication: পরিচয় যাচাই (Who You Are?)
Authentication প্রক্রিয়ায় ব্যবহারকারীকে তার পরিচয় প্রমাণ করতে হয়। সাধারণত এটি Username ও Password, OTP, Biometric বা OAuth ইত্যাদির মাধ্যমে করা হয়।
কীভাবে কাজ করে?
১. ব্যবহারকারী তার Username ও Password ইনপুট দেয়।
২. সার্ভার সেটি ডেটাবেজে সংরক্ষিত তথ্যের সাথে মিলিয়ে দেখে।
৩. মিল পাওয়া গেলে ব্যবহারকারীকে সিস্টেমে প্রবেশের অনুমতি দেওয়া হয়।
Python উদাহরণ:
users_db = {
"john_doe": "securepassword123",
"alice_smith": "mypassword456"
}
def authenticate(username, password):
if username in users_db and users_db[username] == password:
return "Authentication Successful!"
else:
return "Authentication Failed!"
# Running the example
print(authenticate("john_doe", "securepassword123")) # Successful
print(authenticate("john_doe", "wrongpassword")) # Failed
Authorization: অনুমতি যাচাই (What You Can Do?)
Authentication সফল হওয়ার পর Authorization-এর কাজ শুরু হয়। অর্থাৎ, ব্যবহারকারী সিস্টেমে ঢুকে কোন কাজটি করতে পারবে বা কোন ডেটা অ্যাক্সেস করতে পারবে, সেটি নির্ধারণ করা হয়।
কীভাবে কাজ করে?
১. ব্যবহারকারী সফলভাবে লগইন করলে তার জন্য একটি Token বা Session তৈরি করা হয়।
২. প্রত্যেক ব্যবহারকারীর একটি Role (যেমন: Admin, User, Guest) সেট করা থাকে।
৩. Role অনুযায়ী নির্দিষ্ট কিছু অনুমতি (Permission) দেওয়া থাকে।
৪. ব্যবহারকারী কোনো অ্যাকশন নিতে চাইলে তার Role এবং Permission যাচাই করা হয়।
Python উদাহরণ:
user_roles = {
"john_doe": "admin",
"alice_smith": "user"
}
permissions = {
"admin": ["read", "write", "delete"],
"user": ["read"]
}
def authorize(username, action):
role = user_roles.get(username)
if role and action in permissions[role]:
return f"{username} is authorized for {action}"
else:
return f"{username} is NOT authorized for {action}"
# Running the example
print(authorize("john_doe", "delete")) # Authorized (admin)
print(authorize("alice_smith", "write")) # Not Authorized (user)
Authentication vs Authorization
বিষয় | Authentication | Authorization |
কী বোঝায়? | ব্যবহারকারীর পরিচয় যাচাই করে। | ব্যবহারকারীর অনুমতি যাচাই করে। |
কখন ঘটে? | প্রথম ধাপে (লগইনের সময়)। | Authentication-এর পর ঘটে। |
কী যাচাই করে? | Password, OTP, Biometric, Token | User Role, Permission, Access Control |
লক্ষ্য | নিজের পরিচয় নিশ্চিত করা। | অনুমোদিত কাজের জন্য অ্যাক্সেস নেওয়া। |
উদাহরণ | Username ও Password দিয়ে সিস্টেমে ঢোকা। | কোনো ডেটাবেস টেবিল ডিলিট করার পারমিশন আছে কি না তা দেখা। |
সিস্টেম ডিজাইনে Authentication এবং Authorization-এর পদ্ধতি
JWT (JSON Web Token): Authentication-এর জন্য JWT ব্যবহার করা হয়, যেখানে ব্যবহারকারীর তথ্য এনকোড করা থাকে। একবার লগইন করার পর, এই Token ব্যবহার করে পরবর্তী Authorization করা হয়।
OAuth 2.0: Google, Facebook বা GitHub-এর মতো প্ল্যাটফর্মে Authentication করার জন্য OAuth ব্যবহৃত হয়। এটি ব্যবহারকারীর তথ্য অন্য একটি নির্ভরযোগ্য সার্ভার থেকে এনে দেয়।
RBAC (Role-Based Access Control): Authorization নিশ্চিত করার জন্য এটি ব্যাপকভাবে ব্যবহৃত হয়, যেখানে প্রতিটি Role-এর জন্য নির্দিষ্ট পারমিশন থাকে।
Session-Based Authentication: সার্ভার ব্যবহারকারীর Session ID তৈরি করে এবং এটি ব্রাউজারের Cookie-তে সংরক্ষণ করে।
Multi-Factor Authentication (MFA): পাসওয়ার্ডের পাশাপাশি OTP বা Biometric ব্যবহার করে নিরাপত্তা আরও শক্তিশালী করা হয়।
Authentication নিশ্চিত করে তুমি কে, আর Authorization নির্ধারণ করে তুমি কী করতে পারো। একটি নিরাপদ সিস্টেম ডিজাইনের জন্য এই দুটি প্রক্রিয়াই তোমার সিস্টেমে অত্যন্ত সতর্কতার সাথে ইমপ্লিমেন্ট করা জরুরি। সিস্টেমের ডেটা এবং আর্কিটেকচার সুরক্ষিত রাখতে স্ট্রং পাসওয়ার্ড এনক্রিপশন এবং সঠিক রোল-বেসড অ্যাক্সেস কন্ট্রোলের কোনো বিকল্প নেই।