Basic Authentication এবং Token-Based Authentication

RESTful API এর Authentication এবং Authorization - রেস্টফুল ওয়েব সার্ভিস (RESTful Web Services) - Web Development

277

RESTful Web Services: একটি পরিচিতি

REST (Representational State Transfer) হল একটি আর্কিটেকচারাল স্টাইল যা ওয়েব সার্ভিস ডিজাইনে ব্যবহৃত হয়। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে হালকা এবং স্কেলেবল যোগাযোগের জন্য ডিজাইন করা হয়েছে। RESTful সার্ভিসে HTTP এর বিভিন্ন মেথড (যেমন: GET, POST, PUT, DELETE) ব্যবহার করে ডেটা এক্সচেঞ্জ করা হয়।

একটি RESTful সার্ভিস সাধারণত ইউআরএল (URL) এর মাধ্যমে অ্যাক্সেস করা যায় এবং এটি বিভিন্ন অথেন্টিকেশন মেথড ব্যবহার করে নিরাপত্তা নিশ্চিত করে। এর মধ্যে Basic Authentication এবং Token-Based Authentication দুটি জনপ্রিয় অথেন্টিকেশন পদ্ধতি।


১. Basic Authentication

Basic Authentication হল একটি সাধারণ অথেন্টিকেশন মেকানিজম, যেখানে ইউজারের ইউজারনেম এবং পাসওয়ার্ড ব্যবহার করে তাদের পরিচয় যাচাই করা হয়। HTTP রিকোয়েস্টের Authorization হেডারে Base64 এনকোড করা ইউজারনেম এবং পাসওয়ার্ড পাঠানো হয়।

Basic Authentication এর সুবিধা:

  • সহজ এবং দ্রুত সেটআপ
  • সাধারণ প্রজেক্ট বা প্রোটোটাইপের জন্য উপযুক্ত

কীভাবে Basic Authentication কাজ করে:

  1. ক্লায়েন্ট একটি রিকোয়েস্ট পাঠায়, যাতে ইউজারনেম এবং পাসওয়ার্ড Base64 এনকোডেড আকারে পাঠানো হয়।
  2. সার্ভার ঐ তথ্য যাচাই করে এবং যদি সঠিক হয়, তবে অ্যাক্সেস প্রদান করা হয়।
  3. ক্লায়েন্ট প্রতিটি রিকোয়েস্টে তাদের ইউজারনেম এবং পাসওয়ার্ড অন্তর্ভুক্ত করে (যে পর্যন্ত সেশনটি শেষ না হয়)।

উদাহরণ:

Client-side (JavaScript example using fetch):

const username = "user";
const password = "password";
const headers = new Headers();
headers.set('Authorization', 'Basic ' + btoa(username + ':' + password));

