API Authentication: API Keys বনাম JWT বনাম OAuth 2.0
আমি একবার কোনো অথেন্টিকেশন ছাড়াই একটি API রিলিজ করেছিলাম। আমি ভেবেছিলাম এটি একটি সাধারণ ইন্টারনাল টুল। দুই সপ্তাহ পর, রাত ৩টার সময় একজন প্রতিযোগীর বট আমাদের ডেটাবেস স্ক্র্যাপ (scrape) করে নেয়। সেই ভুলের কারণে আমার ১,২০০ ডলারের AWS বিল এবং বসের সাথে একটি অস্বস্তিকর পরিস্থিতির সৃষ্টি হয়েছিল।
অথেন্টিকেশন খুব একটা মজার বিষয় নয়। কিন্তু আপনি যদি এটি ভুলভাবে করেন, তবে এটি আপনাকে রাত ৩টার সময় অ্যালার্ট দিয়ে জাগিয়ে তুলবে।
এই তিনটি প্রধান প্যাটার্নের মধ্যে কীভাবে বেছে নেবেন তা নিচে দেওয়া হলো।
- API Keys এগুলো হলো লম্বা র্যান্ডম স্ট্রিং (random strings)। ক্লায়েন্ট প্রতিটি রিকোয়েস্টের সাথে এগুলো পাঠায়। এগুলো সহজ এবং দ্রুত।
এগুলো ব্যবহার করুন: • আবহাওয়া বা স্টক ডেটার মতো পাবলিক API-এর জন্য। • সার্ভার থেকে সার্ভার যোগাযোগের জন্য। • নতুন কোনো আইডিয়ার প্রোটোটাইপিং করার জন্য। • ইন্টারনাল মাইক্রোসার্ভিসেসের জন্য।
- JWT (JSON Web Tokens) এগুলো হলো সাইন করা (signed) টোকেন। এগুলো টোকেনের ভেতরেই ইউজারের তথ্য এবং পারমিশন বহন করে। এগুলো ভ্যালিডেট করার জন্য আপনার ডেটাবেস লুকআপ করার প্রয়োজন নেই।
এগুলো ব্যবহার করুন: • মাইক্রোসার্ভিসেসের ক্ষেত্রে যেখানে প্রতিটি সার্ভিস নিজেকে নিজে ভ্যালিডেট করে। • মোবাইল অ্যাপ এবং সিঙ্গেল পেজ অ্যাপ্লিকেশন (SPA)-এর জন্য। • স্কেল করার প্রয়োজন আছে এমন হাই ট্রাফিক API-এর জন্য।
সতর্কতা: JWT-তে খুব বেশি ডেটা রাখবেন না। এটি ছোট রাখুন। শুধুমাত্র ইউজার আইডি (user ID) এবং রোল (roles) অন্তর্ভুক্ত করুন।
- OAuth 2.0 এটি হলো ডেলিগেশনের (delegation) একটি প্রোটোকল। এটি একজন ইউজারকে তার পাসওয়ার্ড শেয়ার না করেই তার ডেটাতে অ্যাক্সেস দেওয়ার অনুমতি দেয়। "Sign in with Google"-এর কথা চিন্তা করুন।
এটি ব্যবহার করুন: • থার্ড পার্টি ইন্টিগ্রেশনের জন্য। • এমন সিস্টেমের জন্য যেখানে ইউজাররা বিভিন্ন অ্যাপকে নির্দিষ্ট পারমিশন প্রদান করে। • এন্টারপ্রাইজ সফটওয়্যারের জন্য।
এগুলো এড়িয়ে চলুন: • সাধারণ ইন্টারনাল API-এর জন্য। • ছোট টিম যারা দ্রুত কাজ রিলিজ করতে চায়।
দ্রুত সিদ্ধান্ত নেওয়ার গাইড:
• পাবলিক API: API Keys ব্যবহার করুন। • ইন্টারনাল মাইক্রোসার্ভিসেস: API Keys ব্যবহার করুন। • মোবাইল অ্যাপ ব্যাকএন্ড: JWT ব্যবহার করুন। • ইউজার রোলসহ SaaS: JWT ব্যবহার করুন। • থার্ড পার্টি অ্যাক্সেস: OAuth 2.0 ব্যবহার করুন।
আমার সাধারণ নিয়ম: ১. ইন্টারনাল সার্ভিসের জন্য API Keys দিয়ে শুরু করুন। ২. যখন ইউজার অথেন্টিকেশন প্রয়োজন হবে, তখন JWT যোগ করুন। ৩. শুধুমাত্র তখনই OAuth 2.0 ব্যবহার করুন যখন কোনো ক্লায়েন্ট এটি চায় অথবা আপনি একটি প্ল্যাটফর্ম তৈরি করছেন।
এমন একটি নিখুঁত সিস্টেম তৈরি করবেন না যা কখনোই রিলিজ হয় না। এমন একটি নিরাপদ সিস্টেম তৈরি করুন যা কাজ করে।
আপনি কোন অথেন্টিকেশন প্যাটার্ন ব্যবহার করেন? কমেন্টে আমাকে জানান।
Source: https://dev.to/sirmax/api-authentication-in-2026-api-keys-vs-jwt-vs-oauth-20-when-to-use-what-h7c
