ওআউথ 2 আরওপিসি বনাম বেসিক অথ পাবলিক আরএসটি এপিআই এর জন্য?


21

আমি এখানে নির্দিষ্ট ব্যবহারের ক্ষেত্রে আগ্রহী যেটি সর্বজনীনভাবে উপলভ্য সার্ভারের শেষ পয়েন্টগুলি (যেমন একটি পাবলিক আরএসটি এপিআই) এর বিরুদ্ধে REST ক্লায়েন্টদের প্রমাণীকরণ করছে।

এখানে সর্বাধিক সহজ সমাধানটি হল বেসিক আথ । তবে আমি প্রায়শই শুনতে পাই যে OAuth2 প্রায় সব পরিস্থিতিতেই উন্নত লেখকের সমাধান হিসাবে বিবেচিত।

জিনিসটি হ'ল, কেবলমাত্র OAuth2 মঞ্জুরি প্রকার যা কোনও REST ক্লায়েন্টের জন্য একটি REST সার্ভারের বিরুদ্ধে প্রমাণীকরণযোগ্য তা রিসোর্স মালিকের পাসওয়ার্ড শংসাপত্র (আরওপিসি) , কারণ কোড অনুদান এবং অন্তর্ভুক্ত অনুদানের জন্য একটি ইউআই / ওয়েবপেজ প্রয়োজন (আথ সার্ভার দ্বারা হোস্ট করা হয় ) require ব্যবহারকারী ক্লায়েন্ট অ্যাপ্লিকেশনটিতে লগইন এবং ম্যানুয়ালি অনুমোদন করতে পারেন।

আরওপিসি যেভাবে কাজ করে তা হ'ল, উত্সের মালিকের নাম / পাসওয়ার্ড, এবং ক্লায়েন্ট আইডিটিকে ক্যোরি স্ট্রিং পরম হিসাবে পাঠানো হবে ?!?! এটি আরও কম সুরক্ষিত (আইএমএইচও) তারপরে বেসিক অ্যাথ, যা কমপক্ষে বেস-64৪ শংসাপত্রগুলিকে এনকোড করে এবং একটি শিরোনামের ভিতরে প্রেরণ করে যা টিএলএস দ্বারা এনক্রিপ্ট করা যায়!

সুতরাং আমি জিজ্ঞাসা করছি: পাবলিক REST এপিআইগুলির প্রসঙ্গে, ওআউথ 2 আরওপিসি কি বেসিক অথের চেয়ে সত্যই কোনও ভাল? OAuth2 আরওপিসির চেয়ে বেশি সুরক্ষিত কী?


হালনাগাদ

আমি কেবল এই দুর্দান্ত নিবন্ধটি পড়েছি যা AWS এর জন্য অ্যামাজনের অ-ওআউথ 2 ভিত্তিক REST সুরক্ষা ব্যাখ্যা করে। এটি মূলত একটি বেসরকারী কী-ভিত্তিক সমাধান যেখানে প্রতিটি আরএসইএস অনুরোধের হ্যাশগুলি উত্সাহিত করা হয় এবং সাধারণ (আন-এনক্রিপ্ট করা) অনুরোধের পাশাপাশি সিডিকার হিসাবে প্রেরণ করা হয়। কেবল ক্লায়েন্ট এবং সার্ভারটি ব্যক্তিগত কী জানে, সুতরাং যখন সার্ভারটি অনুরোধটি গ্রহণ করে (আবারও, সাধারণ অনুরোধ + হ্যাশ অনুরোধটি অন্তর্ভুক্ত) তখন সার্ভার ক্লায়েন্টের ব্যক্তিগত কী দেখায়, সাধারণ অনুরোধে একই হ্যাশ প্রয়োগ করে এবং তারপরে দুটি হ্যাশ তুলনা করুন।

এটি OAuth2 এর আরওপিসির চেয়ে আরও জটিল, জটিল এবং সুরক্ষিত শোনায়! আমি যদি এখানে কোনও বড় কিছু মিস না করি তবে OAuth2 আরওপিসি কেবল পাঠাচ্ছে client_id, usernameএবং passwordক্যোয়ারিং স্ট্রিং প্যারাম হিসাবে ... সম্পূর্ণ এবং সম্পূর্ণ সুরক্ষিত! এই এইচএমএসি / হ্যাশ-ভিত্তিক সমাধানটি আরও চিত্তাকর্ষক এবং সুরক্ষিত বলে মনে হচ্ছে।

কথাটি হ'ল, এমনকি সেই নিবন্ধটির লেখকও বলেছেন:

আপনি আস্তে আস্তে বুঝতে এবং গ্রহণ করতে পারবেন যে কোনও সময় আপনাকে OAuth প্রয়োগ করতে হবে ...

বিএ বিএ bwhat?!?! যদি ওএউথ 2 এই চতুর এইচএমএসি / হ্যাশ-ভিত্তিক সমাধানের চেয়ে কম সুরক্ষিত থাকে তবে এই নিবন্ধটির লেখক কেন মনে করেন যে OAuth কে কিছু সময় আলিঙ্গন করা দরকার। আমি খুবই দ্বিধাগ্রস্ত.


