Resource Owner Password Credentials Grant (ROPC) OAuth 2.0 এর একটি অথোরাইজেশন ফ্লো, যা ক্লায়েন্ট অ্যাপ্লিকেশনকে ব্যবহারকারীর username এবং password সরাসরি গ্রহণ করে এবং তার মাধ্যমে access token প্রাপ্তির অনুমতি দেয়। এই ফ্লোটি সাধারণত trusted applications (যেমন, সার্ভিস অ্যাপ্লিকেশন বা ডেস্কটপ অ্যাপ্লিকেশন) জন্য ব্যবহৃত হয় যেখানে অ্যাপ্লিকেশনটি ব্যবহারকারীর লগইন তথ্য জানে এবং কোনও ম্যানুয়াল অনুমতির প্রয়োজন হয় না।
এটি সাধারণত web apps বা mobile apps-এ ব্যবহৃত হয় যেখানে ব্যবহারকারীর পাসওয়ার্ড সরাসরি ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা প্রক্রিয়া করা হয়।
ROPC ফ্লো এর কার্যপদ্ধতি:
- ব্যবহারকারীর পাসওয়ার্ড গ্রহণ:
- ক্লায়েন্ট অ্যাপ্লিকেশন ব্যবহারকারীর username এবং password গ্রহণ করে। এগুলি সাধারণত অ্যাপ্লিকেশনটির ইন্টারফেসে ইনপুট ফিল্ডে সরাসরি ইনপুট হিসেবে নেওয়া হয়।
- অথোরাইজেশন রিকোয়েস্ট পাঠানো:
- ক্লায়েন্ট অ্যাপ্লিকেশন Authorization Server-এ একটি রিকোয়েস্ট পাঠায়, যেখানে username, password, client_id, এবং client_secret পাঠানো হয়।
- এই রিকোয়েস্টে
grant_type=passwordসেট করা হয়, যা নির্দেশ করে যে এটি একটি Resource Owner Password Credentials Grant ফ্লো।
- Access Token প্রদান:
- Authorization Server যদি username এবং password সঠিক ভাবে যাচাই করে, তবে এটি একটি access token প্রদান করে ক্লায়েন্ট অ্যাপ্লিকেশনকে।
- Access Token ব্যবহার:
- ক্লায়েন্ট অ্যাপ্লিকেশন তারপর এই access token ব্যবহার করে Resource Server থেকে রিসোর্স অ্যাক্সেস করতে পারে। Access token এর মাধ্যমে অ্যাপ্লিকেশনকে নির্দিষ্ট তথ্য বা সেবা পাওয়ার অনুমতি দেওয়া হয়।
ROPC ফ্লোর ব্যবহারিক উদাহরণ
ধরা যাক, একটি মোবাইল অ্যাপ্লিকেশন আছে যা ব্যবহারকারীর ব্যক্তিগত ডেটা অ্যাক্সেস করতে চায় (যেমন, ব্যবহারকারীর প্রোফাইল তথ্য, পোস্ট ইত্যাদি)। OAuth 2.0-এর Resource Owner Password Credentials Grant ব্যবহৃত হবে অ্যাপ্লিকেশনটির জন্য, কারণ এটি একটি trusted application এবং ব্যবহারকারীর পাসওয়ার্ড সরাসরি অ্যাপ্লিকেশন দ্বারা প্রক্রিয়া করা হবে।
উদাহরণ ফ্লো:
- ব্যবহারকারী অ্যাপ্লিকেশনটি খুলে এবং লগইন পৃষ্ঠায় তাদের username এবং password প্রবেশ করেন।
অ্যাপ্লিকেশনটি এই username এবং password সহ নিম্নলিখিত OAuth 2.0 রিকোয়েস্টটি Authorization Server-এ পাঠায়:
POST /token HTTP/1.1 Host: authorization-server.com Content-Type: application/x-www-form-urlencoded grant_type=password& client_id=your-client-id& client_secret=your-client-secret& username=user@example.com& password=supersecretpasswordAuthorization Server ব্যবহারকারীর username এবং password যাচাই করে এবং সঠিক হলে, একটি access token সহ সাড়া পাঠায়:
{ "access_token": "access_token_value", "token_type": "bearer", "expires_in": 3600, "refresh_token": "refresh_token_value" }ক্লায়েন্ট অ্যাপ্লিকেশন এই access token ব্যবহার করে Resource Server থেকে প্রোফাইল তথ্য অ্যাক্সেস করতে পারবে:
GET /user/profile HTTP/1.1 Host: api.server.com Authorization: Bearer access_token_value- Resource Server access token যাচাই করে এবং যদি এটি বৈধ থাকে, তবে প্রোফাইল তথ্য সরবরাহ করে।
ROPC ফ্লোর নিরাপত্তা বিবেচনা
- নিরাপত্তার ঝুঁকি:
ROPC ফ্লোতে ক্লায়েন্ট অ্যাপ্লিকেশন সরাসরি username এবং password ব্যবহার করে অ্যাক্সেস টোকেন অর্জন করে, যার কারণে client credentials এবং user credentials সরাসরি অ্যাপ্লিকেশনে সংরক্ষিত থাকে। তাই, যদি অ্যাপ্লিকেশনটি নিরাপদ না হয়, তবে ব্যবহারকারীর তথ্য হুমকির সম্মুখীন হতে পারে। - কেবল ট্রাস্টেড অ্যাপ্লিকেশন:
এই ফ্লোটি কেবলমাত্র trusted applications (যেমন, সার্ভিস অ্যাপ্লিকেশন বা ক্লোজড সিস্টেম) ব্যবহার করার জন্য নিরাপদ। তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির ক্ষেত্রে, authorization code flow বা implicit flow ব্যবহার করা উচিত। - HTTPS ব্যবহারের প্রয়োজনীয়তা:
username এবং password স্থানান্তর করার সময় HTTPS ব্যবহারের মাধ্যমে encrypted communication নিশ্চিত করা গুরুত্বপূর্ণ, যাতে man-in-the-middle (MITM) অ্যাটাক থেকে সুরক্ষা পাওয়া যায়।
সারাংশ
Resource Owner Password Credentials Grant (ROPC) একটি সহজ OAuth 2.0 ফ্লো যা ব্যবহারকারীর username এবং password সরাসরি গ্রহণ করে এবং সেগুলি ব্যবহার করে access token পাওয়ার জন্য ব্যবহৃত হয়। এটি প্রাথমিকভাবে trusted applications এর জন্য উপযুক্ত, যেখানে ক্লায়েন্ট অ্যাপ্লিকেশনটি নিরাপদ এবং পাসওয়ার্ড সংগ্রহের অনুমতি আছে। যদিও এটি সহজ, তবে নিরাপত্তার জন্য সতর্কতা অবলম্বন করা জরুরি, কারণ এটি username এবং password সরাসরি ক্লায়েন্ট অ্যাপ্লিকেশনে প্রক্রিয়া করে।
Read more