OAuth 2.0-এ Access Token একটি নিরাপত্তা টোকেন যা ব্যবহারকারী বা ক্লায়েন্ট অ্যাপ্লিকেশনকে একটি নির্দিষ্ট সময় এবং নির্দিষ্ট রিসোর্সে অ্যাক্সেস করার অনুমতি দেয়। এটি সাধারণত একটি Authorization Server থেকে সংগ্রহ করা হয় এবং Resource Server-এ ব্যবহৃত হয়। এই টোকেনটি সার্ভিসের মধ্যে সুরক্ষিতভাবে তথ্য বা রিসোর্স শেয়ার করার জন্য ব্যবহৃত হয়, এবং ব্যবহারকারী বা অ্যাপ্লিকেশনকে অ্যাক্সেস প্রদান করার সময় Authorization প্রক্রিয়ার মধ্যে মূল ভূমিকা পালন করে।
1. Access Token সংগ্রহের প্রক্রিয়া
Access Token সংগ্রহের প্রক্রিয়া সাধারণত OAuth 2.0-এর বিভিন্ন ফ্লো অনুসরণ করে। এখানে আমরা Authorization Code Flow এর মাধ্যমে Access Token সংগ্রহ করার একটি সাধারণ প্রক্রিয়া বর্ণনা করছি:
Authorization Code Flow এর মাধ্যমে Access Token সংগ্রহ
ব্যবহারকারীকে অথোরাইজেশন সার্ভারে রিডিরেক্ট করা:
- ক্লায়েন্ট অ্যাপ্লিকেশন ব্যবহারকারীকে একটি অথোরাইজেশন URL-এ রিডিরেক্ট করে।
- এই URL তে ব্যবহারকারী লগ ইন করেন এবং অ্যাপ্লিকেশনটি নির্দিষ্ট স্কোপের জন্য অনুমতি চায় (যেমন, কেবলমাত্র পঠন বা লেখন).
উদাহরণ URL:
https://authorization-server.com/auth?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=read&state=xyz- ব্যবহারকারী অনুমতি দেয়:
- ব্যবহারকারী তাদের ক্রেডেনশিয়াল দিয়ে লগ ইন করেন এবং ক্লায়েন্ট অ্যাপ্লিকেশনকে নির্দিষ্ট স্কোপের অধীনে অনুমতি দেন (যেমন, তাদের প্রোফাইল বা অন্যান্য ডেটা অ্যাক্সেস করার অনুমতি)।
Authorization Code প্রাপ্তি:
- যদি ব্যবহারকারী অনুমতি দেয়, তাহলে Authorization Server একটি কোড (Authorization Code) প্রদান করে, যা রিডিরেক্ট URI তে পাঠানো হয়।
উদাহরণ:
https://your-redirect-uri.com/?code=AUTHORIZATION_CODEAuthorization Code দিয়ে Access Token সংগ্রহ:
- ক্লায়েন্ট অ্যাপ্লিকেশন এই Authorization Code নিয়ে Access Token সংগ্রহ করার জন্য Token Endpoint-এ রিকোয়েস্ট পাঠায়।
- এই রিকোয়েস্টে ক্লায়েন্টের client_id, client_secret, এবং authorization code পাঠানো হয়।
উদাহরণ রিকোয়েস্ট:
POST https://authorization-server.com/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRETAccess Token প্রাপ্তি:
- যদি সবকিছু সঠিক হয়, Authorization Server একটি Access Token এবং একটি Refresh Token প্রদান করবে।
উদাহরণ রেসপন্স:
{ "access_token": "ACCESS_TOKEN", "token_type": "bearer", "expires_in": 3600, "refresh_token": "REFRESH_TOKEN" }
2. Access Token এর মাধ্যমে Resource Access করা
একবার Access Token সংগ্রহ করা হলে, ক্লায়েন্ট অ্যাপ্লিকেশনটি এই টোকেন ব্যবহার করে Resource Server থেকে ব্যবহারকারীর রিসোর্স অ্যাক্সেস করতে পারে। Resource Server শুধুমাত্র বৈধ Access Token এর মাধ্যমে রিসোর্স প্রদান করে।
Access Token দিয়ে Resource Access করার প্রক্রিয়া:
Access Token HTTP হেডারে পাঠানো:
- ক্লায়েন্ট অ্যাপ্লিকেশন Access Token কে Authorization Header-এ পাঠায়, যাতে এটি Resource Server-এ যাচাই করা যায়।
উদাহরণ রিকোয়েস্ট:
GET /user/profile HTTP/1.1 Host: api.resource-server.com Authorization: Bearer ACCESS_TOKENএখানে:
- Authorization হেডারে
Bearerশব্দের পরে Access Token যুক্ত থাকে, যা Resource Server-এর কাছে অ্যাক্সেসের অনুমতি প্রদান করে।
Resource Server Access Token যাচাই করা:
- Resource Server Access Token যাচাই করে দেখে এটি বৈধ কিনা। যদি এটি বৈধ হয় এবং স্কোপের মধ্যে থাকে, তবে এটি রিসোর্স অ্যাক্সেসের অনুমতি দেয়।
উদাহরণ রেসপন্স:
{ "status": "success", "data": { "name": "John Doe", "email": "john.doe@example.com" } }Access Token মেয়াদ শেষ হলে Refresh Token ব্যবহার:
- Access Token সাধারণত সীমিত সময়ের জন্য বৈধ থাকে (যেমন ১ ঘণ্টা)। যখন Access Token এর মেয়াদ শেষ হয়ে যায়, তখন Refresh Token ব্যবহার করে নতুন Access Token সংগ্রহ করা যায়।
উদাহরণ রিকোয়েস্ট (Refresh Token দিয়ে নতুন Access Token সংগ্রহ):
POST https://authorization-server.com/token 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": "NEW_ACCESS_TOKEN", "token_type": "bearer", "expires_in": 3600 }
সারাংশ
- Access Token সংগ্রহ:
OAuth 2.0-এ Authorization Code Flow ব্যবহার করে Authorization Server থেকে Access Token সংগ্রহ করা হয়। এটি সাধারণত একটি দুই ধাপের প্রক্রিয়া, যেখানে প্রথমে ব্যবহারকারী অনুমতি দেন এবং তারপর Authorization Code ব্যবহার করে Access Token প্রাপ্ত করা হয়। - Access Token দিয়ে Resource Access:
একবার Access Token সংগ্রহ করলে, এটি Authorization Header-এBearerশব্দের সাথে Resource Server-এ পাঠানো হয়। Resource Server এটি যাচাই করে এবং ব্যবহারকারী বা ক্লায়েন্টকে অনুমোদিত রিসোর্স অ্যাক্সেস প্রদান করে।
এই প্রক্রিয়া OAuth 2.0-এর মাধ্যমে নিরাপদ এবং সহজভাবে তৃতীয় পক্ষের অ্যাপ্লিকেশনকে নির্দিষ্ট রিসোর্স অ্যাক্সেস করার অনুমতি দেয়, পাসওয়ার্ড শেয়ার না করে।
Read more