OAuth 2.0 একটি নিরাপদ অথেনটিকেশন এবং অথোরাইজেশন প্রোটোকল যা ব্যবহারকারীর তথ্য তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিকে অ্যাক্সেস করতে অনুমতি দেয়। এটি বিভিন্ন উপাদানের মাধ্যমে কাজ করে, প্রতিটি উপাদান একটি নির্দিষ্ট ভূমিকা পালন করে। নিচে OAuth 2.0-এর প্রধান উপাদানসমূহ আলোচনা করা হলো:
1. Resource Owner (রিসোর্স মালিক)
- বর্ণনা: রিসোর্স মালিক হলো সেই ব্যক্তি বা সত্ত্বা যার রিসোর্স বা তথ্য অ্যাক্সেস করতে হবে, যেমন একটি ব্যবহারকারী।
- ভূমিকা: রিসোর্স মালিক তাদের তথ্যের উপর পূর্ণ নিয়ন্ত্রণ রাখেন এবং তাদের সম্মতি দিয়ে, ক্লায়েন্ট অ্যাপ্লিকেশনকে সেই তথ্য অ্যাক্সেস করার অনুমতি প্রদান করেন।
উদাহরণ: একজন ব্যবহারকারী যিনি তাদের গুগল ড্রাইভের ডেটা অথবা ফেসবুক প্রোফাইলের তথ্য অ্যাক্সেস করতে অনুমতি দেন।
2. Client (ক্লায়েন্ট)
- বর্ণনা: ক্লায়েন্ট হলো সেই অ্যাপ্লিকেশন বা সার্ভিস যা রিসোর্স মালিকের রিসোর্স বা তথ্য অ্যাক্সেস করতে চায়।
- ভূমিকা: ক্লায়েন্ট অ্যাপ্লিকেশন তৃতীয় পক্ষ হিসেবে কাজ করে এবং রিসোর্স মালিকের পক্ষ থেকে একটি অথোরাইজেশন কোড বা অ্যাক্সেস টোকেন পেতে Authorization Server-এ রিকোয়েস্ট পাঠায়। এটি মূলত রিসোর্স সার্ভারে রিসোর্স অ্যাক্সেসের জন্য প্রয়োজনীয় টোকেন বা অনুমতি লাভের জন্য প্রক্রিয়া শুরু করে।
উদাহরণ: একটি তৃতীয় পক্ষের অ্যাপ্লিকেশন যা ফেসবুক বা গুগল অ্যাকাউন্টের তথ্য ব্যবহার করতে চায়।
3. Authorization Server (অথোরাইজেশন সার্ভার)
- বর্ণনা: অথোরাইজেশন সার্ভার হলো সেই সার্ভার যা ব্যবহারকারীর অথেনটিকেশন (authentication) এবং অথোরাইজেশন (authorization) পরিচালনা করে এবং অ্যাক্সেস টোকেন সরবরাহ করে।
- ভূমিকা: এটি রিসোর্স মালিকের পক্ষ থেকে অনুমতি পায় এবং তারপর ক্লায়েন্ট অ্যাপ্লিকেশনকে অ্যাক্সেস টোকেন প্রদান করে, যা পরে রিসোর্স সার্ভারের সাথে যোগাযোগ করতে ব্যবহার হয়। এটি রিসোর্স মালিকের অনুমতি যাচাই করে এবং অননুমোদিত অ্যাক্সেস প্রতিরোধ করে।
উদাহরণ: গুগলের OAuth 2.0 অথোরাইজেশন সার্ভার যা ব্যবহারকারীর অ্যাক্সেস টোকেন প্রদান করে।
4. Resource Server (রিসোর্স সার্ভার)
- বর্ণনা: রিসোর্স সার্ভার হলো সেই সার্ভার যা রিসোর্স বা তথ্য হোস্ট করে, এবং এই তথ্য অ্যাক্সেস করার জন্য বৈধ অ্যাক্সেস টোকেন চায়।
- ভূমিকা: রিসোর্স সার্ভারটি ক্লায়েন্ট অ্যাপ্লিকেশন থেকে অ্যাক্সেস টোকেন গ্রহণ করে এবং যাচাই করে। যদি টোকেন বৈধ হয়, তবে এটি রিসোর্স বা তথ্য প্রদান করে। এটি নিশ্চিত করে যে শুধুমাত্র অনুমোদিত অ্যাপ্লিকেশনগুলোই রিসোর্স অ্যাক্সেস করতে পারে।
উদাহরণ: গুগল ড্রাইভ, গুগল কন্টাক্টস বা ফেসবুক প্রোফাইল সার্ভার যা অনুমোদিত ক্লায়েন্ট অ্যাপ্লিকেশনের মাধ্যমে ডেটা প্রদান করে।
5. Access Token (অ্যাক্সেস টোকেন)
- বর্ণনা: অ্যাক্সেস টোকেন একটি নিরাপত্তা প্রমাণপত্র যা ক্লায়েন্ট অ্যাপ্লিকেশনকে রিসোর্স সার্ভারের রিসোর্স অ্যাক্সেস করার অনুমতি দেয়।
- ভূমিকা: একবার অ্যাক্সেস টোকেন পেলে, এটি রিসোর্স সার্ভারের কাছে অ্যাক্সেস রিকোয়েস্ট পাঠাতে ব্যবহৃত হয়। টোকেনটির মেয়াদ সীমিত থাকে এবং এটি ব্যবহারকারীর নির্দিষ্ট অনুমতির পরিসরে কাজ করে।
উদাহরণ: একটি JSON বা JWT টোকেন যা ক্লায়েন্ট অ্যাপ্লিকেশনকে গুগল ড্রাইভ থেকে তথ্য অ্যাক্সেস করার অনুমতি দেয়।
6. Refresh Token (রিফ্রেশ টোকেন)
- বর্ণনা: রিফ্রেশ টোকেন একটি টোকেন যা এক্সপায়ার্ড অ্যাক্সেস টোকেনের পরিবর্তে নতুন অ্যাক্সেস টোকেন পাওয়ার জন্য ব্যবহার করা হয়।
- ভূমিকা: যখন অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে যায়, তখন ক্লায়েন্ট অ্যাপ্লিকেশন রিফ্রেশ টোকেন ব্যবহার করে নতুন অ্যাক্সেস টোকেন পেতে Authorization Server-এ রিকোয়েস্ট পাঠাতে পারে, যাতে ক্লায়েন্ট নতুন টোকেন পেতে পারে এবং পুনরায় তথ্য অ্যাক্সেস করতে পারে।
উদাহরণ: গুগল এবং ফেসবুকের API গুলোতে ব্যবহারকারীর অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেলে রিফ্রেশ টোকেন দিয়ে নতুন টোকেন নেওয়া হয়।
7. Scope (স্কোপ)
- বর্ণনা: স্কোপ হলো একটি অ্যাপ্লিকেশনের জন্য অনুমোদিত অ্যাক্সেসের সীমা বা পরিসীমা। এটি নির্ধারণ করে যে অ্যাপ্লিকেশনটি কোন ধরনের রিসোর্স অ্যাক্সেস করতে পারে।
- ভূমিকা: স্কোপ ব্যবহারকারীকে তাদের তথ্যের প্রতি অধিক নিয়ন্ত্রণ দিতে সাহায্য করে, যেমন একটি অ্যাপ্লিকেশন যদি কেবল ব্যবহারকারীর ফটো দেখতে চায় তবে স্কোপটি কেবল "read" হতে পারে। এর মাধ্যমে ক্লায়েন্ট অ্যাপ্লিকেশনকে শুধুমাত্র নির্দিষ্ট অনুমতি দেওয়া হয়।
উদাহরণ: একটি স্কোপ হতে পারে "read_contacts" যা একটি অ্যাপ্লিকেশনকে ব্যবহারকারীর কন্টাক্ট ডেটা পড়ার অনুমতি দেয়।
সারাংশ
OAuth 2.0 একটি শক্তিশালী অথেনটিকেশন এবং অথোরাইজেশন প্রোটোকল যা বিভিন্ন উপাদান দিয়ে কাজ করে। এই উপাদানগুলো একে অপরের সঙ্গে ইন্টারঅ্যাক্ট করে এবং নিরাপদ ও কার্যকরভাবে রিসোর্স অ্যাক্সেস করার জন্য ব্যবহৃত হয়। এর মাধ্যমে ব্যবহারকারী তাদের পাসওয়ার্ড শেয়ার না করেই তাদের তথ্যের অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন।
Client এবং Server হল কম্পিউটিং এর দুটি মৌলিক উপাদান, যা একটি নেটওয়ার্কে একে অপরের সাথে যোগাযোগ করে। তারা সাধারণত ক্লায়েন্ট-সার্ভার আর্কিটেকচারের অংশ হিসেবে কাজ করে, যেখানে দুটি পক্ষ (Client এবং Server) একে অপরের সাথে তথ্য বিনিময় করে। নিচে তাদের ভূমিকা বিস্তারিতভাবে আলোচনা করা হলো:
Client (ক্লায়েন্ট)
Client হল সেই অ্যাপ্লিকেশন বা ডিভাইস যা ব্যবহারকারী বা প্রোগ্রাম দ্বারা পরিচালিত হয় এবং এটি সার্ভার থেকে সেবা বা ডেটা চেয়ে থাকে। ক্লায়েন্ট সাধারণত কোনও ব্যবহারকারীর উপযুক্ত ইন্টারফেস সরবরাহ করে এবং সেই ব্যবহৃত সেবা বা ডেটা গ্রহণ করে।
ক্লায়েন্টের ভূমিকা:
- রিকোয়েস্ট পাঠানো (Requesting Data/Service):
- ক্লায়েন্ট সার্ভারের কাছে কোনও নির্দিষ্ট তথ্য বা সেবা চেয়ে রিকোয়েস্ট পাঠায়। যেমন, ওয়েব ব্রাউজার গুগলে সার্চ করতে ক্লায়েন্ট হিসেবে কাজ করে, যেখানে ব্রাউজার সার্ভারের কাছে রিকোয়েস্ট পাঠায় এবং সার্ভার এর উত্তর ফেরত পাঠায়।
- ইউজার ইন্টারফেস (User Interface):
- ক্লায়েন্ট ব্যবহারকারীর সাথে সরাসরি যোগাযোগ করে এবং সাধারণত একটি গ্রাফিকাল ইউজার ইন্টারফেস (GUI) প্রদান করে, যেখানে ব্যবহারকারী ইনপুট প্রদান করতে পারে এবং ফলাফল দেখতে পারে। উদাহরণস্বরূপ, ওয়েব ব্রাউজার, মোবাইল অ্যাপ্লিকেশন ইত্যাদি।
- সার্ভিস ব্যবহারের জন্য অনুমতি চাওয়া (Requesting Permissions):
- ক্লায়েন্ট সার্ভারের কাছ থেকে সেবা বা ডেটা অ্যাক্সেস করতে অনুমতি চায়, বিশেষ করে OAuth 2.0 প্রোটোকলে যেখানে ব্যবহারকারী সেবা ব্যবহারের অনুমতি দেয়।
- প্রতিক্রিয়া গ্রহণ (Receiving Responses):
- সার্ভার ক্লায়েন্টের রিকোয়েস্টের উত্তর প্রেরণ করে। এই প্রতিক্রিয়া সাধারণত তথ্য বা ডেটা যা ক্লায়েন্ট পরবর্তী ব্যবহারের জন্য ব্যবহার করতে পারে।
ক্লায়েন্টের উদাহরণ:
- ওয়েব ব্রাউজার (যেমন: গুগল ক্রোম, মজিলা ফায়ারফক্স)
- মোবাইল অ্যাপ্লিকেশন (যেমন: ফেসবুক, টুইটার, গুগল ম্যাপ)
- ডেস্কটপ অ্যাপ্লিকেশন (যেমন: মাইক্রোসফট ওয়ার্ড, স্পটিফাই)
Server (সার্ভার)
Server হল সেই সফটওয়্যার বা হার্ডওয়্যার সিস্টেম যা ক্লায়েন্টের কাছ থেকে রিকোয়েস্ট গ্রহণ করে এবং তার প্রয়োজনীয় তথ্য বা সেবা প্রদান করে। সার্ভার সাধারণত কেন্দ্রীয়ভাবে ডেটা সংরক্ষণ করে এবং ক্লায়েন্টকে তথ্য বা সেবা প্রদান করে।
সার্ভারের ভূমিকা:
- রিকোয়েস্ট প্রক্রিয়া (Processing Requests):
- সার্ভার ক্লায়েন্টের পাঠানো রিকোয়েস্ট গ্রহণ করে এবং তা প্রক্রিয়া করে। এটি সঠিক তথ্য খুঁজে বের করার জন্য ডাটাবেস বা অন্যান্য সিস্টেম থেকে ডেটা এক্সেস করতে পারে। উদাহরণস্বরূপ, ওয়েব সার্ভার ক্লায়েন্টের কাছে একটি ওয়েব পেজ পাঠানোর আগে ডাটাবেস থেকে প্রাসঙ্গিক তথ্য অনুরোধ করতে পারে।
- তথ্য সরবরাহ (Providing Data):
- সার্ভার ক্লায়েন্টের রিকোয়েস্টের ভিত্তিতে প্রয়োজনীয় তথ্য সরবরাহ করে। এটি পৃষ্ঠা, ছবি, ভিডিও, ডেটাবেস রেকর্ড ইত্যাদি হতে পারে।
- সার্ভিস প্রদান (Providing Services):
- সার্ভার সাধারণত একটি বা একাধিক সেবা সরবরাহ করে। উদাহরণস্বরূপ, একটি ইমেল সার্ভার ইমেল পাঠানো বা গ্রহণ করার সেবা সরবরাহ করে, একটি ওয়েব সার্ভার ওয়েব পেজ প্রদর্শন করে, এবং একটি ফাইল সার্ভার ফাইল সংরক্ষণ বা শেয়ার করে।
- নিরাপত্তা এবং অনুমোদন (Security and Authorization):
- সার্ভার ক্লায়েন্টের রিকোয়েস্ট যাচাই করে এবং প্রয়োজনীয় নিরাপত্তা প্রক্রিয়া (যেমন পাসওয়ার্ড যাচাই, টোকেন যাচাই) সম্পাদন করে। এছাড়াও, সার্ভার নিশ্চিত করে যে ক্লায়েন্টের কাছে নির্দিষ্ট সেবার অ্যাক্সেস অনুমতি আছে কিনা।
- ডেটা সংরক্ষণ (Data Storage):
- সার্ভার সাধারণত ডেটাবেস বা ফাইল সিস্টেমে ডেটা সংরক্ষণ করে এবং ক্লায়েন্টের রিকোয়েস্ট অনুযায়ী সেই ডেটা প্রদান করে।
সার্ভারের উদাহরণ:
- ওয়েব সার্ভার (যেমন: Apache, Nginx)
- ডাটাবেস সার্ভার (যেমন: MySQL, PostgreSQL)
- ফাইল সার্ভার (যেমন: FTP সার্ভার, SFTP সার্ভার)
- মেইল সার্ভার (যেমন: Gmail, Outlook)
ক্লায়েন্ট এবং সার্ভারের সম্পর্ক
ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে একটি নির্দিষ্ট প্রোটোকল অনুসরণ করে যোগাযোগ করে। উদাহরণস্বরূপ, HTTP (Hypertext Transfer Protocol) বা HTTPS (HTTP Secure) প্রোটোকল ব্যবহার করে ক্লায়েন্ট সার্ভারের সাথে যোগাযোগ করে এবং রিকোয়েস্ট/প্রতিক্রিয়া বিনিময় করে।
- Request-Response Model: ক্লায়েন্ট সার্ভারের কাছে একটি রিকোয়েস্ট পাঠায় এবং সার্ভার সেই রিকোয়েস্টের উপর ভিত্তি করে একটি প্রতিক্রিয়া পাঠায়।
- স্ট্যাটলেস কমিউনিকেশন: সার্ভার সাধারণত ক্লায়েন্টের অবস্থা (state) মনে রাখে না। প্রতিটি রিকোয়েস্ট আলাদা হতে পারে এবং সার্ভার সেগুলিকে আলাদাভাবে প্রক্রিয়া করে।
সারসংক্ষেপ
- Client: ব্যবহারকারী বা অ্যাপ্লিকেশনের ডিভাইস বা প্রোগ্রাম যা সেবা চেয়ে সার্ভারের সাথে যোগাযোগ করে। এটি রিকোয়েস্ট পাঠায় এবং সেবা বা তথ্য গ্রহণ করে।
- Server: সেই সফটওয়্যার বা হার্ডওয়্যার যা ক্লায়েন্টের রিকোয়েস্ট গ্রহণ করে, প্রক্রিয়া করে এবং সঠিক তথ্য বা সেবা প্রদান করে। এটি ডেটা সংরক্ষণ করে এবং নিরাপত্তা, অনুমোদন, এবং অ্যাক্সেস নিয়ন্ত্রণ পরিচালনা করে।
এই ক্লায়েন্ট-সার্ভার মডেলটি আধুনিক কম্পিউটিং সিস্টেমে গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে ওয়েব, মোবাইল অ্যাপ্লিকেশন এবং API ব্যবহারের ক্ষেত্রে।
OAuth 2.0 এর একটি মূল ধারণা হল Authorization Endpoints এবং Token Endpoints, যা বিভিন্ন OAuth ফ্লোতে গুরুত্বপূর্ণ ভূমিকা পালন করে। এই দুটি এন্ডপয়েন্টের মধ্যে পার্থক্য এবং তাদের কাজ কী, তা বুঝতে হলে প্রথমে জানতে হবে এই দুটি এন্ডপয়েন্টের ভূমিকা।
1. Authorization Endpoint
Authorization Endpoint হলো সেই URL বা এন্ডপয়েন্ট যেখানে ব্যবহারকারীরা তাদের অ্যাকাউন্ট এবং অনুমতির মাধ্যমে অ্যাক্সেস কোডের জন্য অনুরোধ করেন। এটি সাধারণত ব্যবহারকারীর ব্রাউজারে রিডিরেক্ট করা হয়, এবং এখানে ব্যবহারকারী তাদের অ্যাকাউন্টে লগইন করে নির্দিষ্ট তৃতীয় পক্ষের অ্যাপ্লিকেশনকে তাদের ডেটা অ্যাক্সেস করতে অনুমতি দেন।
Authorization Endpoint-এর কাজ:
- ব্যবহারকারীর অথেনটিকেশন (authentication) এবং অথোরাইজেশন (authorization) সম্পাদন করা হয়।
- এই এন্ডপয়েন্টে পৌঁছানোর পর, ব্যবহারকারী অ্যাপ্লিকেশনটির জন্য অনুমতি প্রদান করেন, এবং এরপরে সার্ভার একটি authorization code প্রদান করে।
- এটি ব্যবহারকারীকে তাদের অ্যাকাউন্টে লগইন করায় এবং তার পর অ্যাপ্লিকেশনকে অ্যাক্সেস টোকেন পেতে সাহায্য করে।
Authorization Endpoint এর একটি উদাহরণ:
https://authorization-server.com/auth?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=read_profile&state=xyz123এখানে:
response_type=code: এই কোডটি নির্দেশ করে যে অ্যাপ্লিকেশন একটি authorization code পেতে চায়।client_id: ক্লায়েন্ট অ্যাপ্লিকেশনের ইউনিক আইডি।redirect_uri: সেই URL যেখানে ব্যবহারকারী অনুমোদনের পর ফিরে আসবে।scope: নির্দিষ্ট অনুমতির তালিকা (যেমন পঠন, লেখা ইত্যাদি)।state: সেশন হাইজ্যাকিং প্রতিরোধ করতে ব্যবহৃত একটি অদৃশ্য ভ্যালু।
2. Token Endpoint
Token Endpoint হল সেই URL বা এন্ডপয়েন্ট যেখানে ক্লায়েন্ট অ্যাপ্লিকেশনটি authorization code এর মাধ্যমে access token পেতে রিকোয়েস্ট করে। Authorization Endpoint থেকে authorization code পাওয়ার পর, ক্লায়েন্ট এই কোডটি Token Endpoint-এ পাঠায় এবং সেখানে access token (অথবা refresh token) পাওয়া যায়, যা ব্যবহারকারী বা অ্যাপ্লিকেশনের নামের সাথে সম্পর্কিত একটি সুরক্ষিত অনুমতি চিহ্ন।
Token Endpoint এর কাজ:
- ক্লায়েন্ট অ্যাপ্লিকেশনটি authorization code অথবা client credentials (যদি প্রয়োজন হয়) পাঠায়।
- সার্ভার এই তথ্য যাচাই করে এবং একটি access token প্রদান করে যা ব্যবহৃত হবে রিসোর্স অ্যাক্সেস করতে।
- এটি সাধারণত ক্লায়েন্টের জন্য একটি client_id এবং client_secret ব্যবহার করে যাচাই করা হয়, যা সার্ভারকে ক্লায়েন্ট অ্যাপ্লিকেশনটির প্রকৃততা নিশ্চিত করতে সাহায্য করে।
Token Endpoint-এর একটি উদাহরণ:
https://authorization-server.com/tokenএই এন্ডপয়েন্টে ক্লায়েন্ট সাধারণত HTTP POST রিকোয়েস্ট ব্যবহার করে, যেখানে তারা authorization code, client_id, client_secret, এবং redirect_uri পাঠায়। উদাহরণস্বরূপ:
POST /token HTTP/1.1
Host: authorization-server.com
Content-Type: application/x-www-form-urlencoded
code=AUTHORIZATION_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&redirect_uri=REDIRECT_URI&grant_type=authorization_codeএখানে:
code: Authorization Endpoint থেকে প্রাপ্ত authorization code।client_id: ক্লায়েন্ট অ্যাপ্লিকেশনের ইউনিক আইডি।client_secret: ক্লায়েন্ট অ্যাপ্লিকেশনের গোপন কোড যা সার্ভার যাচাই করে।redirect_uri: সঠিক রিডিরেক্ট URI যাচাই করা হয়।grant_type=authorization_code: এই ভ্যালুটি নির্দেশ করে যে এটি একটি authorization code ফ্লো।
এটি সফল হলে, সার্ভার একটি access token এবং (যদি প্রয়োজন হয়) একটি refresh token প্রদান করবে।
প্রধান পার্থক্য
| বৈশিষ্ট্য | Authorization Endpoint | Token Endpoint |
|---|---|---|
| কাজ | ব্যবহারকারীকে অনুমতি দিতে এবং authorization code প্রাপ্তি | authorization code অথবা client credentials দিয়ে access token প্রাপ্তি |
| ব্রাউজার রিডিরেক্ট | ব্যবহারকারীকে ব্রাউজারে রিডিরেক্ট করা হয় | ক্লায়েন্ট অ্যাপ্লিকেশন সার্ভারে HTTP POST রিকোয়েস্ট পাঠায় |
| উত্তর | authorization code প্রদান করা হয় | access token (এবং refresh token) প্রদান করা হয় |
| অথেনটিকেশন প্রক্রিয়া | ব্যবহারকারীকে লগইন এবং অনুমতি দেওয়ার প্রক্রিয়া | ক্লায়েন্ট অ্যাপ্লিকেশনের প্রকৃততা যাচাই করে |
সারসংক্ষেপ
- Authorization Endpoint হল সেই পয়েন্ট যেখানে ব্যবহারকারী তাদের অ্যাকাউন্টে লগইন করেন এবং তৃতীয় পক্ষের অ্যাপ্লিকেশনকে তাদের রিসোর্স অ্যাক্সেস করার অনুমতি দেন। এরপর সার্ভার একটি authorization code প্রদান করে।
- Token Endpoint হল সেই পয়েন্ট যেখানে ক্লায়েন্ট অ্যাপ্লিকেশন authorization code বা অন্যান্য যাচাইকরণ তথ্য ব্যবহার করে access token পায়, যা রিসোর্সে অ্যাক্সেস করতে ব্যবহৃত হয়।
OAuth 2.0 ফ্লোতে এই দুটি এন্ডপয়েন্ট অত্যন্ত গুরুত্বপূর্ণ, কারণ এগুলি ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ যোগাযোগ এবং অ্যাক্সেস নিয়ন্ত্রণের জন্য ব্যবহৃত হয়।
OAuth 2.0 প্রোটোকলে, Redirection URI এবং Callback Mechanism দুটি গুরুত্বপূর্ণ উপাদান। এগুলি মূলত Authorization Code Flow এবং অন্যান্য OAuth ফ্লোতে ব্যবহৃত হয় এবং ক্লায়েন্ট অ্যাপ্লিকেশনকে Authorization Server থেকে Access Token প্রাপ্তিতে সহায়ক হয়।
Redirection URI (Redirect URI)
Redirection URI (কখনও কখনও Redirect URL হিসাবেও পরিচিত) হল সেই URI বা URL যা OAuth 2.0 প্রোটোকলে Authorization Server ব্যবহারকারীর অনুমোদন প্রাপ্তির পর ব্যবহারকারীকে রিডিরেক্ট করে। এটি OAuth 2.0 প্রোটোকলের একটি মূল অংশ, বিশেষত Authorization Code Flow তে।
Redirection URI এর কার্যপদ্ধতি:
- OAuth 2.0 প্রক্রিয়ার শুরু:
যখন ব্যবহারকারী কোনও তৃতীয় পক্ষের অ্যাপ্লিকেশনের মাধ্যমে লগইন করার জন্য OAuth 2.0 এর মাধ্যমে অথোরাইজেশন সার্ভারে রিডিরেক্ট হন, তখন ওই অ্যাপ্লিকেশনটি সেই সার্ভারে একটি রিকোয়েস্ট পাঠায় যা Redirection URI-কে জানায়। - Authorization Server এর রিডিরেকশন:
যদি ব্যবহারকারী অনুমতি দেয়, তখন Authorization Server ব্যবহারকারীকে Redirection URI তে রিডিরেক্ট করে এবং সেখানে একটি Authorization Code পাঠানো হয়। এটি ক্লায়েন্ট অ্যাপ্লিকেশনকে অনুমোদন দেয় পরবর্তী পর্যায়ে অ্যাক্সেস টোকেন প্রাপ্তির জন্য। - ব্যবহারকারী ফিরে আসে:
অ্যাপ্লিকেশনটি Authorization Code পাওয়ার পরে, এটি সেই কোডটি ব্যবহার করে Access Token পেতে Token Endpoint-এ একটি রিকোয়েস্ট পাঠায়।
Redirection URI এর ব্যবহার:
- পূর্বনির্ধারিত URI: Redirection URIটি Authorization Server-এ আগে থেকেই কনফিগার করা থাকে এবং ক্লায়েন্ট অ্যাপ্লিকেশনের সাথে মেলে, যাতে এটি সঠিক রিডিরেকশন URL এ ব্যবহারকারীকে নিয়ে যেতে পারে।
- নিরাপত্তা: এটি নিরাপত্তা নিশ্চিত করতে সহায়ক, কারণ শুধুমাত্র নির্দিষ্ট এবং কনফিগার করা URI গুলোকেই অনুমোদিত করা হয়। কোনো অপরিচিত বা অননুমোদিত URI ব্যবহারকারীর তথ্য চুরি বা অন্য ক্ষতি করতে পারে।
Redirection URI উদাহরণ:
https://clientapp.com/callbackএটি একটি ক্লায়েন্ট অ্যাপ্লিকেশনের রিডিরেকশন URI হতে পারে, যেখানে Authorization Server ব্যবহারকারীকে রিডিরেক্ট করবে এবং সেখানে Authorization Code পাঠাবে।
Callback Mechanism
Callback Mechanism হল সেই প্রক্রিয়া যার মাধ্যমে Authorization Server ব্যবহারকারীকে Redirection URI তে রিডিরেক্ট করে, এবং তখন ক্লায়েন্ট অ্যাপ্লিকেশনটি Authorization Code বা Access Token গ্রহণ করে। এটি OAuth 2.0-এর মূল কাজের অংশ, এবং callback সাধারণত Authorization Code Flow তে ব্যবহৃত হয়।
Callback Mechanism এর কার্যপদ্ধতি:
- Authorization Request:
যখন ব্যবহারকারী OAuth 2.0 দ্বারা লগইন করতে চান, তখন ক্লায়েন্ট অ্যাপ্লিকেশন Authorization Server-এ রিডিরেকশন রিকোয়েস্ট পাঠায়। এই রিকোয়েস্টে Redirection URI অন্তর্ভুক্ত থাকে, যা রিডিরেকশন প্রক্রিয়ার জন্য প্রয়োজনীয়। - User Authorization:
ব্যবহারকারী যদি তাদের অনুমতি প্রদান করেন, Authorization Server ব্যবহারকারীকে Redirection URI তে পাঠায় এবং সেখানে Authorization Code পাঠায়। - Callback Handling:
ক্লায়েন্ট অ্যাপ্লিকেশন সেই Redirection URI-তে চলে আসে এবং সেখান থেকে Authorization Code গ্রহণ করে। এরপর, এটি সেই কোডটি ব্যবহার করে Access Token বা Refresh Token পেতে Authorization Server-এর Token Endpoint-এ রিকোয়েস্ট পাঠায়। - Access Token Retrieval:
Access Token সফলভাবে প্রাপ্ত হলে, ক্লায়েন্ট অ্যাপ্লিকেশন এই টোকেন ব্যবহার করে ব্যবহারকারীর তথ্য অ্যাক্সেস করতে পারে।
Callback Mechanism এর সুবিধা:
- নিরাপত্তা: Callback Mechanism নিরাপদ পদ্ধতিতে Authorization Code এবং Access Token প্রাপ্তির ব্যবস্থা করে, যেখানে sensitive তথ্য কখনো ক্লায়েন্ট অ্যাপ্লিকেশন বা ব্যবহারকারী দ্বারা সরাসরি দেখা যায় না।
- টোকেনের অভ্যন্তরীণ সুরক্ষা: Callback থেকে Access Token বা Authorization Code এর সরাসরি হ্যান্ডলিং, OAuth 2.0 নিরাপদভাবে টোকেনগুলি প্রক্রিয়া করে এবং অননুমোদিত অ্যাক্সেস রোধ করে।
Callback Mechanism উদাহরণ:
- ব্যবহারকারী যখন তাদের গুগল অ্যাকাউন্টে লগ ইন করেন, তখন তারা Authorization Server-এ রিডিরেক্ট হন।
- গুগল অনুমোদন দিলে, তারা ব্যবহারকারীকে
https://clientapp.com/callbackURL এ পাঠায়, যেখানে Authorization Code প্রেরণ করা হয়। - ক্লায়েন্ট অ্যাপ্লিকেশন callback URL থেকে Authorization Code গ্রহণ করে এবং পরে Access Token পেতে API কল করে।
সারাংশ
- Redirection URI হল সেই URL যেখানে Authorization Server ব্যবহারকারীকে রিডিরেক্ট করে, যখন ব্যবহারকারী তৃতীয় পক্ষের অ্যাপ্লিকেশন থেকে অনুমতি দেন।
- Callback Mechanism OAuth 2.0-এর প্রক্রিয়া যা Redirection URI এর মাধ্যমে কাজ করে। এটি Authorization Code বা Access Token ক্লায়েন্ট অ্যাপ্লিকেশনকে পাঠানোর জন্য ব্যবহৃত হয়।
- এই প্রক্রিয়া নিরাপত্তা এবং ব্যবহারের ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে এবং অ্যাপ্লিকেশনগুলিকে সুরক্ষিতভাবে টোকেন প্রাপ্তির ব্যবস্থা করে।
Redirection URI এবং Callback Mechanism OAuth 2.0-এর প্রবাহে অত্যন্ত গুরুত্বপূর্ণ, যা সুরক্ষিত অথেনটিকেশন এবং অথোরাইজেশন নিশ্চিত করতে সহায়ক।
OAuth 2.0 একটি নমনীয় অথেনটিকেশন এবং অথোরাইজেশন প্রোটোকল, যা বিভিন্ন ধরনের অ্যাপ্লিকেশন এবং সিস্টেমের জন্য উপযুক্ত। এর মধ্যে কয়েকটি বিশেষ ফ্লো রয়েছে, যা বিভিন্ন ধরনের ক্লায়েন্ট অ্যাপ্লিকেশন এবং পরিস্থিতির জন্য উপযোগী। এই ফ্লোগুলি ব্যবহারকারী এবং ক্লায়েন্টের মধ্যে অথেনটিকেশন এবং অ্যাক্সেস অনুমতি আদান-প্রদান করার জন্য ব্যবহৃত হয়।
নিচে OAuth 2.0 এর প্রধান ফ্লোগুলির বিস্তারিত আলোচনা করা হলো:
1. Authorization Code Grant (অথোরাইজেশন কোড গ্রান্ট)
এই ফ্লোটি ওয়েব অ্যাপ্লিকেশনগুলির জন্য সবচেয়ে নিরাপদ এবং সবচেয়ে বেশি ব্যবহৃত। এটি সাধারণত Server-Side Web Apps এবং Single Page Applications (SPA) এ ব্যবহৃত হয় যেখানে নিরাপত্তা একটি বড় চিন্তা।
প্রক্রিয়া:
- ব্যবহারকারী ক্লায়েন্ট অ্যাপ্লিকেশনে লগ ইন করেন এবং অ্যাপ্লিকেশনটি ব্যবহারকারীকে অথোরাইজেশন সার্ভারে রিডিরেক্ট করে।
- ব্যবহারকারী তার পরিচয় এবং অনুমতি দেয় এবং অথোরাইজেশন সার্ভার একটি অথোরাইজেশন কোড প্রদান করে।
- ক্লায়েন্ট অ্যাপ্লিকেশন সেই কোডটি অথোরাইজেশন সার্ভারে পাঠায় এবং অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেন পায়।
- ক্লায়েন্ট অ্যাপ্লিকেশন টোকেনটি ব্যবহার করে রিসোর্স সার্ভারে থেকে ব্যবহারকারীর তথ্য অ্যাক্সেস করে।
ব্যবহৃত ক্ষেত্রে:
- সার্ভার সাইড ওয়েব অ্যাপ্লিকেশন
- নিরাপত্তা সর্বোচ্চ থাকতে হবে
- ব্যবহারকারীর অনুমতি একাধিক রিসোর্স অ্যাক্সেস করার জন্য
2. Implicit Grant (ইমপ্লিসিট গ্রান্ট)
Implicit Grant ফ্লোটি সাধারণত Client-Side Web Applications বা Single Page Applications (SPA) এর জন্য ব্যবহৃত হয়। এটি দ্রুত অ্যাক্সেস প্রদান করে তবে নিরাপত্তা সুরক্ষা কিছুটা কম হতে পারে, কারণ অ্যাক্সেস টোকেন সরাসরি ব্যবহারকারীর ব্রাউজারে প্রদান করা হয়।
প্রক্রিয়া:
- ব্যবহারকারী ক্লায়েন্ট অ্যাপ্লিকেশনে লগ ইন করেন এবং অ্যাপ্লিকেশনটি ব্যবহারকারীকে অথোরাইজেশন সার্ভারে রিডিরেক্ট করে।
- ব্যবহারকারী তাদের অনুমতি দেয় এবং অথোরাইজেশন সার্ভার সরাসরি অ্যাক্সেস টোকেন প্রদান করে।
- ক্লায়েন্ট অ্যাপ্লিকেশন এই টোকেন ব্যবহার করে রিসোর্স সার্ভার থেকে তথ্য অ্যাক্সেস করে।
ব্যবহৃত ক্ষেত্রে:
- ক্লায়েন্ট সাইড অ্যাপ্লিকেশন (SPA)
- দ্রুত টোকেন প্রদান
- নিরাপত্তা কিছুটা কম, কারণ টোকেন সরাসরি ক্লায়েন্ট সাইডে চলে আসে
3. Resource Owner Password Credentials Grant (রিসোর্স ওনার পাসওয়ার্ড ক্রেডেনশিয়ালস গ্রান্ট)
এই ফ্লোটি সাধারণত তখন ব্যবহৃত হয় যখন ক্লায়েন্ট অ্যাপ্লিকেশন এবং ব্যবহারকারী একে অপরকে পুরোপুরি বিশ্বাস করে এবং ব্যবহারকারীর পাসওয়ার্ড সরাসরি ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা গ্রহণ করা হয়। এটি মোবাইল অ্যাপ্লিকেশন বা ডেস্কটপ অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, যেখানে ব্যবহারকারী সরাসরি তাদের পাসওয়ার্ড প্রদান করে।
প্রক্রিয়া:
- ব্যবহারকারী পাসওয়ার্ড এবং ইউজারনেম ক্লায়েন্ট অ্যাপ্লিকেশনকে প্রদান করেন।
- ক্লায়েন্ট অ্যাপ্লিকেশন এই তথ্য ব্যবহার করে অথোরাইজেশন সার্ভারে রিকোয়েস্ট পাঠায়।
- অথোরাইজেশন সার্ভার সরাসরি অ্যাক্সেস টোকেন প্রদান করে।
- ক্লায়েন্ট অ্যাপ্লিকেশন এই টোকেন ব্যবহার করে রিসোর্স সার্ভার থেকে তথ্য অ্যাক্সেস করে।
ব্যবহৃত ক্ষেত্রে:
- ক্লায়েন্ট এবং ব্যবহারকারীর মধ্যে পূর্ণ বিশ্বাস
- মোবাইল অ্যাপ্লিকেশন
- সরাসরি ইউজারনেম এবং পাসওয়ার্ড ব্যবহার
4. Client Credentials Grant (ক্লায়েন্ট ক্রেডেনশিয়ালস গ্রান্ট)
এই ফ্লোটি সাধারণত অ্যাপ্লিকেশন-টু-অ্যাপ্লিকেশন (server-to-server) যোগাযোগের জন্য ব্যবহৃত হয়, যেখানে কোনও ব্যবহারকারী নেই। এটি সার্ভিস-টু-সার্ভিস অথোরাইজেশনের জন্য উপযোগী।
প্রক্রিয়া:
- ক্লায়েন্ট অ্যাপ্লিকেশন সরাসরি অথোরাইজেশন সার্ভারে রিকোয়েস্ট পাঠায়, যেখানে
client_idএবংclient_secretসহ অ্যাক্সেস টোকেন রিকোয়েস্ট করা হয়। - অথোরাইজেশন সার্ভার অ্যাক্সেস টোকেন প্রদান করে।
- ক্লায়েন্ট অ্যাপ্লিকেশন এই টোকেন ব্যবহার করে রিসোর্স সার্ভার থেকে তথ্য অ্যাক্সেস করে।
ব্যবহৃত ক্ষেত্রে:
- সার্ভিস-টু-সার্ভিস যোগাযোগ
- API অ্যাক্সেস
- যখন ব্যবহারকারীর উপস্থিতি নেই
5. Device Authorization Grant (ডিভাইস অথোরাইজেশন গ্রান্ট)
এই ফ্লোটি সাধারণত ডিভাইস বা টেলিভিশন অ্যাপ্লিকেশনের জন্য ব্যবহৃত হয় যেখানে সরাসরি কীবোর্ড বা পাসওয়ার্ড ইনপুটের মাধ্যমে ব্যবহারকারীর অথেনটিকেশন করা কঠিন।
প্রক্রিয়া:
- ডিভাইস ব্যবহারকারীকে একটি কোড এবং URL প্রদর্শন করে।
- ব্যবহারকারী তার মোবাইল বা কম্পিউটার ব্যবহার করে এই URL-এ গিয়ে কোডটি প্রদান করেন।
- অথোরাইজেশন সার্ভার এই কোডের মাধ্যমে অ্যাক্সেস টোকেন প্রদান করে।
- ডিভাইসটি সেই টোকেন ব্যবহার করে রিসোর্স সার্ভার থেকে তথ্য অ্যাক্সেস করে।
ব্যবহৃত ক্ষেত্রে:
- টেলিভিশন এবং অন্য ডিভাইস অ্যাপ্লিকেশন
- সহজ অথেনটিকেশন
সারাংশ
OAuth 2.0 এর বিভিন্ন প্রোটোকল ফ্লো বিভিন্ন অ্যাপ্লিকেশন এবং পরিস্থিতি অনুযায়ী ব্যবহৃত হয়। বিভিন্ন ফ্লো ব্যবহারকারীর অ্যাক্সেস অনুমতির ধরন, নিরাপত্তা এবং প্রয়োগের প্রকার অনুযায়ী কাস্টমাইজ করা যায়। এসব ফ্লো ব্যবহারকারীর এবং ক্লায়েন্ট অ্যাপ্লিকেশনের মধ্যে সুরক্ষিত তথ্য আদান-প্রদান নিশ্চিত করতে সহায়ক।
Read more