OAuth 2.0 প্রোটোকলটিতে Token হল একটি সুরক্ষিত এবং সহজ উপায়ের মাধ্যম যা ক্লায়েন্ট অ্যাপ্লিকেশনকে রিসোর্সে অ্যাক্সেসের অনুমতি দেয়। মূলত, দুটি ধরণের টোকেন ব্যবহৃত হয়: JWT (JSON Web Token) এবং Bearer Token। উভয়ই বিভিন্ন ধরনের অথোরাইজেশন এবং অথেনটিকেশন ব্যবস্থায় ব্যবহৃত হয় এবং তাদের নিজস্ব স্ট্রাকচার এবং ফর্ম্যাট রয়েছে।
1. Bearer Token
Bearer Token একটি সাধারণ টোকেন ফরম্যাট যা সাধারণত অ্যাক্সেস টোকেন হিসেবে ব্যবহৃত হয়। এটি বিশেষ করে OAuth 2.0-এ ব্যবহৃত হয়, যেখানে অ্যাক্সেস টোকেনের মাধ্যমে ব্যবহারকারী নির্দিষ্ট রিসোর্স অ্যাক্সেস করার অনুমতি পায়।
Bearer Token এর স্ট্রাকচার:
- Bearer Token-এর মূল স্ট্রাকচার সাধারণত একটি একক স্ট্রিং (টোকেন) থাকে। এটি সাধারণত HTTP Authorization header এর মাধ্যমে পাঠানো হয়।
- Bearer Token এর মধ্যে কোন বিশেষ স্ট্রাকচার বা ইনকোডিং ফরম্যাট থাকে না, তবে এটি একবার প্রাপ্ত হলে সহজেই API রিকোয়েস্টে হেডারে Authorization ফিল্ডে প্রদান করা যায়।
উদাহরণ:
HTTP হেডারে Bearer Token পাঠানোর উদাহরণ:
Authorization: Bearer <access_token>এখানে <access_token> হল Bearer Token যা প্রাপ্ত হয়েছে।
Bearer Token এর বৈশিষ্ট্য:
- সহজ এবং সরল: Bearer Token ব্যবহার করতে খুবই সহজ, কারণ এটি শুধুমাত্র একটি টোকেন স্ট্রিং যা API রিকোয়েস্টে পাঠানো হয়।
- নিরাপত্তা: Bearer Token সুরক্ষিতভাবে HTTPS মাধ্যমে পাঠানো উচিত, কারণ যদি এটি HTTP এর মাধ্যমে পাঠানো হয়, তবে টোকেনটি সহজেই চুরি হতে পারে।
- সীমিত সময়ের জন্য বৈধ: Bearer Token সাধারণত একটি নির্দিষ্ট সময়ের জন্য বৈধ থাকে এবং তারপরে এক্সপায়ার হয়ে যায়।
2. JWT (JSON Web Token)
JWT হলো একটি স্ট্যান্ডার্ড যা JSON অবজেক্ট হিসেবে তথ্য সংরক্ষণ এবং নিরাপদভাবে এক্সচেঞ্জ করতে ব্যবহৃত হয়। এটি একটি URL-safe, Base64-encoded স্ট্রিং যা দুটি পক্ষের মধ্যে সুরক্ষিতভাবে তথ্য আদান-প্রদান করতে ব্যবহৃত হয়।
JWT এর স্ট্রাকচার:
JWT তিনটি অংশে বিভক্ত:
Header (হেডার):
- হেডারটি সাধারণত দুটি অংশে থাকে:
- alg: যে এলগরিদম দিয়ে সাইন করা হয়েছে (যেমন HMAC SHA256, RSA ইত্যাদি)।
- typ: সাধারণত "JWT"।
উদাহরণ:
{ "alg": "HS256", "typ": "JWT" }- হেডারটি সাধারণত দুটি অংশে থাকে:
Payload (পেলোড):
- Payload টোকেনের মূল তথ্য ধারণ করে। এটি সাধারণত Claims নামে পরিচিত। Claims হতে পারে:
- Registered Claims: যেমন
iss(issuer),exp(expiry),sub(subject) ইত্যাদি। - Public Claims: সাধারণত উন্মুক্ত ডেটা।
- Private Claims: ক্লায়েন্টের জন্য নির্দিষ্ট ডেটা।
- Registered Claims: যেমন
উদাহরণ:
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }- Payload টোকেনের মূল তথ্য ধারণ করে। এটি সাধারণত Claims নামে পরিচিত। Claims হতে পারে:
Signature (সিগনেচার):
- JWT এর সিগনেচার অংশ টোকেনের স্বচ্ছতা এবং অখণ্ডতা নিশ্চিত করে। সিগনেচার তৈরি করতে, হেডার এবং পেলোড Base64Url এ এনকোড করা হয় এবং সেগুলির সাথে সিক্রেট কী ব্যবহার করে একটি হ্যাশ ফাংশন চালানো হয়।
উদাহরণ:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
JWT এর স্ট্রাকচার উদাহরণ:
একটি সম্পূর্ণ JWT তিনটি অংশে বিভক্ত থাকে, যা একটি পিরিয়ড (".") দ্বারা আলাদা করা হয়:
<base64Url-encoded header>.<base64Url-encoded payload>.<base64Url-encoded signature>উদাহরণ:
eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJzdWIiOiAiMTIzNDU2Nzg5MCIsICJuYW1lIjogIkpvaG4gRG9lIiwgImlhdCI6IDE1MTYyMzkwMjJ9.O6D6v6Up8vKK6Yd0gH63gqB9Fz-0XggtqTRlFdAfyXwJWT এর বৈশিষ্ট্য:
- স্বতন্ত্র এবং সুরক্ষিত: JWT নিজেই তথ্য ধারণ করে এবং সিগনেচার দিয়ে নিরাপদ থাকে, তাই এটি মধ্যবর্তী কোন সার্ভার ছাড়াই তথ্য প্রমাণীকরণে ব্যবহার করা যায়।
- সহজ এবং দ্রুত: এটি URL-safe এবং কমপ্লেক্স কোন ডেটা স্টোরেজ ছাড়াই API রিকোয়েস্টে ব্যবহার করা যেতে পারে।
- স্টেটলেস: JWT-তে কোনো স্টোরেজ প্রয়োজন হয় না, কারণ এটি সমস্ত তথ্য এনকোড করে এবং এতে কোন সেশনের তথ্য রাখার প্রয়োজন হয় না।
Bearer Token vs JWT
| বৈশিষ্ট্য | Bearer Token | JWT |
|---|---|---|
| স্ট্রাকচার | একটি একক স্ট্রিং টোকেন | তিনটি অংশে বিভক্ত: Header, Payload, Signature |
| প্রমাণীকরণ | সরাসরি অ্যাক্সেস টোকেন ব্যবহার করা হয় | সিগনেচার দ্বারা নিরাপত্তা নিশ্চিত করা হয় |
| নিরাপত্তা | HTTPS প্রোটোকল দ্বারা সুরক্ষিত | সিগনেচারের মাধ্যমে সুরক্ষিত |
| স্টেটলেস | স্টেটলেস নয় | স্টেটলেস, কোনো স্টোরেজ প্রয়োজন হয় না |
| ব্যবহার | সাধারণত অ্যাক্সেস টোকেন হিসাবে ব্যবহৃত | তথ্য এবং স্বাক্ষরের জন্য ব্যবহৃত |
সারাংশ
Bearer Token একটি সরল এবং সহজ টোকেন ফরম্যাট যা সাধারণত OAuth 2.0-এ ব্যবহৃত হয়, যেখানে একক স্ট্রিং হিসেবে টোকেন পাঠানো হয়। এটি নিরাপদ হতে হলে HTTPS এর মাধ্যমে পাঠানো উচিত। অন্যদিকে, JWT (JSON Web Token) একটি স্ট্যান্ডার্ড ফরম্যাট যা তিনটি অংশে বিভক্ত থাকে এবং এর সিগনেচারের মাধ্যমে নিরাপত্তা নিশ্চিত করা হয়। JWT সাধারণত সুরক্ষিত তথ্য এক্সচেঞ্জ করতে ব্যবহৃত হয় এবং এটি স্টেটলেস, URL-safe এবং সিগনেচারের মাধ্যমে নিরাপদ।
Read more