How to Design Secure Web API Access
ইন্টারনেটে যখন আমরা কোনো এপিআই (API) ব্যবহার করি, তখন সবচেয়ে বড় চিন্তার বিষয় থাকে সিকিউরিটি। অর্থাৎ, যে ব্যক্তি এপিআইটি কল করছে, সে আসলে সঠিক ব্যক্তি কি না? এটি নিশ্চিত করার জন্য প্রধানত দুটি জনপ্রিয় পদ্ধতি ব্যবহার করা হয়: Token Based Authentication এবং HMAC Authentication।
সহজ ভাষায় এই দুটি পদ্ধতির কাজ করার ধরণ নিচে আলোচনা করা হলো:
১. টোকেন ভিত্তিক অথেন্টিকেশন (Token Based Authentication)
এটি বর্তমানে সবচেয়ে বেশি ব্যবহৃত পদ্ধতি। সহজ কথায় এটি অনেকটা কোনো কনসার্টে প্রবেশের জন্য 'রিস্টব্যান্ড' পাওয়ার মতো।
কিভাবে কাজ করে?
লগইন: প্রথমে ইউজার তার ইউজারনেম এবং পাসওয়ার্ড দিয়ে সার্ভারে লগইন করার চেষ্টা করে।
টোকেন প্রাপ্তি: যদি পাসওয়ার্ড ঠিক থাকে, তবে অথেন্টিকেশন সার্ভার ইউজারকে একটি গোপন 'টোকেন' (যেমন: JWT) পাঠায়। এই টোকেনের একটি নির্দিষ্ট মেয়াদ (Expiry Time) থাকে।
এপিআই কল: এরপর থেকে ইউজার যতবার সার্ভারের কাছে কোনো তথ্য চাইবে, তাকে আর বারবার পাসওয়ার্ড দিতে হবে না। সে শুধু ওই টোকেনটি রিকোয়েস্টের সাথে পাঠিয়ে দেবে।
এক্সেস: সার্ভার টোকেনটি চেক করে দেখে এবং সঠিক হলে ইউজারকে তথ্য দেয়।
সুবিধা: এটি ব্যবহার করা সহজ এবং বারবার সার্ভারে পাসওয়ার্ড পাঠানোর ঝুঁকি থাকে না।
২. HMAC অথেন্টিকেশন (Hash-based Message Authentication Code)
HMAC পদ্ধতিটি একটু বেশি সিকিউর এবং জটিল। এখানে শুধু ইউজারকে চেনা হয় না, বরং ইউজারের পাঠানো তথ্য মাঝপথে কেউ পরিবর্তন করেছে কি না তাও পরীক্ষা করা হয়।
কিভাবে কাজ করে?
কি (Key) সংগ্রহ: ইউজারকে শুরুতেই একটি Public App ID এবং একটি গোপন API Key (Private Key) দেওয়া হয়। এই প্রাইভেট কি-টি কখনো ইন্টারনেটে শেয়ার করা হয় না।
সিগনেচার তৈরি (Client Side): রিকোয়েস্ট পাঠানোর সময় ক্লায়েন্ট সাইডে একটি এলগরিদম ব্যবহার করা হয়। যেখানে রিকোয়েস্টের তথ্য (যেমন: ইউআরএল, সময়, কন্টেন্ট) এবং ওই গোপন 'এপিআই কি' মিলিয়ে একটি ডিজিটাল স্বাক্ষর বা HMAC Signature (hmac A) তৈরি করা হয়।
রিকোয়েস্ট পাঠানো: ক্লায়েন্ট এবার রিকোয়েস্টের সাথে ওই সিগনেচারটি সার্ভারে পাঠিয়ে দেয়।
সার্ভার সাইড ভেরিফিকেশন: সার্ভার যখন রিকোয়েস্টটি পায়, সে নিজেও একই তথ্য এবং নিজের কাছে থাকা গোপন 'এপিআই কি' দিয়ে নতুন করে একটি সিগনেচার (hmac B) তৈরি করে।
মিলিয়ে দেখা: যদি ক্লায়েন্টের পাঠানো সিগনেচার (hmac A) এবং সার্ভারের তৈরি করা সিগনেচার (hmac B) হুবহু মিলে যায়, কেবল তখনই সার্ভার তথ্য প্রদান করে।
সুবিধা: এখানে সিক্রেট কি-টি কখনো নেটওয়ার্কে আদান-প্রদান হয় না, তাই হ্যাকারদের পক্ষে এটি চুরি করা প্রায় অসম্ভব। এটি ডাটা ইন্টিগ্রিটি (Data Integrity) নিশ্চিত করে।
সংক্ষেপে পার্থক্য:
বিষয় | টোকেন অথেন্টিকেশন | HMAC অথেন্টিকেশন |
ইমপ্লিমেন্টেশন | খুব সহজ | কিছুটা জটিল |
ব্যবহার | সাধারণ অ্যাপ বা ওয়েবসাইট লগইনে | হাই-সিকিউরিটি বা পেমেন্ট এপিআই-তে |
নিরাপত্তা | ভালো (তবে টোকেন চুরি হলে রিস্ক থাকে) | অত্যন্ত শক্তিশালী (প্রতিটি রিকোয়েস্ট ভেরিফাই হয়) |
আপনি যদি সাধারণ কোনো ইউজার অ্যাপ তৈরি করেন যেখানে সহজ লগইন প্রয়োজন, তবে Token based পদ্ধতিই সেরা। কিন্তু যদি এমন কোনো এপিআই বানান যেখানে নিরাপত্তার গুরুত্ব অনেক বেশি (যেমন: ব্যাংকিং বা গেটওয়ে), তবে HMAC ব্যবহার করা বুদ্ধিমানের কাজ।