আপনি কোন ধরণের ক্লায়েন্টের কথা বলছেন? আমি ধরে নিয়েছি যে বেশিরভাগ ক্লায়েন্টের একটি ইউআই থাকবে। কোন ক্ষেত্রে আপনি ওউথ লগইন পৃষ্ঠাটি একটি ওয়েবভিউতে (ডেস্কটপ, মোবাইল) লোড করতে পারেন বা সরাসরি (ওয়েব) এ পুনঃনির্দেশ করতে পারেন। আপনার ইউআই এড়ানো দরকার কেন তা আমি দেখতে পাচ্ছি না।
ডেস্কলোন

@ ডেসাইক্লোন দয়া করে প্রশ্নের প্রথম বাক্যটি পড়ুন! আমি আরইএসটি (হেডলেস এইচটিটিপি) ক্লায়েন্টগুলি আরইএসটি পরিষেবার বিরুদ্ধে প্রমাণীকরণ করছি।
স্মিবিব

আমি যে প্রশ্নটি জিজ্ঞাসা করছি তা হচ্ছে যদি সেই ক্লায়েন্টটির কোনও ইউআই আছে? এটি না থাকলেও, আমি কমপক্ষে প্রমাণীকরণের জন্য কোনও ইউআই পপ না করে অ্যাপ্লিকেশনগুলি দেখেছি।
ডেস্কলোন

@ ডাইসাইক্লোন খাঁটি আরআরএসটি ক্লায়েন্টের কোনও ইউআই নেই, যদিও ইউআই সাধারণত একটি রেস্ট সার্ভিসে সংযোগ করার জন্য খাঁটি আরএসটি ক্লায়েন্ট ব্যবহার করে। একটি ব্যবহারের ক্ষেত্রে হ'ল একটি কমান্ড লাইন সরঞ্জাম যা ব্যবহারকারীর কমান্ডগুলি (শেলটিতে সন্নিবেশিত) আরআরএসটি পরিষেবাতে পাঠানোর জন্য একটি আরএসটি ক্লায়েন্ট ব্যবহার করে। শেল থেকে একটি ইউআই পপিং এখানে একটি গ্রহণযোগ্য সমাধান নয়।
স্মিবিব

1
তবে, আমার মনে রাখা উচিত, কমান্ড লাইন / শেলের বাইরে প্রচুর অন্যান্য ব্যবহারের ঘটনা রয়েছে। আর একটি ব্যবহারের ক্ষেত্রে একটি জাভা / রুবি / পাইথন খাঁটি আরইএসটি / এইচটিটিপি ক্লায়েন্ট যার কোনও ইউআই নেই এবং সম্ভবত কোনও ইউআই নেই এমন ব্যাকএন্ড সার্ভারে চলছে। ব্যাকএন্ড সার্ভারটি আরএএসটি দিয়ে অন্য একটি ব্যাকএন্ড সার্ভারের সাথে যোগাযোগ করতে হবে। এখানে, কেবল ব্যাকইন্ড সার্ভার # 1 যখন ব্যাকএন্ড সার্ভার # 2 এর সাথে কথা বলার দরকার হয় কেবল তখনই ইউআই পপ করা অবাস্তব এবং হ্যাকিই হবে না, আসল সমস্যা নেই লগইন পৃষ্ঠাটি প্রদর্শনের জন্য কোনও ব্রাউজার / ইউআই ক্লায়েন্ট নেই এবং সেখানে কোনও মানব নেই লগ ইন করার জন্য সেখানে রয়েছেন !!!
বুদ্ধিমান করুন

উত্তর:


24

আপনার প্রশ্নের উত্তর কোড স্তর, প্রোটোকল স্তর বা আর্কিটেকচার স্তরে হতে পারে। আমি এখানে বেশিরভাগ প্রোটোকল স্তরের ইস্যু সংক্ষিপ্ত করার চেষ্টা করব যেহেতু এটি পেশাদার ও কনস বিশ্লেষণে সাধারণত সমালোচিত হয়। মনে রাখবেন যে OAuth2 রিসোর্স মালিকের পাসওয়ার্ড শংসাপত্রগুলির তুলনায় অনেক বেশি যা স্পেসিফিকেশন অনুসারে "উত্তরাধিকার বা স্থানান্তরের কারণে" উপস্থিত থাকে, "অন্যান্য অনুদানের ধরণের চেয়ে উচ্চতর ঝুঁকি" হিসাবে বিবেচিত হয় এবং স্পেসিফিকেশনটি স্পষ্টভাবে বলে যে ক্লায়েন্ট এবং অনুমোদন সার্ভারগুলি "এই অনুদানের ধরণের ব্যবহার হ্রাস করা উচিত এবং যখনই সম্ভব অন্য অনুদানের প্রকারগুলি ব্যবহার করা উচিত"।

বেসিক প্রমাণীকরণের তুলনায় আরওপিসি ব্যবহারের আরও অনেক সুবিধা রয়েছে তবে এটির আগে আমরা আসুন OAuth2 এবং বেসিক প্রমাণীকরণের মধ্যে বুনিয়াদি প্রোটোকল পার্থক্যটি। আমি এগুলি ব্যাখ্যা করার সাথে সাথে দয়া করে আমার সাথে সহ্য করুন এবং পরে আরওপিসিতে আসবেন।

ব্যবহারকারীর প্রমাণীকরণ প্রবাহিত হয়

