tl; dr: সুরক্ষার কারণেই এটি।
OAuth 2.0 এই দুটি মানদণ্ড পূরণ করতে চেয়েছিল:
- আপনি বিকাশকারীদের নন-এইচটিটিপিএস পুনর্নির্দেশ ইউআরআই ব্যবহার করার অনুমতি দিতে চান কারণ সমস্ত বিকাশকারীদের কোনও এসএসএল সক্ষম সার্ভার নেই এবং যদি তারা এটি সর্বদা সঠিকভাবে কনফিগার করা না হয় (স্ব-স্বাক্ষরিত, বিশ্বস্ত এসএসএল শংসাপত্রগুলি, সিঙ্ক্রোনাইজড সার্ভার ঘড়ি ...)।
- আপনি চান না হ্যাকাররা অনুরোধগুলি বিরত করে অ্যাক্সেস / রিফ্রেশ টোকেন চুরি করতে সক্ষম হবেন।
নিচে বিস্তারিত:
সুরক্ষা কারণেই কেবল অন্তর্নিহিত প্রবাহ ব্রাউজার পরিবেশে সম্ভব:
ইন অন্তর্নিহিত প্রবাহিত অ্যাক্সেস টোকেন সরাসরি একটি হ্যাশ টুকরা (না একটি URL প্যারামিটার) হিসাবে পাস করা হয়। হ্যাশ খণ্ড সম্পর্কে একটি গুরুত্বপূর্ণ বিষয় হ'ল, একবার আপনি হ্যাশ খণ্ডযুক্ত লিঙ্কটি অনুসরণ করলে কেবল ব্রাউজার হ্যাশ খণ্ড সম্পর্কে সচেতন হয়। ব্রাউজারগুলি সরাসরি গন্তব্য ওয়েবপৃষ্ঠায় হ্যাশ টুকরোটি পাস করবে (ইউআরআই / ক্লায়েন্টের ওয়েবপেজ পুনর্নির্দেশ)। হ্যাশ খণ্ডের নিম্নলিখিত বৈশিষ্ট্য রয়েছে:
- তারা এইচটিটিপি অনুরোধের অংশ নয় তাই এগুলি সার্ভার দ্বারা পড়তে পারে না এবং এজন্য তাদের মধ্যস্থতাকারী সার্ভার / রাউটারগুলি দ্বারা আটকানো যায় না (এটি গুরুত্বপূর্ণ)।
- এগুলি কেবল ব্রাউজারে রয়েছে - ক্লায়েন্ট সাইড - সুতরাং হ্যাশ টুকরা পড়ার একমাত্র উপায় হচ্ছে জাভাস্ক্রিপ্ট ব্যবহার করা যা পৃষ্ঠায় চলে।
এটি কোনও মধ্যস্থতাকারী সার্ভার দ্বারা আটকানো ঝুঁকি ছাড়াই সরাসরি ক্লায়েন্টের কাছে অ্যাক্সেস টোকন পাস করা সম্ভব করে তোলে। এটিতে কেবল সম্ভাব্য ক্লায়েন্টের পক্ষে থাকার অ্যাক্সেস রয়েছে এবং অ্যাক্সেস টোকেনটি ব্যবহার করার জন্য জাভাস্ক্রিপ্ট চলমান ক্লায়েন্টের পক্ষে প্রয়োজন।
অন্তর্নিহিত প্রবাহে সুরক্ষার সমস্যাগুলিও রয়েছে যার জন্য আরও যুক্তিযুক্ত প্রয়োজন যেমন উদাহরণস্বরূপ
- কোনও আক্রমণকারী কোনও ভিন্ন ভিন্ন ওয়েবসাইট / অ্যাপ্লিকেশনে (কোনও ওয়েবসাইটের অ্যাপ্লিকেশনের মালিক কিনা তা বলা যাক) তার ওয়েবসাইটটিতে টোকেনটি লগইন করুন এবং তারপরে এটি আপনার ওয়েবসাইটটিতে ইউআরএল প্যারাম হিসাবে পাস করুন অতএব আপনার ওয়েবসাইটে ব্যবহারকারীকে নকল করে। এটি এড়ানোর জন্য আপনাকে অ্যাক্সেস টোকেনের সাথে যুক্ত ক্লায়েন্ট আইডি চেক করতে হবে (উদাহরণস্বরূপ গুগলের জন্য আপনি টোকেনইনফো প্রান্তটি ব্যবহার করতে পারেন) নিশ্চিত করতে টোকেনটি আপনার নিজের ক্লায়েন্ট আইডি (যেমন আপনার নিজের অ্যাপ্লিকেশন দ্বারা) জারি হয়েছে বা স্বাক্ষর পরীক্ষা করে দেখুন আপনি যদি আইডি টোকেন ব্যবহার করছেন (তবে এটির জন্য আপনার ক্লায়েন্টের গোপনীয়তা প্রয়োজন)।
- যদি লেখার অনুরোধটি আপনার নিজের সম্পত্তি (সেশন ফিক্সেশন অ্যাটাক হিসাবে পরিচিত) থেকে উদ্ভূত না হয়, তবে এটি এড়াতে আপনি আপনার ওয়েবসাইট থেকে একটি এলোমেলো হ্যাশ তৈরি করতে চান, এটি একটি কুকিতে সংরক্ষণ করুন এবং সেই একই হ্যাশটির রাজ্য ইউআরএল প্যারামে পাস করতে চান প্রমাণীকরণের অনুরোধ, যখন ব্যবহারকারী ফিরে আসবে আপনি কুকির সাথে রাজ্য পরমটি পরীক্ষা করে দেখুন এটি অবশ্যই মিলবে।
ইন অনুমোদন কোড প্রবাহিত কারণ URL প্যারামিটার HTTP- র অনুরোধ অংশ, তাই কোন মধ্যবর্তী সার্ভার / রাউটার যার দ্বারা আপনার অনুরোধ পাস হবে (শত শত হতে পারে) পাবে পারে একটি অ্যাক্সেস একটি URL প্যারামিটার সরাসরি টোকেনটি পাস করা সম্ভব নয় যদি আপনি এন-এনক্রিপ্টড সংযোগ (HTTPS) ব্যবহার না করে যা ম্যান-ইন-মধ্য-আক্রমণের হিসাবে পরিচিত allowing
সরাসরি ইউআরএল প্যারামে অ্যাক্সেস টোকেন পাস করা তাত্ত্বিকভাবে সম্ভব হতে পারে তবে প্রমাণীকরণকারীকে নিশ্চিত করতে হবে যে পুনর্নির্দেশিত ইউআরআই টিএলএস এনক্রিপশন এবং একটি 'বিশ্বস্ত' এসএসএল শংসাপত্রের সাথে HTTPS ব্যবহার করছে (সাধারণত একটি শংসাপত্র কর্তৃপক্ষ থেকে যা নিখরচায় নয়) গন্তব্য সার্ভারটি বৈধ কিনা এবং এইচটিটিপি অনুরোধ সম্পূর্ণরূপে এনক্রিপ্ট করা হয়েছে তা নিশ্চিত হয়ে উঠতে। সমস্ত বিকাশকারী একটি এসএসএল শংসাপত্র কেনা এবং তাদের ডোমেনে এসএসএল সঠিকভাবে কনফিগার করা একটি বিশাল ব্যথা হবে এবং প্রচন্ডভাবে গ্রহণকে ধীর করবে। এই কারণেই মধ্যস্থতাকারী এক সময়ের ব্যবহারযোগ্য "অনুমোদনের কোড" সরবরাহ করা হয়েছে যে কেবল বৈধ প্রাপকই বিনিময় করতে সক্ষম হবেন (কারণ আপনার ক্লায়েন্টের গোপনীয়তা প্রয়োজন) এবং এই কোডটি সম্ভাব্য হ্যাকারদের অনিক্রিপ্টেড লেনদেনের জন্য অনুরোধগুলি বিরত রাখার পক্ষে অকেজো হবে (কারণ তারা ডন '
আপনি আরও যুক্তি দিতে পারেন যে অন্তর্নিহিত প্রবাহটি কম সুরক্ষিত, পুনর্নির্দেশের পরে ডোমেনটিকে ছদ্মবেশ দেওয়ার মতো সম্ভাব্য আক্রমণকারী ভেক্টর রয়েছে - উদাহরণস্বরূপ ক্লায়েন্টের ওয়েবসাইটের আইপি ঠিকানা হাইজ্যাক করে। এই অন্তর্নিহিত প্রবাহটি কেবলমাত্র টোকেনগুলিতে অ্যাক্সেস মঞ্জুর করার কারণগুলির মধ্যে একটি (যা সীমিত সময় ব্যবহারের জন্য অনুমিত হয়) এবং টোকেনগুলি কখনই রিফ্রেশ করে না (যা সময়ে সীমাহীন) এই সমস্যার প্রতিকারের জন্য, আমি আপনাকে পরামর্শ দিচ্ছি যখনই সম্ভব আপনার ওয়েবপৃষ্ঠাগুলি একটি HTTPS- সক্ষম সার্ভারে হোস্ট করুন।