Skill

Java Technologies JWT এর মাধ্যমে Authentication এবং Authorization গাইড ও নোট

245

JWT (JSON Web Token) একটি ওপেন স্ট্যান্ডার্ড (RFC 7519) যা নিরাপদভাবে তথ্য বিনিময়ের জন্য ব্যবহৃত হয়। এটি একটি কমপ্যাক্ট এবং স্বাধীন তথ্য কাঠামো যা URL, HTTP হেডার বা কুকি সহ বিভিন্ন মাধ্যমে পাঠানো যেতে পারে। JWT ব্যবহার করে Authentication (প্রমাণীকরণ) এবং Authorization (অনুমোদন) কার্যক্রম নিরাপদে সম্পাদন করা যায়।

JWT এর মৌলিক ধারণা

JWT তিনটি অংশে বিভক্ত:

  1. Header (শিরোনাম): JWT এর প্রথম অংশে অ্যালগরিদম এবং টোকেনের টাইপ সম্পর্কিত তথ্য থাকে। সাধারণত এটি হেডার JSON অবজেক্টে থাকে।
  2. Payload (পেইলোড): JWT এর দ্বিতীয় অংশে তথ্য থাকে যা JSON অবজেক্ট হিসেবে কোড করা হয়। এখানে দাবি (claims) থাকে, যেমন ব্যবহারকারীর পরিচয় এবং তাদের অনুমতি।
  3. Signature (স্বাক্ষর): JWT এর তৃতীয় অংশে একটি ডিজিটাল স্বাক্ষর থাকে, যা সার্ভার বা ক্লায়েন্টের মাধ্যমে সুরক্ষিতভাবে তথ্য যাচাই করতে ব্যবহৃত হয়। এটি secret key দ্বারা তৈরি হয়, এবং এটি JWT এর অখণ্ডতা এবং বৈধতা নিশ্চিত করে।

JWT স্ট্রাকচার

JWT এর স্ট্রাকচার সাধারণত তিনটি অংশে বিভক্ত থাকে:

header.payload.signature

1. Header:

এটি JSON ফরম্যাটে থাকে এবং সাধারণত দুটি ক্ষেত্র থাকে:

  • alg: যেটি হোস্ট বা সার্ভারে ব্যবহৃত অ্যালগরিদম যেমন HMAC SHA256 বা RSA।
  • typ: টোকেনের টাইপ (যেমন JWT)।

উদাহরণ:

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

2. Payload:

পেইলোডে তথ্য থাকে যা claims নামে পরিচিত। claims মূলত ব্যবহারকারীর তথ্য যেমন, নাম, ইমেইল, রোল ইত্যাদি ধারণ করে। এই অংশে তিনটি ধরণের claims থাকে:

  • Registered Claims: পূর্বনির্ধারিত claims যেমন sub (subject), iat (issued at), exp (expiration time)।
  • Public Claims: যে claims ব্যবহারকারীরা স্বতন্ত্রভাবে তৈরি করতে পারেন, তবে সেগুলি অবশ্যই collision থেকে বিরত থাকতে হবে।
  • Private Claims: অ্যাপ্লিকেশন বিশেষ claims, যা অন্যান্য অ্যাপ্লিকেশনের সাথে শেয়ার করা হয় না।

উদাহরণ:

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

3. Signature:

স্বাক্ষরটি তৈরি করার জন্য সার্ভার একটি গোপন কী ব্যবহার করে। এটি header এবং payload এর ভিত্তিতে তৈরি হয়, এবং secret key (যদি HMAC ব্যবহার করা হয়) অথবা private key (যদি RSA ব্যবহার করা হয়) দ্বারা সুরক্ষিত থাকে।

JWT এর মাধ্যমে Authentication এবং Authorization


1. Authentication (প্রমাণীকরণ):