OAuth2 নির্দিষ্টকরণে এখানে চারটি ভূমিকা সংজ্ঞায়িত করা হয়েছে। উদাহরণ সহ, তারা হ'ল:

  1. রিসোর্সের মালিক: যে ব্যবহারকারীর কিছু সংস্থান থেকে অ্যাক্সেস রয়েছে, যেমন আপনার ক্ষেত্রে, বিভিন্ন ব্যবহারকারীর আরইএসটি এপিআইতে বিভিন্ন অ্যাক্সেস স্তর থাকতে পারে;
  2. ক্লায়েন্ট: সাধারণত ব্যবহারকারী যে অ্যাপ্লিকেশনটি ব্যবহার করছেন তা ব্যবহারকারীর পরিষেবাগুলি সরবরাহ করতে সংস্থানটিতে অ্যাক্সেসের প্রয়োজন;
  3. রিসোর্স সার্ভার: আপনার ক্ষেত্রে REST এপিআই; এবং
  4. অনুমোদনের সার্ভার: এমন সার্ভার যা ব্যবহারকারীর শংসাপত্রগুলি উপস্থাপিত হয় এবং যা ব্যবহারকারীকে প্রমাণীকরণ করে।

যখন কোনও ক্লায়েন্ট অ্যাপ্লিকেশন চলে তখন এটি ব্যবহারকারীর উপর ভিত্তি করে সংস্থানগুলিতে অ্যাক্সেস পেয়ে যায়। যদি কোনও ব্যবহারকারীর প্রশাসকের অধিকার থাকে, তবে REST এপিআইতে ব্যবহারকারীর কাছে উপলব্ধ সংস্থান এবং ক্রিয়াকলাপ প্রশাসকের সুযোগ-সুবিধা ছাড়াই ব্যবহারকারীর চেয়ে অনেক বেশি হতে পারে।

OAuth2 একাধিক ক্লায়েন্ট এবং একাধিক সংস্থার জন্য একটি একক অনুমোদন সার্ভার ব্যবহার করার সম্ভাবনাটিকেও মঞ্জুরি দেয়। উদাহরণস্বরূপ, একটি রিসোর্স সার্ভার ফেসবুকের সাথে ব্যবহারকারীর প্রমাণীকরণ গ্রহণ করতে পারে (যা এই ক্ষেত্রে অনুমোদনের সার্ভার হিসাবে কাজ করতে পারে)। সুতরাং যখন ব্যবহারকারী কোনও অ্যাপ্লিকেশন চালায় (অর্থাৎ ক্লায়েন্ট), এটি ব্যবহারকারীকে ফেসবুকে প্রেরণ করে। ব্যবহারকারীরা তাদের শংসাপত্রগুলি ফেসবুকে টাইপ করেন এবং ক্লায়েন্টটি "টোকেন" ফিরিয়ে দেয় যা এটি সংস্থান সার্ভারে উপস্থাপন করতে পারে। রিসোর্স সার্ভার টোকেনটি দেখে এবং ফেসবুক আসলে এটি ইস্যু করে এবং ব্যবহারকারীকে সংস্থানটিতে অ্যাক্সেসের অনুমতি দেয় তা যাচাই করার পরে এটি গ্রহণ করে। এই ক্ষেত্রে, ক্লায়েন্ট কখনও ব্যবহারকারীর শংসাপত্রগুলি (যেমন তাদের ফেসবুক শংসাপত্রগুলি) দেখতে পায় না।

তবে আসুন আমরা ফেসবুকের পরিবর্তে আপনার ব্যবহারকারীর পরিচয় (এবং একটি অনুমোদন সার্ভার রয়েছে) পরিচালনা করছি যা ইতিমধ্যে আপনার ক্লায়েন্টকে টোকেন দেয়। এখন, আসুন আমরা বলি যে আপনারও একটি অংশীদার রয়েছে এবং আপনি তাদের অ্যাপ্লিকেশনটিকে (অর্থাত্ ক্লায়েন্টকে) আপনার REST এপিআইতে অ্যাক্সেসের অনুমতি দিতে চান। প্রাথমিক প্রমাণীকরণের (বা এমনকি আরওপিসি) ব্যবহার করে ব্যবহারকারী সেই ক্লায়েন্টকে শংসাপত্র সরবরাহ করবে যা অনুমোদনের সার্ভারে এটি প্রেরণ করবে। অনুমোদনের সার্ভারটি তখন একটি টোকেন সরবরাহ করবে যা ক্লায়েন্ট দ্বারা সংস্থানগুলি ব্যবহার করতে ব্যবহার করা যেতে পারে। দুর্ভাগ্যক্রমে, এর অর্থ হল যে ব্যবহারকারীর শংসাপত্রগুলি এখন সেই ক্লায়েন্টের কাছেও দৃশ্যমান। তবে, আপনি কোনও অংশীদারের অ্যাপ্লিকেশনটি (যারা আপনার সংস্থার বাহ্যিক হতে পারে) এমনকি কোনও ব্যবহারকারীর পাসওয়ার্ডও জানতে চাইবেন না। এটি এখন একটি সুরক্ষার সমস্যা এই লক্ষ্য অর্জনের জন্য,