fetch('https://api.example.com/data', {
  method: 'GET',
  headers: headers
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

এখানে, btoa() ফাংশনটি ইউজারনেম এবং পাসওয়ার্ডকে Base64 এনকোড করে এবং তা HTTP রিকোয়েস্টের Authorization হেডারে পাঠানো হয়।


২. Token-Based Authentication

Token-Based Authentication আধুনিক ওয়েব অ্যাপ্লিকেশনে খুবই জনপ্রিয়, যেখানে সিস্টেমে লগ ইন করার পর একটি Token (যেমন JWT - JSON Web Token) প্রদান করা হয়। এই টোকেন ব্যবহারকারীকে পরবর্তী রিকোয়েস্টে যাচাই করার জন্য ব্যবহার করা হয়। এই পদ্ধতি সাধারণত stateless authentication নামে পরিচিত, কারণ সার্ভার কোনও সেশন ডেটা রাখে না।

Token-Based Authentication এর সুবিধা:

  • সেশন ম্যানেজমেন্টের প্রয়োজন নেই (stateless)
  • নিরাপদ এবং স্কেলেবল
  • মোবাইল অ্যাপ্লিকেশন বা ক্রস-প্ল্যাটফর্ম অ্যাপ্লিকেশনগুলির জন্য আদর্শ

কীভাবে Token-Based Authentication কাজ করে:

  1. ব্যবহারকারী প্রথমে ইউজারনেম এবং পাসওয়ার্ড দিয়ে লগ ইন করেন।
  2. সার্ভার ইউজার যাচাই করার পর একটি টোকেন তৈরি করে এবং ক্লায়েন্টে পাঠায়।
  3. ক্লায়েন্ট পরবর্তী সকল রিকোয়েস্টে এই টোকেনকে HTTP হেডারে প্রেরণ করে, যাতে সার্ভার ব্যবহারকারীকে যাচাই করতে পারে।
  4. সার্ভার টোকেন যাচাই করে এবং টোকেন সঠিক হলে রিকোয়েস্টটি প্রক্রিয়া করে।

উদাহরণ:

Client-side (JavaScript using fetch for Token Authentication):

const token = "your-jwt-token";  // JWT token from login
const headers = new Headers();
headers.set('Authorization', 'Bearer ' + token);

fetch('https://api.example.com/protected-data', {
  method: 'GET',
  headers: headers
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

এখানে, Authorization হেডারে Bearer শব্দটি যোগ করা হয় এবং এর সাথে JWT টোকেন প্রেরণ করা হয়।


JWT (JSON Web Token)

JWT একটি জনপ্রিয় টোকেন ফর্ম্যাট যা ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ তথ্য আদান প্রদান করতে ব্যবহৃত হয়। এটি তিনটি অংশে বিভক্ত:

  1. Header: এটি টোকেনের ধরন এবং সাইনিং এলগরিদম উল্লেখ করে।
  2. Payload: এটি ইউজারের তথ্য ধারণ করে (যেমন ইউজার আইডি, রোল, এক্সপিরেশন টাইম)।
  3. Signature: এটি টোকেনের সুরক্ষা নিশ্চিত করতে একটি সিক্রেট কিবোর্ড বা কিপে সাইন করা হয়।

JWT উদাহরণ:

JWT Header এবং Payload:

{
  "alg": "HS256",
  "typ": "JWT"
}

JWT Payload:

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

JWT Signature: Signature হল এক ধরনের সুরক্ষা কোড যা সার্ভার তৈরি করে এবং এটি যাচাই করতে ব্যবহৃত হয়।


বিভিন্ন Authentication পদ্ধতির তুলনা

বৈশিষ্ট্যBasic AuthenticationToken-Based Authentication (JWT)
নিরাপত্তাকম, কারণ ইউজারনেম এবং পাসওয়ার্ড প্রতি রিকোয়েস্টে পাঠাতে হয়উচ্চ, কারণ টোকেন এনক্রিপ্ট করা এবং এটি এক্সপায়ার হতে পারে
স্টেটলেসনয়, কারণ সার্ভার সেশন ম্যানেজ করেহ্যাঁ, কারণ সার্ভার কোন সেশন রাখে না
রিসোর্সসাধারণ অ্যাপ্লিকেশন ও প্রোটোটাইপের জন্য উপযুক্তবৃহত্তর, স্কেলেবল অ্যাপ্লিকেশনের জন্য উপযুক্ত
অপব্যবহার সম্ভাবনাবেশি, যদি HTTP কানেকশন সুরক্ষিত না থাকেকম, কারণ টোকেন সাধারণত সুরক্ষিত এবং সময়সীমা নির্ধারিত থাকে

সারাংশ

Basic Authentication এবং Token-Based Authentication হল RESTful ওয়েব সার্ভিসে ব্যবহৃত দুটি জনপ্রিয় অথেন্টিকেশন পদ্ধতি। Basic Authentication সহজ এবং দ্রুত সেটআপ হলেও কম নিরাপদ এবং একাধিক রিকোয়েস্টে ইউজারনেম ও পাসওয়ার্ড পাঠানোর প্রয়োজন হয়। অপরদিকে, Token-Based Authentication অধিক নিরাপদ এবং স্কেলেবল, কারণ এটি JWT (JSON Web Token) এর মাধ্যমে স্টেটলেস অথেন্টিকেশন এবং সেশন ম্যানেজমেন্টের প্রয়োজনীয়তা কমায়। এটি আধুনিক ওয়েব অ্যাপ্লিকেশন এবং মোবাইল অ্যাপ্লিকেশনের জন্য আদর্শ।

Content added By
Promotion

Are you sure to start over?

Loading...