OAuth 2.0 একটি সুরক্ষিত অথেনটিকেশন এবং অথোরাইজেশন প্রোটোকল, যা ব্যবহারকারীদের তাদের পাসওয়ার্ড শেয়ার না করে তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিকে তাদের তথ্য অ্যাক্সেস করার অনুমতি দেয়। এটি একাধিক অ্যাপ্লিকেশন এবং প্ল্যাটফর্মের মধ্যে নিরাপদ ডেটা শেয়ারিং নিশ্চিত করতে ব্যবহৃত হয় এবং বর্তমান ওয়েব ও মোবাইল অ্যাপ্লিকেশনে নিরাপত্তার একটি গুরুত্বপূর্ণ অংশ হয়ে দাঁড়িয়েছে। OAuth 2.0-এর মৌলিক ধারণা এবং উপাদানগুলি বুঝতে সাহায্য করবে, যাতে আপনি প্রোটোকলটির কার্যক্রম এবং কার্যকারিতা আরও ভালোভাবে বুঝতে পারেন।
1. OAuth 2.0 এর উদ্দেশ্য
OAuth 2.0 এর প্রধান উদ্দেশ্য হলো একটি নিরাপদ অথেনটিকেশন এবং অথোরাইজেশন ব্যবস্থা তৈরি করা, যা ব্যবহারকারীদের তাদের পাসওয়ার্ড তৃতীয় পক্ষের অ্যাপ্লিকেশনে শেয়ার না করে কেবলমাত্র নির্দিষ্ট অনুমতি (অ্যাক্সেস) প্রদান করতে সক্ষম হয়। উদাহরণস্বরূপ, একটি তৃতীয় পক্ষের অ্যাপ্লিকেশন (যেমন, একটি টু-ডু অ্যাপ) গুগল ক্যালেন্ডারের ডেটা অ্যাক্সেস করতে পারে, কিন্তু গুগল অ্যাকাউন্টের পাসওয়ার্ড ছাড়া।
2. OAuth 2.0 এর মূল উপাদান
OAuth 2.0 এর কার্যকারিতা মূলত কিছু গুরুত্বপূর্ণ উপাদানকে কেন্দ্র করে। এই উপাদানগুলি নিম্নরূপ:
1. Resource Owner (রিসোর্স মালিক)
- এটি সেই ব্যক্তি বা সত্ত্বা যার রিসোর্স বা ডেটা অ্যাক্সেস করতে হবে, যেমন একটি ব্যবহারকারী।
- রিসোর্স মালিকই তার ডেটা শেয়ারের জন্য তৃতীয় পক্ষের অ্যাপ্লিকেশনকে অনুমতি প্রদান করে।
2. Client (ক্লায়েন্ট)
- এটি তৃতীয় পক্ষের অ্যাপ্লিকেশন যা রিসোর্সের অ্যাক্সেস চায়।
- উদাহরণস্বরূপ, একটি ফেসবুক অ্যাপ, একটি টু-ডু অ্যাপ্লিকেশন বা একটি থার্ড-পার্টি API।
3. Authorization Server (অথোরাইজেশন সার্ভার)
- এটি সেই সার্ভার যা ব্যবহারকারীর অথেনটিকেশন করে এবং Access Token প্রদান করে।
- Authorization Server নিশ্চিত করে যে ব্যবহারকারী অনুমোদন দিয়েছেন, এবং এর মাধ্যমে ক্লায়েন্ট অ্যাপ্লিকেশনকে অ্যাক্সেস টোকেন প্রদান করা হয়।
4. Resource Server (রিসোর্স সার্ভার)
- এটি সেই সার্ভার যা রিসোর্স হোস্ট করে (যেমন ব্যবহারকারীর ডেটা) এবং শুধু অনুমোদিত ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে অ্যাক্সেস প্রদান করে।
- রিসোর্স সার্ভার মূলত একটি সিস্টেম যা টোকেন যাচাই করে এবং অনুমোদিত অ্যাক্সেস প্রদান করে।
5. Access Token (অ্যাক্সেস টোকেন)
- এটি একটি নিরাপদ এবং সীমিত সময়ের জন্য বৈধ একটি চাবি, যা ক্লায়েন্ট অ্যাপ্লিকেশনকে রিসোর্স অ্যাক্সেস করতে সাহায্য করে।
- অ্যাক্সেস টোকেন ব্যবহারকারী বা ক্লায়েন্ট অ্যাপ্লিকেশনের পক্ষ থেকে Resource Server-এ রিসোর্স অ্যাক্সেস করার জন্য প্রদান করা হয়।
6. Refresh Token (রিফ্রেশ টোকেন)
- Refresh Token-এর মাধ্যমে একটি নতুন Access Token তৈরি করা যায়, যখন পুরনো টোকেনের মেয়াদ শেষ হয়ে যায়।
- এটি নিরাপদভাবে Access Token পুনরুদ্ধারের জন্য ব্যবহৃত হয় এবং একাধিক রিকোয়েস্টের জন্য ক্লায়েন্ট অ্যাপ্লিকেশনকে একাধিক বার অথেনটিকেট করতে সাহায্য করে।
3. OAuth 2.0 এর কাজের প্রবাহ (Flow)
OAuth 2.0-এ কয়েকটি ভিন্ন প্রবাহ রয়েছে, যার মাধ্যমে অ্যাপ্লিকেশনগুলি ব্যবহারকারীর তথ্য অ্যাক্সেস করতে পারে। সবচেয়ে সাধারণ প্রবাহগুলি হলো:
1. Authorization Code Grant
- এই প্রবাহটি মূলত ওয়েব অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয়, যেখানে একটি Authorization Code ব্যবহার করে অ্যাক্সেস টোকেন সংগ্রহ করা হয়।
- সাধারণত এটি একটি Secure Flow হিসাবে ব্যবহৃত হয় কারণ এখানে একটি কোড জেনারেট হয়, যা পরে Access Token এ রূপান্তরিত হয়।
2. Implicit Grant
- এটি ক্লায়েন্ট সাইড অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয়, যেখানে অ্যাক্সেস টোকেন সরাসরি প্রদান করা হয়।
- এটি দ্রুত এবং সহজ হলেও নিরাপত্তার ক্ষেত্রে কিছুটা কম সুরক্ষিত হতে পারে, কারণ টোকেন সরাসরি ব্রাউজারে প্রেরিত হয়।
3. Password Credentials Grant
- এই প্রবাহে, ব্যবহারকারীর পাসওয়ার্ড সরাসরি ক্লায়েন্ট অ্যাপ্লিকেশনে পাঠানো হয়। এটি সাধারণত অভ্যন্তরীণ অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয় যেখানে ক্লায়েন্টটি বিশ্বাসযোগ্য থাকে।
4. Client Credentials Grant
- এই প্রবাহটি সার্ভিস-টু-সার্ভিস অথোরাইজেশন জন্য ব্যবহৃত হয়, যেখানে ক্লায়েন্ট অ্যাপ্লিকেশন সরাসরি অ্যাক্সেস পেতে পারে একটি রিসোর্সের জন্য, যা কোন ব্যবহারকারী সম্পর্কিত নয়।
- এখানে কোনও ব্যবহারকারীর পাসওয়ার্ড বা তথ্য অন্তর্ভুক্ত করা হয় না, বরং ক্লায়েন্ট অ্যাপ্লিকেশন নিজেই অথেনটিকেট হয়।
4. OAuth 2.0 এর সুবিধা
- নিরাপত্তা: OAuth 2.0 ব্যবহারকারীদের পাসওয়ার্ড তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির সাথে শেয়ার না করেই তাদের রিসোর্সের অ্যাক্সেস দেয়।
- কমপ্লেক্সিটি কমানো: এটি একাধিক অ্যাপ্লিকেশনের জন্য সহজে কনফিগারযোগ্য এবং একাধিক ধরনের প্রবাহ প্রদান করে।
- স্কোপ এবং অনুমতি: ব্যবহারকারী নির্দিষ্ট স্কোপ এবং অনুমতির মাধ্যমে তাদের ডেটাতে অ্যাক্সেস সীমিত করতে পারেন।
- Single Sign-On (SSO): একবার লগ ইন করলে, ব্যবহারকারী অন্যান্য সিস্টেমেও লগ ইন থাকতে পারেন।
- Refresh Tokens: দীর্ঘ সময় পর্যন্ত অ্যাক্সেস টোকেন রিফ্রেশ করতে Refresh Tokens ব্যবহার করা যায়।
সারাংশ
OAuth 2.0 একটি আধুনিক অথেনটিকেশন এবং অথোরাইজেশন প্রোটোকল যা ব্যবহারকারীদের তাদের তথ্য শেয়ার না করে তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিকে নির্দিষ্ট রিসোর্স অ্যাক্সেস করার অনুমতি দেয়। এটি বিভিন্ন অ্যাপ্লিকেশন এবং প্ল্যাটফর্মের মধ্যে নিরাপদে ডেটা শেয়ার করতে সাহায্য করে এবং এটি ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে সহজ, সুরক্ষিত ও নিয়ন্ত্রিত অ্যাক্সেস প্রদান করার জন্য তৈরি করা হয়েছে।
Authorization এবং Authentication দুটি গুরুত্বপূর্ণ নিরাপত্তা প্রক্রিয়া, তবে এগুলোর উদ্দেশ্য এবং কার্যকরী পদ্ধতি আলাদা। তারা একে অপরের সাথে সম্পর্কিত, কিন্তু ভিন্ন ভিন্ন কাজ করে। নিচে তাদের মধ্যে পার্থক্য আলোচনা করা হলো।
1. Authentication (অথেনটিকেশন)
অথেনটিকেশন হচ্ছে ব্যবহারকারীর পরিচয় যাচাই করার প্রক্রিয়া। অর্থাৎ, এটি নিশ্চিত করে যে, ব্যবহারকারী যে দাবী করছে, সেটি আসলেই সঠিক কিনা। এটি যাচাই করে ব্যবহারকারী কেমন ধরণের (যেমন ইউজারনেম এবং পাসওয়ার্ড) প্রমাণ প্রদান করছেন এবং সেটা সঠিক কিনা।
উদাহরণ:
- আপনি একটি ওয়েবসাইটে লগইন করার সময় ইউজারনেম এবং পাসওয়ার্ড প্রদান করেন। ওয়েবসাইটটি যাচাই করে দেখবে আপনি যে ইউজারনেম ও পাসওয়ার্ড দিয়েছেন, তা সঠিক কিনা। এটি হচ্ছে অথেনটিকেশন প্রক্রিয়া।
মূল বৈশিষ্ট্য:
- ব্যবহারকারীর পরিচয় যাচাই করা।
- এটি "Who are you?" (আপনি কে?) প্রশ্নের উত্তর দেয়।
- ইউজারনেম, পাসওয়ার্ড, ফিঙ্গারপ্রিন্ট, ফেস রিকগনিশন ইত্যাদি যাচাই করা হয়।
2. Authorization (অথোরাইজেশন)
অথোরাইজেশন হচ্ছে এটি নির্ধারণের প্রক্রিয়া যে, ব্যবহারকারী কোন সিস্টেমের বা ডেটার মধ্যে অ্যাক্সেস করতে পারবে। অর্থাৎ, এটি নিশ্চিত করে যে, একবার ব্যবহারকারী সঠিকভাবে প্রমাণিত (অথেনটিকেট) হলে, তাকে কোন পরিষেবা বা ডেটা অ্যাক্সেস করতে দেওয়া হবে কিনা।
উদাহরণ:
- আপনি যদি একটি অ্যাপ্লিকেশনে লগইন করেন এবং সেখানে আপনার একটি অ্যাকাউন্ট থেকে ডেটা অ্যাক্সেস করার অনুমতি দেওয়া হয়, তবে সেই অনুমতি প্রদান এবং অ্যাক্সেস দেওয়া হচ্ছে অথোরাইজেশন।
মূল বৈশিষ্ট্য:
- ব্যবহারকারীর অ্যাক্সেস অনুমতি বা নিষেধ।
- এটি "What can you do?" (আপনি কী করতে পারবেন?) প্রশ্নের উত্তর দেয়।
- স্কোপ, রোল, পারমিশন ইত্যাদি দ্বারা নির্ধারিত হয়।
পার্থক্য (Differences)
| বিষয় | Authentication (অথেনটিকেশন) | Authorization (অথোরাইজেশন) |
|---|---|---|
| উদ্দেশ্য | ব্যবহারকারীর পরিচয় যাচাই করা। | ব্যবহারকারীর অনুমতি বা অ্যাক্সেস নির্ধারণ করা। |
| প্রশ্ন | "Who are you?" (আপনি কে?) | "What can you do?" (আপনি কী করতে পারবেন?) |
| কাজ | ব্যবহারকারীর পরিচয় নিশ্চিত করা (যেমন ইউজারনেম এবং পাসওয়ার্ড)। | সিস্টেমে অ্যাক্সেস অনুমতি দেওয়া বা নির্ধারণ করা। |
| ধরণ | সাধারণত ব্যক্তিগত প্রমাণীকরণ যেমন ইউজারনেম, পাসওয়ার্ড, ফিঙ্গারপ্রিন্ট। | সাধারণত রোল, স্কোপ, বা পারমিশন এর মাধ্যমে অ্যাক্সেস নির্ধারণ। |
| প্রক্রিয়া | ব্যবহারকারী লগইন করার সময় এটি প্রথমে ঘটে। | অথেনটিকেশন সফল হলে, তার পরে ঘটে। |
| উদাহরণ | ইউজারনেম এবং পাসওয়ার্ড দিয়ে লগইন করা। | ব্যবহারকারীকে কিছু রিসোর্স অ্যাক্সেস করতে অনুমতি দেওয়া। |
সারসংক্ষেপ
- অথেনটিকেশন হলো ব্যবহারকারীর পরিচয় যাচাই করা (আপনি কে?), যখন অথোরাইজেশন হলো ব্যবহারকারীকে নির্দিষ্ট রিসোর্স বা অ্যাক্সেসের অনুমতি প্রদান করা (আপনি কী করতে পারবেন?)।
- Authentication নিশ্চিত করে যে ব্যবহারকারী আসলেই সেই ব্যক্তি কিনা, এবং Authorization নিশ্চিত করে যে, সেই ব্যক্তি কী কী কাজ করতে পারবে।
- Authentication সাধারণত ইউজারনেম এবং পাসওয়ার্ডের মাধ্যমে ঘটে, কিন্তু Authorization সাধারণত রোল বা স্কোপের মাধ্যমে নির্ধারিত হয়।
OAuth 2.0 প্রোটোকলে মোট চারটি প্রধান উপাদান রয়েছে, যা একে কার্যকরী ও নিরাপদ করে তোলে। এগুলি হলো Resource Owner, Client, Authorization Server, এবং Resource Server। প্রতিটি উপাদান OAuth 2.0-এর একটি গুরুত্বপূর্ণ ভূমিকা পালন করে এবং একে একটি কার্যকর অথেনটিকেশন ও অথোরাইজেশন সিস্টেম হিসেবে কাজ করতে সহায়ক করে। চলুন, প্রতিটি উপাদানের ভূমিকা বিস্তারিতভাবে দেখি।
1. Resource Owner (রিসোর্স মালিক)
ভূমিকা:
Resource Owner (রিসোর্স মালিক) হল সেই ব্যক্তি বা সত্ত্বা যার রিসোর্স বা তথ্য অ্যাক্সেস করার অনুমতি দেওয়া হচ্ছে। সাধারণত, এটি একজন ব্যবহারকারী, যিনি একটি অ্যাপ্লিকেশন বা সার্ভিসে লগ ইন করার মাধ্যমে তৃতীয় পক্ষের অ্যাপ্লিকেশন বা সিস্টেমকে তার তথ্য অ্যাক্সেস করতে অনুমতি দেন।
ভূমিকার বর্ণনা:
- ব্যবহারকারী: সাধারণত, এটি এমন এক ব্যক্তি যিনি তাদের সোশ্যাল মিডিয়া, ইমেইল, বা অন্য কোন অ্যাকাউন্টের মাধ্যমে তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিতে তথ্য অ্যাক্সেস করার অনুমতি দেন।
- তথ্যের মালিক: Resource Owner হচ্ছে সেই ব্যক্তি যার তথ্য বা রিসোর্সের উপর নিয়ন্ত্রণ রয়েছে, যেমন ব্যক্তিগত তথ্য, ডকুমেন্ট, ফাইল, প্রোফাইল ইত্যাদি।
উদাহরণ:
একটি ব্যবহারকারী যিনি তাদের ফেসবুক প্রোফাইলের তথ্য অ্যাক্সেস করতে অন্য একটি অ্যাপ্লিকেশনকে অনুমতি দেন।
2. Client (ক্লায়েন্ট)
ভূমিকা:
Client (ক্লায়েন্ট) হল সেই অ্যাপ্লিকেশন বা সার্ভিস যা রিসোর্স মালিকের (ব্যবহারকারীর) তথ্য অ্যাক্সেস করতে চায়। এটি ব্যবহারকারীর পক্ষ থেকে অনুমতি প্রাপ্তির জন্য Authorization Server-এর মাধ্যমে রিসোর্সে অ্যাক্সেস পেতে চেষ্টা করে।
ভূমিকার বর্ণনা:
- তৃতীয় পক্ষের অ্যাপ্লিকেশন: ক্লায়েন্ট সাধারণত কোনো তৃতীয় পক্ষের অ্যাপ্লিকেশন হয়ে থাকে, যেমন একটি মোবাইল অ্যাপ্লিকেশন, ওয়েব অ্যাপ্লিকেশন, অথবা API ক্লায়েন্ট, যা অন্য কোনও সিস্টেম বা সার্ভিসে নির্দিষ্ট ডেটা অ্যাক্সেস করার চেষ্টা করে।
- অ্যাক্সেস টোকেন: ক্লায়েন্ট এই অ্যাক্সেস পেতে Authorization Server-এ রিকোয়েস্ট পাঠায় এবং অ্যাক্সেস টোকেন লাভ করে। এই টোকেনের মাধ্যমে, এটি Resource Server থেকে নির্দিষ্ট রিসোর্স অ্যাক্সেস করতে পারে।
উদাহরণ:
ফেসবুক লগিন ব্যবহার করে একটি থার্ড-পার্টি অ্যাপ্লিকেশন (যেমন, একটি গেম অ্যাপ্লিকেশন) ব্যবহারকারীকে তাদের ফেসবুক প্রোফাইলের ডেটা অ্যাক্সেস করতে সক্ষম হয়।
3. Authorization Server (অথোরাইজেশন সার্ভার)
ভূমিকা:
Authorization Server (অথোরাইজেশন সার্ভার) হল সেই সার্ভার যা Resource Owner থেকে অনুমতি গ্রহণ করে এবং Client (অ্যাপ্লিকেশন) কে Access Token প্রদান করে। এটি ব্যবহারকারীর অথেনটিকেশন পরিচালনা করে এবং নির্দিষ্ট স্কোপের জন্য অনুমতি প্রদান করে।
ভূমিকার বর্ণনা:
- অথেনটিকেশন এবং অথোরাইজেশন: Authorization Server সাধারণত ব্যবহারকারীর অথেনটিকেশন এবং অনুমতি প্রদান করে। এটি একটি নিরাপদ সার্ভার যা অ্যাক্সেস টোকেন প্রদান করে।
- Access Token প্রদান: ব্যবহারকারী যদি তাদের তথ্য অ্যাক্সেস করতে অনুমতি দেন, তবে Authorization Server একটি অ্যাক্সেস টোকেন তৈরি করে এবং এটি ক্লায়েন্টকে প্রদান করে, যা ব্যবহারকারী বা ক্লায়েন্টকে Resource Server থেকে নির্দিষ্ট রিসোর্স অ্যাক্সেস করতে দেয়।
উদাহরণ:
গুগল OAuth সার্ভার, যেখানে গুগল ব্যবহারকারীকে তার গুগল অ্যাকাউন্টের তথ্য শেয়ার করতে তৃতীয় পক্ষের অ্যাপ্লিকেশনকে অনুমতি দেয় এবং একটি অ্যাক্সেস টোকেন প্রদান করে।
4. Resource Server (রিসোর্স সার্ভার)
ভূমিকা:
Resource Server (রিসোর্স সার্ভার) হল সেই সার্ভার যেখানে রিসোর্স বা তথ্য সংরক্ষিত থাকে এবং এটি Access Token যাচাই করার পর রিসোর্স প্রদান করে। এটি এমন সার্ভার যা ক্লায়েন্ট থেকে প্রাপ্ত অ্যাক্সেস টোকেন যাচাই করে এবং যাচাই সঠিক হলে নির্দিষ্ট তথ্য বা রিসোর্স প্রদান করে।
ভূমিকার বর্ণনা:
- রিসোর্স হোস্টিং: Resource Server হল সেই সার্ভার যা ব্যবহারকারীর তথ্য বা রিসোর্স রাখে, যেমন ফাইল, ডেটাবেস, বা অন্য কোন গুরুত্বপূর্ণ ডেটা।
- অ্যাক্সেস টোকেন যাচাই: Resource Server-এ একটি Access Token পাঠানো হয়, এবং সার্ভারটি নিশ্চিত করে যে এই টোকেনটি বৈধ এবং সঠিক অনুমতি অনুযায়ী রিসোর্সে অ্যাক্সেস প্রদান করা যায় কিনা।
উদাহরণ:
গুগল ড্রাইভ বা ফেসবুক গ্রাফ API, যেখানে একটি তৃতীয় পক্ষের অ্যাপ্লিকেশন যদি গুগল ড্রাইভ বা ফেসবুকের ডেটা অ্যাক্সেস করতে চায়, তবে প্রথমে Authorization Server থেকে অ্যাক্সেস টোকেন গ্রহণ করতে হবে এবং তারপর Resource Server-এ পাঠিয়ে তথ্য গ্রহণ করতে হবে।
সারাংশ
- Resource Owner (রিসোর্স মালিক): সেই ব্যক্তি বা সত্ত্বা যার তথ্য বা রিসোর্স অ্যাক্সেস করার অনুমতি দেওয়া হচ্ছে।
- Client (ক্লায়েন্ট): তৃতীয় পক্ষের অ্যাপ্লিকেশন বা সার্ভিস যা রিসোর্স মালিকের তথ্য অ্যাক্সেস করতে চায়।
- Authorization Server (অথোরাইজেশন সার্ভার): সার্ভার যা ব্যবহারকারীর অনুমতি নিয়ে অ্যাক্সেস টোকেন প্রদান করে।
- Resource Server (রিসোর্স সার্ভার): সার্ভার যা রিসোর্স বা তথ্য সংরক্ষণ করে এবং Access Token যাচাই করার পর তথ্য প্রদান করে।
OAuth 2.0 প্রোটোকলের এই চারটি উপাদান একসাথে কাজ করে একটি নিরাপদ এবং কার্যকরী অথেনটিকেশন ও অথোরাইজেশন সিস্টেম তৈরি করতে।
OAuth 2.0 প্রোটোকলে Access Token এবং Refresh Token দুইটি গুরুত্বপূর্ণ উপাদান। এগুলি একে অপরের পরিপূরক এবং একে অপরের সাথে কাজ করে ব্যবহারকারীর সুরক্ষিত অ্যাক্সেস এবং দীর্ঘমেয়াদী অথেনটিকেশন সিস্টেম নিশ্চিত করতে। নিচে এই দুইটি টোকেনের ভূমিকা এবং তাদের ব্যবহারের প্রক্রিয়া আলোচনা করা হলো।
1. Access Token এর ভূমিকা
Access Token হলো একটি সুরক্ষিত কোড যা একজন ব্যবহারকারী বা ক্লায়েন্ট অ্যাপ্লিকেশনকে তার রিসোর্স (যেমন: ডেটা, ফাইল, API) অ্যাক্সেস করার অনুমতি দেয়। এটি মূলত একটি স্বীকৃতি পত্র যা একটি নির্দিষ্ট সময় পর্যন্ত বৈধ থাকে এবং ব্যবহারকারী বা অ্যাপ্লিকেশনকে তাদের অনুমোদিত তথ্য অ্যাক্সেস করতে সাহায্য করে।
Access Token এর ভূমিকা:
- রিসোর্স অ্যাক্সেস: Access Token ব্যবহারকারী বা ক্লায়েন্ট অ্যাপ্লিকেশনকে একটি নির্দিষ্ট সার্ভিস বা রিসোর্স সার্ভারে অ্যাক্সেস দেয়। উদাহরণস্বরূপ, ব্যবহারকারীর গুগল প্রোফাইল ডেটা বা ফেসবুক ফিড অ্যাক্সেস করার জন্য Access Token প্রয়োজন।
- সীমিত সময়ের জন্য বৈধতা: Access Token সাধারণত সীমিত সময়ের জন্য বৈধ থাকে (যেমন ১ ঘন্টা বা ২ ঘণ্টা)। এর ফলে, কোনো অ্যাক্সেস টোকেন চুরি হলে, সেটির মেয়াদ শেষ হয়ে গেলে তা আর ব্যবহার করা যাবে না।
- নির্দিষ্ট স্কোপ: Access Token এর মাধ্যমে যে রিসোর্স অ্যাক্সেস করা যায়, সেটি নির্দিষ্ট স্কোপের মধ্যে সীমাবদ্ধ থাকে। উদাহরণস্বরূপ, এটি শুধুমাত্র পঠন (read) অনুমতি দিতে পারে, অথবা পঠন এবং লেখন (write) অনুমতি দিতে পারে।
- HTTPS ব্যবহারের মাধ্যমে সুরক্ষা: Access Token সাধারণত HTTPS প্রোটোকল ব্যবহার করে পাঠানো হয়, যাতে ম্যান ইন দ্য মিডল অ্যাটাক (MITM) থেকে রক্ষা করা যায়।
Access Token উদাহরণ:
একটি API কল করার সময়, Access Token প্রেরণ করা হয় যাতে সার্ভার জানে যে ক্লায়েন্টটি অনুমোদিত।
GET /user/profile HTTP/1.1
Host: api.example.com
Authorization: Bearer <access_token>2. Refresh Token এর ভূমিকা
Refresh Token একটি বিশেষ ধরনের টোকেন যা Access Token এর মেয়াদ শেষ হয়ে যাওয়ার পর নতুন Access Token প্রাপ্তি নিশ্চিত করতে ব্যবহৃত হয়। Refresh Token সাধারণত Access Token এর সাথে প্রদান করা হয় এবং এটি দীর্ঘমেয়াদী নিরাপত্তা নিশ্চিত করে।
Refresh Token এর ভূমিকা:
- Access Token পুনরুদ্ধার: Access Token সাধারণত সীমিত সময়ের জন্য বৈধ থাকে, তবে Refresh Token ব্যবহার করে নতুন Access Token প্রাপ্তি সম্ভব হয়, যাতে ব্যবহারকারীদের আবার লগইন করতে না হয়।
- দীর্ঘমেয়াদী অথেনটিকেশন: Refresh Token-এর মাধ্যমে ব্যবহারকারীকে পুনরায় লগইন করার ঝামেলা ছাড়াই দীর্ঘ সময় ধরে অ্যাপ্লিকেশন অ্যাক্সেস দেওয়া সম্ভব হয়। এটি ব্যবহারকারীর একটি মসৃণ অভিজ্ঞতা নিশ্চিত করে।
- একাধিক Access Token প্রাপ্তি: Refresh Token সাধারণত একাধিক Access Token প্রাপ্তির জন্য ব্যবহৃত হয় এবং এটি সিস্টেমের অভ্যন্তরীণ ব্যবস্থাপনা সহজ করে।
- সুরক্ষা: Refresh Token নিরাপদে সংরক্ষণ করা হয় এবং এটি সাধারণত ক্লায়েন্ট সাইডে সংরক্ষণ করা হয় না (অথবা এটি নিরাপদভাবে সুরক্ষিত থাকে) যাতে এটি চুরি না হয়।
Refresh Token উদাহরণ:
যখন Access Token এর মেয়াদ শেষ হয়, Refresh Token ব্যবহার করে নতুন Access Token পাওয়া যায়।
POST /oauth/token
Host: api.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&
refresh_token=<refresh_token>&
client_id=<client_id>&
client_secret=<client_secret>Access Token এবং Refresh Token এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Access Token | Refresh Token |
|---|---|---|
| মেয়াদ | স্বল্প সময়ের জন্য (যেমন ১ ঘণ্টা) | দীর্ঘ সময়ের জন্য (দিন বা মাস) |
| উদ্দেশ্য | রিসোর্স অ্যাক্সেস করার অনুমতি প্রদান | নতুন Access Token তৈরি করার জন্য |
| নিরাপত্তা | সীমিত সময়ের জন্য বৈধ; HTTPS দিয়ে নিরাপদ | নিরাপদে সংরক্ষণ করতে হবে |
| ব্যবহার | API বা সিস্টেমের রিসোর্স অ্যাক্সেস করতে | Access Token পুনরুদ্ধার করতে |
| স্কোপ | নির্দিষ্ট স্কোপের মধ্যে সীমাবদ্ধ | শুধুমাত্র Access Token রিফ্রেশ করতে |
সারাংশ
- Access Token ব্যবহারকারী বা ক্লায়েন্ট অ্যাপ্লিকেশনকে নির্দিষ্ট সময়ের জন্য অনুমোদিত রিসোর্স অ্যাক্সেস করার অনুমতি দেয়।
- Refresh Token ব্যবহারকারীকে একটি দীর্ঘ সময় ধরে অনুমোদিত অ্যাক্সেস প্রদান করে এবং Access Token এর মেয়াদ শেষ হলে নতুন Access Token প্রাপ্তির জন্য ব্যবহৃত হয়।
- Access Token এর মাধ্যমে অ্যাক্সেস সরাসরি প্রদান করা হয়, যখন Refresh Token অ্যাক্সেস টোকেন রিফ্রেশ করতে ব্যবহৃত হয়, এবং এটি সিস্টেমের নিরাপত্তা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
OAuth 2.0-এ Scope এবং Permission দুইটি গুরুত্বপূর্ণ ধারণা, যেগুলি ব্যবহারকারীর তথ্য এবং রিসোর্সে অ্যাক্সেস নিয়ন্ত্রণ করতে সহায়ক। এগুলি অ্যাপ্লিকেশনগুলোকে শুধুমাত্র নির্দিষ্ট এবং অনুমোদিত কাজগুলো করার অনুমতি দেয়, এবং ব্যবহারকারীর নিরাপত্তা ও গোপনীয়তা রক্ষা করে।
Scope (স্কোপ)
Scope হল OAuth 2.0-এ ব্যবহৃত একটি পরামিতি যা নির্ধারণ করে যে, কোন রিসোর্স বা ডেটা অ্যাক্সেস করার জন্য ক্লায়েন্ট অ্যাপ্লিকেশনকে কোন অনুমতি দেওয়া হবে। এর মাধ্যমে, আপনি নির্দিষ্ট করতে পারেন কোন অ্যাক্সেস টোকেনটি কোন ধরনের তথ্য বা রিসোর্সের জন্য বৈধ।
Scope এর কাজ:
- নির্দিষ্ট অ্যাক্সেস অনুমোদন: OAuth 2.0-এ scope ব্যবহারকারীকে শুধুমাত্র কিছু নির্দিষ্ট রিসোর্স বা অ্যাকশনে অ্যাক্সেস দেয়। উদাহরণস্বরূপ, গুগল অ্যাকাউন্টের জন্য আপনি শুধুমাত্র email এবং profile রিসোর্স অ্যাক্সেস করতে পারেন, তবে calendar বা contacts অ্যাক্সেস নাও করতে পারেন।
- ডেটার সংরক্ষণ এবং শেয়ারিং: Scope সেট করে দেয় কোন ডেটা বা রিসোর্স অ্যাক্সেস করতে হবে এবং কোন ডেটা অ্যাক্সেস করা যাবে না। যেমন, ব্যবহারকারীর সোশ্যাল মিডিয়া ডেটা বা প্রোফাইল ইত্যাদি।
- ব্যবহারকারীর সম্মতি: ব্যবহারকারী যখন OAuth 2.0 এর মাধ্যমে লগ ইন করেন, তখন তাকে স্কোপের মাধ্যমে ব্যাখ্যা করা হয় যে অ্যাপ্লিকেশনটি কোন ধরনের ডেটা বা রিসোর্স অ্যাক্সেস করতে চাচ্ছে, এবং সে সম্মতি দেওয়ার সুযোগ পায়।
Scope উদাহরণ:
ধরা যাক, একটি গুগল অ্যাপ্লিকেশন profile, email, এবং calendar ডেটা অ্যাক্সেস করতে চায়। OAuth 2.0 অ্যাক্সেস টোকেনের জন্য স্কোপ হবে:
scope=email profile calendarএভাবে, ক্লায়েন্ট অ্যাপ্লিকেশন নির্দিষ্ট রিসোর্সের জন্য অ্যাক্সেস পাবেন এবং এর বাইরে কিছু অ্যাক্সেস করতে পারবেন না।
Permission (অনুমতি)
Permission হল অ্যাপ্লিকেশনের দ্বারা প্রদত্ত access rights বা অধিকার, যা নির্ধারণ করে কিভাবে অ্যাক্সেস টোকেনটি ব্যবহার করে ডেটা শেয়ার বা অ্যাক্সেস করা যাবে। Permission সাধারণত scope অনুযায়ী প্রাপ্ত হয়, তবে এটি আরও স্পষ্ট করে দেয় কোন কার্যক্রম বা কাজ করা যাবে এবং কোনটি নয়।
Permission এর কাজ:
- প্রথমবার অ্যাক্সেসের জন্য অনুমতি: একটি ক্লায়েন্ট অ্যাপ্লিকেশন যখন OAuth 2.0 মাধ্যমে ডেটা বা রিসোর্স অ্যাক্সেসের জন্য আবেদন করে, তখন ব্যবহারকারীকে ওই অ্যাপ্লিকেশনটি কোন ধরনের অ্যাক্সেসের অনুমতি প্রদান করবে তা স্পষ্টভাবে দেখানো হয়। এটি ক্লায়েন্টের কাছে শুধুমাত্র নির্দিষ্ট কার্যক্রমের অনুমতি দেয়।
- অ্যাক্সেস সীমাবদ্ধতা: ক্লায়েন্ট অ্যাপ্লিকেশন শুধুমাত্র নির্দিষ্ট permission অনুযায়ী কাজ করতে পারে, যেমন কেবলমাত্র ডেটা পড়া (read), লেখা (write), বা প্রয়োগ করা (execute) অনুমতি। এটি একটি নিরাপদ এবং সীমিত অ্যাক্সেস প্রোটোকল তৈরি করে।
Permission উদাহরণ:
ধরা যাক, একটি অ্যাপ্লিকেশন Google Drive-এর ফাইল আপলোড করতে চাচ্ছে, তবে তার write permission থাকা প্রয়োজন। গুগল অ্যাপ্লিকেশনটি OAuth 2.0 এর মাধ্যমে আবেদন করলে স্কোপ হতে পারে:
scope=drive.fileএবং সেই অ্যাক্সেস টোকেনটি তখন শুধুমাত্র Google Drive-এর ফাইল আপলোড করার জন্য অনুমতি দেবে।
Scope এবং Permission এর মধ্যে পার্থক্য
- Scope সাধারণত অ্যাক্সেসের ধরণ নির্ধারণ করে, অর্থাৎ কি ধরনের রিসোর্স বা ডেটা অ্যাক্সেস করা যাবে।
- Permission নির্ধারণ করে ব্যবহারকারী বা অ্যাপ্লিকেশনকে কি ধরনের কার্যক্রম করতে অনুমতি দেয়া হবে, যেমন পড়া, লেখা বা সম্পাদনা।
যেহেতু Scope-এর মাধ্যমে অ্যাপ্লিকেশনকে শুধুমাত্র নির্দিষ্ট ডেটা বা রিসোর্স অ্যাক্সেস করতে দেওয়া হয়, সেখানে Permission নির্দিষ্ট করে দেয় যে অ্যাপ্লিকেশনটি কী করতে পারবে (যেমন শুধুমাত্র পড়া, সম্পাদনা ইত্যাদি)।
Scope এবং Permission এর নিরাপত্তায় ভূমিকা
- নিরাপত্তা বৃদ্ধি: Scope এবং Permission এর মাধ্যমে, OAuth 2.0 অ্যাপ্লিকেশনগুলোকে নির্দিষ্ট অনুমতির ভিত্তিতে অ্যাক্সেস প্রদান করে, যা ব্যবহারকারীর গোপনীয়তা এবং নিরাপত্তা রক্ষা করে। উদাহরণস্বরূপ, যদি অ্যাপ্লিকেশনটি শুধুমাত্র ব্যবহারকারীর প্রোফাইল তথ্য চায়, তবে এটি অন্যান্য ডেটা যেমন ইমেইল বা ক্যালেন্ডারের অ্যাক্সেসের জন্য অনুমতি চাইবে না, যা নিরাপত্তার জন্য ভাল।
- অ্যাক্সেস নিয়ন্ত্রণ: একে অপরের থেকে আলাদা স্কোপ এবং পারমিশনের মাধ্যমে, অ্যাপ্লিকেশনগুলি শুধুমাত্র যে তথ্য বা রিসোর্সগুলির জন্য অনুমোদিত তা অ্যাক্সেস করতে পারে, তাই এটি অ্যাক্সেসের সীমাবদ্ধতা প্রদান করে।
সারসংক্ষেপ
- Scope: OAuth 2.0-এ scope হলো অ্যাপ্লিকেশনটির অ্যাক্সেস করার জন্য প্রয়োজনীয় রিসোর্স বা ডেটার একটি নির্দিষ্ট সেট। এটি নির্দেশ করে কোন তথ্য বা রিসোর্স অ্যাক্সেস করা যাবে এবং কোনটি নয়।
- Permission: Permission হলো সেই অনুমতি যা ক্লায়েন্ট অ্যাপ্লিকেশনটি পায় এবং নির্ধারণ করে অ্যাপ্লিকেশনটি কি ধরনের কার্যক্রম বা কাজ করতে পারবে (যেমন পড়া, লেখা, সম্পাদনা)।
এটি একটি শক্তিশালী নিরাপত্তা ফিচার, যা ব্যবহারকারীদের গোপনীয়তা রক্ষা করতে এবং সীমিত অ্যাক্সেসের মাধ্যমে নিরাপদ তথ্য শেয়ারিং নিশ্চিত করতে সাহায্য করে।
Read more