সুতরাং, OAuth2 এর সাথে, কেউ আদর্শ ক্ষেত্রে আরওপিসি ব্যবহার করবেন না বরং অনুমোদনের কোড প্রবাহের মতো একটি আলাদা ব্যবহার করবে। এটি ব্যবহারকারীর শংসাপত্রগুলি যা কেবল অনুমোদনের সার্ভারে উপস্থাপন করা হয় তা জানার থেকে কোনও অ্যাপ্লিকেশনকে সুরক্ষা দেয়। সুতরাং, কোনও ব্যবহারকারীর শংসাপত্রগুলি ফাঁস হয় না। একই সমস্যাগুলি মৌলিক প্রমাণীকরণের সাথে প্রযোজ্য, তবে পরবর্তী বিভাগে, আমি ব্যাখ্যা করব যে কীভাবে আরওপিসি এখনও আরও ভাল, কারণ ক্লায়েন্টদের অবিচ্ছিন্ন অ্যাক্সেসের জন্য ব্যবহারকারীর শংসাপত্রগুলি আরওপিসিতে ক্লায়েন্টের দ্বারা সংরক্ষণের প্রয়োজন নেই।

নোট করুন যে ব্যবহারকারী যখন অনুমোদনের সার্ভারে যান, অনুমোদনের সার্ভারটি ব্যবহারকারীকে নিশ্চিত করতে অনুরোধ করতে পারে যে তারা ক্লায়েন্টকে তাদের পক্ষে সংস্থানগুলি অ্যাক্সেস করার অনুমতি দিতে চায় কিনা। সে কারণেই এটিকে অনুমোদন সার্ভার বলা হয় কারণ ক্লায়েন্টকে সংস্থানগুলি অ্যাক্সেস করার অনুমতি দেওয়ার প্রক্রিয়াটি প্রক্রিয়ায় অন্তর্ভুক্ত থাকে। যদি ব্যবহারকারী ক্লায়েন্টকে অনুমোদন না দেয় তবে এটি সংস্থানগুলিতে অ্যাক্সেস পাবে না। তেমনিভাবে, যদি ব্যবহারকারী নিজেরাই সংস্থানগুলিতে অ্যাক্সেস না রাখে তবে অনুমোদন সার্ভারটি অ্যাক্সেসটিকে অস্বীকার করতে পারে এবং একটি টোকেন ইস্যু করতে পারে না।

প্রাথমিক প্রমাণীকরণে, এমনকি অনুমোদন সার্ভার এবং সংস্থান সার্ভার একক সত্তায় একত্রিত হয়। সুতরাং, সংস্থান সার্ভারটি ব্যবহারকারীকে অনুমোদন দিতে চায়, তাই ক্লায়েন্টের কাছ থেকে শংসাপত্রগুলি জিজ্ঞাসা করে। ক্লায়েন্ট সেই শংসাপত্রগুলি সরবরাহ করে যা ব্যবহারকারীর অনুমোদনের জন্য রিসোর্স সার্ভার দ্বারা ব্যবহৃত হয়। এর অর্থ হ'ল একাধিক সংস্থান সার্ভারগুলি অবশ্যই ব্যবহারকারীর কাছ থেকে শংসাপত্রের প্রয়োজন হবে।

টোকেন জারি

ক্লায়েন্টরা অনুমোদনের সার্ভার থেকে টোকেন পান, তাদের চারপাশে রাখুন এবং সংস্থানগুলিতে অ্যাক্সেস করতে সেগুলি ব্যবহার করুন (টোকেনের নীচে নিজেরাই আরও বিশদ বিবরণ)। ক্লায়েন্টরা কখনই ব্যবহারকারীর পাসওয়ার্ড জানতে পারে না (আরওপিসি ব্যতীত অন্য প্রবাহে) এবং এটি সংরক্ষণ করার প্রয়োজন হয় না। আরওপিসিতে, যদিও ক্লায়েন্টগুলি ব্যবহারকারীর পাসওয়ার্ডটি জানে, তবুও তাদের এটি সংরক্ষণের দরকার নেই কারণ তারা এই টোকেনগুলিকে সংস্থানগুলি অ্যাক্সেস করতে ব্যবহার করে। বিপরীতে, মৌলিক প্রমাণীকরণের ক্ষেত্রে, যদি কোনও ক্লায়েন্ট প্রতিটি সেশনে ব্যবহারকারীর কাছে শংসাপত্র সরবরাহ করতে না চান, তবে ক্লায়েন্টটির ব্যবহারকারীর পাসওয়ার্ড সংরক্ষণ করতে হবে যাতে তারা পরের বারের মতো এটি সরবরাহ করতে পারে। এটি ক্লায়েন্ট শুধুমাত্র ওয়েব অ্যাপ্লিকেশন না হলে মৌলিক প্রমাণীকরণ ব্যবহারে এটি একটি প্রধান ত্রুটি, কুকিজ এই উদ্বেগগুলির কয়েকটি সমাধান করতে পারে। নেটিভ অ্যাপ্লিকেশন সহ, এটি সাধারণত কোনও বিকল্প নয়।

OAuth2 এর আরেকটি দিক রয়েছে যা টোকেন কীভাবে জারি করা হয় এবং সেগুলি কীভাবে কাজ করে তা অন্তর্ভুক্ত রয়েছে। যখন কোনও ব্যবহারকারী অনুমোদনের সার্ভারে (এমনকি আরওপিসিতেও) শংসাপত্রগুলি সরবরাহ করে, অনুমোদন সার্ভারটি দুটি ধরণের টোকেনগুলির মধ্যে এক বা একাধিক দিতে পারে: 1) অ্যাক্সেস টোকেন এবং 2) রিফ্রেশ টোকেন।