Authentication এর মাধ্যমে ব্যবহারকারী বা ক্লায়েন্টের পরিচয় যাচাই করা হয়। JWT ব্যবহার করে Authentication প্রক্রিয়া নিম্নরূপ:

  1. লগইন রিকোয়েস্ট: ব্যবহারকারী তাদের ইউজারনেম এবং পাসওয়ার্ড দিয়ে লগইন ফর্ম পূর্ণ করে সার্ভারে পাঠায়।
  2. JWT টোকেন জেনারেশন: সার্ভার ইউজারের ক্রেডেনশিয়ালস যাচাই করে এবং সফল হলে JWT টোকেন জেনারেট করে। এই টোকেনটি সাধারণত Authorization header এর মাধ্যমে ক্লায়েন্টে পাঠানো হয়।
  3. টোকেনের ব্যবহার: পরবর্তীতে, ব্যবহারকারী একই টোকেন ব্যবহার করে অ্যাপ্লিকেশনের অন্যান্য অংশে অ্যাক্সেস পেতে পারে। সার্ভার প্রতিটি রিকোয়েস্টে টোকেন যাচাই করে যে এটি বৈধ কিনা।

উদাহরণ: JWT Authentication প্রক্রিয়া

  1. Login Request:

    POST /login
    {
      "username": "john_doe",
      "password": "password123"
    }
    
  2. JWT Token Generation: সার্ভার ব্যবহারকারীর পাসওয়ার্ড যাচাই করে এবং একটি JWT টোকেন রিটার্ন করে:

    {
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
    }
    
  3. Authenticated Request: পরবর্তী রিকোয়েস্টে, ব্যবহারকারী তাদের JWT টোকেন সহ Authorization হেডারে পাঠায়:

    GET /user/profile
    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
    
  4. Token Verification: সার্ভার JWT টোকেনটি যাচাই করে এবং ব্যবহারকারীকে অ্যাক্সেস প্রদান করে।

2. Authorization (অনুমোদন):

Authorization এর মাধ্যমে ব্যবহারকারীর কাছে নির্দিষ্ট রিসোর্সের অ্যাক্সেস কন্ট্রোল করা হয়। JWT টোকেনের মধ্যে অন্তর্ভুক্ত claims এর ভিত্তিতে অ্যাপ্লিকেশন বিভিন্ন অনুমতি নিয়ন্ত্রণ করতে পারে।

উদাহরণ:

একটি সার্ভার ব্যবহৃত JWT-তে role নামক একটি claim থাকতে পারে যা ব্যবহারকারীর রোল সংরক্ষণ করে। সার্ভার এই claim-এর উপর ভিত্তি করে অনুমতি প্রদান করতে পারে।

Payload Example:

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

এখানে, role: "admin" দেখে সার্ভার বুঝতে পারে যে ব্যবহারকারী প্রশাসনিক অ্যাক্সেস রাখে এবং তাকে অতিরিক্ত অনুমতি দেওয়া যেতে পারে।

JWT Authentication এবং Authorization এর সুবিধা

  1. Stateless Authentication: JWT টোকেনটি সার্ভারে কোনো সেশন ডেটা না রেখে ব্যবহারকারীকে প্রমাণীকৃত করে, ফলে সার্ভারের সেশন ম্যানেজমেন্ট কমে যায়।
  2. Cross-Domain Support: JWT অন্যান্য ডোমেইনে ডেটা এক্সচেঞ্জ করতে সক্ষম।
  3. Scalable: এটি ডিস্ট্রিবিউটেড সিস্টেমে ব্যবহার করা সহজ, কারণ সার্ভারকে কোনো অবস্থায় সেশন ডেটা সংরক্ষণ করতে হয় না।

সারাংশ


JWT (JSON Web Token) হলো একটি নিরাপদ, কমপ্যাক্ট এবং কার্যকর পদ্ধতি যা authentication এবং authorization সম্পাদন করতে ব্যবহৃত হয়। এটি একটি header, payload, এবং signature নিয়ে গঠিত। JWT ক্লায়েন্ট-সার্ভার আর্কিটেকচারে বিশেষভাবে ব্যবহৃত হয় যেখানে সার্ভারকে সেশন ডেটা সংরক্ষণ না করে ব্যবহারকারী প্রমাণীকরণ এবং অনুমোদন নিশ্চিত করতে হয়। JWT টোকেনগুলো সহজভাবে HTTP হেডারের মাধ্যমে পাঠানো যায় এবং এটি CORS সমস্যা ছাড়াই কাজ করতে সক্ষম।

Content added By
Promotion

Are you sure to start over?

Loading...