অ্যাক্সেস টোকেনগুলি রিসোর্স সার্ভারে প্রেরণ করা হয় যা এটি যাচাই করার পরে সংস্থানগুলিতে অ্যাক্সেস প্রদান করবে এবং সাধারণত তাদের একটি স্বল্পকালীন জীবনকাল থাকে, যেমন 1 ঘন্টা r রিফ্রেশ টোকেন ক্লায়েন্ট কর্তৃক শেষ হওয়ার পরে অন্য অ্যাক্সেস টোকেন পাওয়ার জন্য অনুমোদনের সার্ভারে প্রেরণ করা হয় এবং সাধারণত একটি দীর্ঘকালীন জীবনকাল থাকে (যেমন কয়েক মাস থেকে কয়েক মাস এমনকি কয়েক বছর পর্যন্ত)।

যখন ক্লায়েন্টটি রিসোর্স সার্ভারে অ্যাক্সেস টোকেন সরবরাহ করে, তখন এটি টোকেনটি দেখে এবং যাচাই করার পরে, অ্যাক্সেসের অনুমতি দেয় কিনা তা নির্ধারণ করার জন্য টোকেনের ভিতরে দেখে looks যতক্ষণ অ্যাক্সেস টোকেন বৈধ, ক্লায়েন্ট এটি ব্যবহার চালিয়ে যেতে পারে। আসুন আমরা ব্যবহারকারী অ্যাপ্লিকেশনটি বন্ধ করে এবং পরের দিন এটি শুরু করি এবং অ্যাক্সেস টোকেনটির মেয়াদ শেষ হয়ে গেছে। এখন ক্লায়েন্ট অনুমোদনের সার্ভারে একটি কল করবে এবং এটি মেয়াদ উত্তীর্ণ হয়নি তা ধরে নিয়ে রিফ্রেশ টোকন উপস্থাপন করবে। অনুমোদন সার্ভার, যেহেতু এটি ইতিমধ্যে টোকেন জারি করেছে, এটি যাচাই করে এবং এটি নির্ধারণ করতে পারে যে ব্যবহারকারীর আবার শংসাপত্র সরবরাহ করার প্রয়োজন নেই এবং এইভাবে ক্লায়েন্টকে অন্য অ্যাক্সেস টোকেন দেয়। ক্লায়েন্টের এখন আবার রিসোর্স সার্ভারে অ্যাক্সেস রয়েছে। এইভাবে সাধারণত ফেসবুক এবং টুইটারের ক্লায়েন্ট অ্যাপ্লিকেশনগুলি একবার একবার শংসাপত্রের জন্য জিজ্ঞাসা করে এবং তারপরে আবার ব্যবহারকারীর শংসাপত্র সরবরাহ করার প্রয়োজন হয় না। এই অ্যাপ্লিকেশনগুলির কখনই ব্যবহারকারীর শংসাপত্রগুলি জানার প্রয়োজন হয় না এবং ততবার ব্যবহারকারী যখনই অ্যাপ্লিকেশনটি শুরু করে তত সংস্থানগুলি অ্যাক্সেস করতে পারে।

এখন ব্যবহারকারী অনুমোদনের সার্ভারে যেতে পারেন (যেমন তাদের ফেসবুক ব্যবহারকারী প্রোফাইলে), কোনও ক্লায়েন্ট অ্যাপ্লিকেশনকে প্রভাবিত না করে পাসওয়ার্ড পরিবর্তন করতে পারেন। তারা সবাই সঠিকভাবে কাজ করতে থাকবে। যদি ব্যবহারকারী কোনও ডিভাইস হারিয়ে ফেলে যার উপর তারা ইতিমধ্যে রিফ্রেশ টোকেন সহ একটি অ্যাপ্লিকেশন পেয়েছিল, তবে তারা অনুমোদন সার্ভারকে (যেমন ফেসবুক) যে অ্যাপ্লিকেশনগুলির কোনও উপস্থিতি সম্মান না করে যে অ্যাপ্লিকেশনটি (যেমন ফেসবুক) সম্পন্ন করবে তাদের "লগ আউট" করতে বলতে পারে টোকেনগুলি রিফ্রেশ করুন এবং ব্যবহারকারীরা যখন এই অ্যাপ্লিকেশনগুলির মাধ্যমে সংস্থান অ্যাক্সেস করার চেষ্টা করবেন তখন তাদের শংসাপত্রগুলি সরবরাহ করতে বাধ্য করুন।

জেডাব্লুটিটি হ'ল টোকেন বিন্যাস যা সাধারণত OAuth2 এবং ওপেনআইডি কানেক্টের সাথে ব্যবহৃত হয়। টোকেনটি স্বাক্ষর করার এবং এটি যাচাই করার পদ্ধতিগুলি প্রতিটি সংস্থান সার্ভারের পরিবর্তে অন্য একটি সমাধান কার্যকর করার পরিবর্তে লাইব্রেরিগুলির সাথে উপলব্ধ রয়েছে। সুতরাং, সুবিধাটি কোডটির পুনরায় ব্যবহারযোগ্যতার মধ্যে রয়েছে যা পরীক্ষা করা হয়েছে এবং সমর্থন অব্যাহত রয়েছে।

সুরক্ষা জড়িত

উপরের যে কোনও পরিস্থিতিতে ছবিতে থাকলে বুনিয়াদি প্রমাণীকরণ দুর্বল হবে। বিকাশকারীদের জন্য OAuth2 এর জন্য একটি বিস্তৃত হুমকি মডেলও রয়েছে যা তাদের প্রয়োগগুলিতে সাধারণ দুর্বলতা এড়াতে এতে পরামর্শগুলি ব্যবহার করতে পারে। আপনি যদি হুমকির মডেলটি দেখতে পান তবে দেখতে পাবেন অনেকগুলি বাস্তবায়ন সম্পর্কিত দুর্বলতা (যেমন ওপেন রিডাইরেক্টর এবং সিএসআরএফ) এর মধ্যেও আচ্ছাদিত। আমি এই প্রতিক্রিয়াটিতে মৌলিক প্রমাণীকরণের বিপরীতে তুলনা করে যাই নি।

OAuth2 এর শেষ বড় সুবিধাটি হ'ল প্রোটোকলটি মানকযুক্ত এবং একাধিক অনুমোদন সার্ভার, ক্লায়েন্ট এবং সংস্থানকারী সার্ভার এটি সম্মান করে। বিকাশকারীদের জন্য প্রচুর লাইব্রেরি উপলব্ধ, যা রক্ষণাবেক্ষণ করা হয় যাতে সুরক্ষার সমস্যাগুলি বাস্তবায়নের ক্ষেত্রে পাওয়া যায়, আন্তঃব্যবহারযোগ্যতার অনুমতি দেওয়ার সময় গ্রন্থাগারগুলি আপডেট করা হয়।

উপসংহার

যদি আপনি একটি নতুন অ্যাপ্লিকেশন, আইএমও লিখছেন, তবে আদর্শ বিষয়টি হ'ল অন্তর্নিহিত সমস্যাগুলির কারণে বুনিয়াদি প্রমাণীকরণ এবং আরওপিসি উভয়ই এড়ানো উচিত। তবে প্রতিটি আবেদনের বিভিন্ন চাহিদা, সময়সীমা, বিকাশকারী দক্ষতা ইত্যাদি থাকে তাই সিদ্ধান্তটি কেস বাই কেস। তবে আপনার যদি বেসিক প্রমাণীকরণের চেয়ে আরও কিছু প্রয়োজন না থাকে তবে এটি বেছে নেওয়ার মাধ্যমে আপনি নিজেকে এমন একটি আর্কিটেকচারে লক করতে পারেন যা প্রসারিত করা সহজ নয় (যেমন ভবিষ্যতে যদি আপনার একাধিক সার্ভার থাকে তবে আপনার প্রয়োজন হবে না) ব্যবহারকারী তাদের প্রত্যেককে শংসাপত্র সরবরাহ করে বরং কেবল একবার অনুমোদনের সার্ভারে সরবরাহ করে, যা টোকেন ইত্যাদি সরবরাহ করতে পারে) can

নোট করুন যে তারের মাধ্যমে শংসাপত্রগুলি কীভাবে প্রেরণ করা হয় সে সম্পর্কে আমি আপনার মন্তব্যে সম্বোধন করি নি কারণ সেগুলি টিএলএস বা অনুরূপ প্রোটোকল ব্যবহার করে সুরক্ষিত করা যায়, বা অধিকারের প্রমাণ ইত্যাদি someone যে দ্বারা বিভ্রান্ত করা। উপরে বর্ণিত পার্থক্যগুলি সাধারণত স্থাপত্য স্তরে হয় এবং এইভাবেই আমি মনোনিবেশ করেছি কারণ একবার বাস্তবায়িত হলে আর্কিটেকচার পরিবর্তন করা সবচেয়ে কঠিন est

আজুর অ্যাক্টিভ ডিরেক্টরি বি 2 সি বেসিক , আমি যে পরিষেবাতে কাজ করি এবং সম্প্রতি জনসাধারণের পূর্বরূপের জন্য প্রকাশিত হয়েছিল, তৃতীয় পক্ষের অ্যাপ্লিকেশনটিকে সামাজিক আইডিপি (যেমন ফেসবুক, গুগল ইত্যাদির) সাথে আন্তঃব্যবহারযোগ্যতা সহ অনুমোদনের সার্ভার হিসাবে এএডি ব্যবহার করার অনুমতি দেয়। এটি ব্যবহারকারীদের সামাজিক আইডিপি ব্যবহার না করে তাদের নিজস্ব অ্যাকাউন্ট তৈরি করার অনুমতি দেয় এবং সেগুলি পরে প্রমাণীকরণের উদ্দেশ্যে ব্যবহার করা যেতে পারে। এর মতো আরও কয়েকটি পরিষেবা রয়েছে (যেমন আমি জানি অন্য একটি হ'ল auth0) যা বিকাশকারীরা তাদের অ্যাপ্লিকেশন এবং সংস্থানগুলির জন্য প্রমাণীকরণ এবং ব্যবহারকারী পরিচালনকে সম্পূর্ণ আউটসোর্স করতে ব্যবহার করতে পারেন। উপরে উল্লিখিত একই প্রোটোকল বৈশিষ্ট্যগুলি বিকাশকারীরা অনুমোদন সার্ভার (এএডি), একটি সংস্থান (যেমন তাদের আরএসটি এপিআই), ক্লায়েন্ট (যেমন তাদের মোবাইল অ্যাপ্লিকেশন) এবং ব্যবহারকারীদের ডিকুয়াল করতে ব্যবহৃত হয়। আমি আশা করি এই ব্যাখ্যা কিছুটা সাহায্য করবে।


প্রশস্ত কোণের জন্য ধন্যবাদ, তবে আমি মনে করি না যে এই সুবিধাগুলি (a) letting the user agent hold just the token instead of the password, (b) allowing a password change without disrupting existing client apps, (c) allowing users log out other sessionsটোকেন প্রমাণীকরণের প্রবাহের জন্য নির্দিষ্ট specific বেসিক বা টোকেন প্রমাণীকরণ উভয়ই তাদের চশমাগুলিতে ফাংশন (বি) এবং (সি) উল্লেখ করে না। (খ) এবং (গ) প্রয়োগ করা কোনও ধরণের প্রমাণীকরণের পক্ষে সম্ভব বলে মনে হয়। এটিতে পাসওয়ার্ডগুলির ট্র্যাক রাখা (সাধারণত তাদের হ্যাশগুলি অন্তর্ভুক্ত) would সুবিধা (ক) পাসওয়ার্ডের বিস্তৃত সুযোগের উপর নির্ভরশীল বলে মনে হচ্ছে।
ইয়েল ghEEz

যদি ব্যবহারকারী (সংস্থান মালিক) এর বাহ্যিক অনুমোদনের সার্ভারের সাথে কোনও শংসাপত্র না থাকে তবে ক্লায়েন্ট অ্যাপ্লিকেশনটিতে তার শংসাপত্র রয়েছে কীভাবে আমরা OAuth ব্যবহার করতে পারি? এটি আমাদের কাছে রিসোর্স মালিক (ব্যবহারকারী), ক্লায়েন্ট (ব্যবহারকারীর প্রতিনিধিত্ব করছে এবং ব্যবহারকারীর জন্য শংসাপত্রও রয়েছে) এবং রিসোর্স সার্ভার রয়েছে। কোনও রিসোর্স সার্ভার কীভাবে ব্যবহারকারীকে অনুমোদন ও অনুমোদন দিতে পারে?
অরুণ অবানাথন

3

আমি বিশ্বাস করি যে আপনি কোনও ইউআরএলটিতে জিইটি ভেরিয়েবলের চারপাশের এনক্রিপশন সম্পর্কে ভুল তথ্য দিয়েছেন

একটি অনুরোধে জিইটি ভেরিয়েবলগুলি দেখতে পাওয়া কেবলমাত্র লোকেরা হ'ল আসল কম্পিউটার এবং প্রাপ্ত সার্ভার ( লিঙ্ক )।

এইচটিটিপিএস অনুরোধটি প্রেরিত ডোমেনের ভিত্তিতে কেবল ডিএনএস লুক্কিট এনক্রিপ্ট করা হয় না। অন্য সমস্ত কিছু, বন্দরগুলি, জিইটি ভেরিয়েবলগুলি, সংস্থান আইডি এনক্রিপ্ট করা আছে।

এর একমাত্র সতর্কতা হ'ল গ্রহণকারী সার্ভারটি সম্পূর্ণ অনুরোধের পাথটি লগ আউট করতে পারে তবে আপনি তার নিয়ন্ত্রণে আছেন যাতে আপনি সেই ডেটাটিকে সুরক্ষিত করতে পারেন তবে আপনি উপযুক্ত দেখেন।


3

আপনার REST এপিআই সুরক্ষিত করার জন্য বেসিক প্রমাণীকরণ কোনও ভাল উপায় নয়। আমি এই উত্তরের কারণগুলি ব্যাখ্যা করেছি ।

আপনি যখন একটি REST এপিআই তৈরি করেন, আপনি OAuth2 পদগুলিতে রিসোর্স সার্ভারটি প্রয়োগ করছেন । আপনার সমস্ত এপিআইয়ের যা যা করা দরকার তা যাচাই করা উচিত যে অনুমোদন HTTP শিরোনামের অনুরোধের সাথে পাশ করা টোকেনটি বৈধ এবং বিশ্বস্ত ইস্যুকারীের কাছ থেকে। কোনও লাইব্রেরি না থাকলে কীভাবে বৈধতা প্রয়োগ করতে হয় তার পদক্ষেপগুলির জন্য এই লিঙ্কটি দেখুন ।

আপনার ক্লায়েন্ট কীভাবে অনুমোদনের সার্ভার থেকে টোকেন অর্জন করবে তা নির্ভর করে এটি কী ধরণের ক্লায়েন্ট । মনে রাখবেন, আপনি অনুমোদনের সার্ভারের সাথে ক্লায়েন্টটিকে নিবন্ধিত করার সময় আপনি যে ধরণের ক্লায়েন্ট ব্যবহার করতে যাচ্ছেন তা উল্লেখ করতে হবে।

কোনও ওয়েব অ্যাপ্লিকেশন আপনার সার্ভারের সাথে কথা বলার ক্ষেত্রে এটি অনুমোদন কোড অনুদান ব্যবহার করতে পারে । যদি এটি কোনও মোবাইল অ্যাপ্লিকেশন বা জাভাস্ক্রিপ্ট অ্যাপের মতো অবিশ্বস্ত ক্লায়েন্ট হয় তবে তার অন্তর্ভুক্ত অনুদানটি ব্যবহার করা উচিত ।

ব্যাকএন্ড পরিষেবাগুলির জন্য যা কোনও সংস্থার মালিকের সাথে যোগাযোগ করতে পারে না, আপনি ক্লায়েন্ট শংসাপত্রের অনুদান ব্যবহার করতে পারেন । কমান্ড লাইন সরঞ্জামগুলির জন্য, আপনি ক্লায়েন্ট শংসাপত্র বা সংস্থান মালিকের পাসওয়ার্ড অনুদান ব্যবহার করতে পারেন ।

এগুলি নির্ভর করে আপনি কোন ধরণের ক্লায়েন্ট ব্যবহার করছেন তার উপর।

অবশেষে, একটি জেডাব্লুটি টোকেন যাচাইকরণ অনুমোদনের সার্ভারের সাথে কথা বলার প্রয়োজন ছাড়াই সংস্থান সার্ভারে ঘটে। এটি আরও ভাল স্কেলেবল আর্কিটেকচারের দিকে নিয়ে যায় যার পরে প্রতিটি ক্লায়েন্টের জন্য ব্যক্তিগত ডেটা সন্ধান করা দরকার এমন সমাধানগুলি।


1

এটি হয় সুরক্ষিত বা নিরাপদ নয়। কোন কোন আরো কম. বেস 64 থাকায় বেসিক অথ (বা কিছু) আরও সুরক্ষিত হয় না।

এটি যদি HTTP এর মতো এনক্রিপ্ট করা পাইপ ব্যবহার করে থাকে তবে এনক্রিপ্ট করা কিছু প্রেরণে কোনও ভুল নেই।

OAuth এর আরও বৈশিষ্ট্য রয়েছে, আপনার প্রয়োজন হলে এটি ব্যবহার করুন। অন্য যে কোনও কিছুর জন্য, যেমন ব্যাংকিং, বেসিক চ্যালেঞ্জ-প্রতিক্রিয়া ব্যবহার করা ভাল এবং সুরক্ষিত।


0

আমি মনে করি আপনাকে প্রথমে পরিভাষাগুলি বুঝতে হবে। আপনি তুলনা করছেন- অনুমোদন এবং ডিজিটাল স্বাক্ষর

ওআউথ অনুমোদনের জন্য উন্মুক্ত স্ট্যান্ডার্ড , যেখানে অ্যামাজন কী করছে (আপনার প্রশ্নে প্রদত্ত নিবন্ধ এবং বিবরণ অনুসারে) একটি বৈধ ডিজিটাল স্বাক্ষর তৈরি করছে যা কোনও প্রাপককে (এখানে অ্যামাজন) বিশ্বাস করার কারণ দেয় যে এই বার্তাটি একটি পরিচিত দ্বারা তৈরি করা হয়েছিল প্রেরক, যে প্রেরক বার্তা প্রেরণ করা অস্বীকার করতে পারবেন না ( প্রমাণীকরণ এবং অ-প্রত্যাখ্যান)

কোন অনুমোদনের প্রক্রিয়াটি ব্যবহার করার জন্য এটি আপনার ব্যবহারের ক্ষেত্রে কমবেশি নির্ভর করে।

নীচে এখানে স্ট্যাক ওভারফ্লোতে পাওয়া যাবে :

একক প্রয়োজনীয় শিরোনাম গণনা করার জন্য বেসিক প্রমাণীকরণের জন্য খুব সাধারণ হ্যাশিংয়ের দরকার হয় - OAuth সন্দেহ ছাড়াই আরও ব্যয়বহুল প্রমাণীকরণ। উপলব্ধি করার জন্য গুরুত্বপূর্ণ বিষয়টি হল দুটি প্রমাণীকরণ প্রক্রিয়া সম্পূর্ণ ভিন্ন উদ্দেশ্যে পরিবেশন করে। বেসিক অ্যাথ একটি ক্লায়েন্টকে প্রাথমিক অ্যাপ্লিকেশনটিতে অনুমোদনের জন্য। OAuth একটি প্রাথমিক অ্যাপ্লিকেশন থেকে ক্লায়েন্টের ডেটা অ্যাক্সেস করার জন্য কোনও তৃতীয় পক্ষকে অনুমোদিত করার জন্য। উভয়েরই তাদের জায়গা রয়েছে এবং একটির অপরটি নির্বাচন করা প্রয়োগের বিশেষ ব্যবহারের ক্ষেত্রে চালিত হওয়া উচিত।

এবং এখানে দুটি তুলনা আরও আকর্ষণীয় নিবন্ধ

সরল সুরক্ষার দৃষ্টিকোণ থেকে এসএসএলের উপর বেসিক প্রমাণীকরণ আসলে মোটামুটি দায়বদ্ধ। যখন আমরা ব্যবহারকারীর নাম এবং পাসওয়ার্ডগুলির সাথে ঝগড়া করি তখন এটি কার্যকর করা খুব সহজ কারণ বুনিয়াদি লেখাগুলি একটি প্রচলিত সমাধান। শংসাপত্রগুলির সংক্রমণ এসএসএল-এর মাধ্যমে এনক্রিপ্ট করা হয় এবং এইচটিটিপি ক্লায়েন্ট এবং সিস্টেমে "অনুমোদন" শিরোনামটি সর্বব্যাপী।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.