আমি কীভাবে ব্রাউজারের প্রমাণীকরণ ডায়ালগটি দমন করতে পারি?


85

আমার ওয়েব অ্যাপ্লিকেশনটিতে একটি লগইন পৃষ্ঠা রয়েছে যা একটি এজেএক্স কলের মাধ্যমে প্রমাণীকরণের শংসাপত্র জমা দেয়। যদি ব্যবহারকারী সঠিক ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রবেশ করে তবে সবকিছু ঠিক আছে, তবে তা না হলে নিম্নলিখিতটি ঘটে:

  1. ওয়েব সার্ভার নির্ধারণ করে যে অনুরোধটিতে একটি সুগঠিত অনুমোদনের শিরোনাম অন্তর্ভুক্ত ছিল, শিরোনামের শংসাপত্রগুলি সফলভাবে প্রমাণীকরণ করে না।
  2. ওয়েব সার্ভার একটি 401 স্থিতি কোড দেয় এবং সমর্থিত প্রমাণীকরণের ধরণের তালিকার এক বা একাধিক ডাব্লুডাব্লুডাব্লু-প্রমাণীকরণ শিরোনাম অন্তর্ভুক্ত করে।
  3. ব্রাউজারটি সনাক্ত করে যে XMLHttpRequest অবজেক্টে আমার কলটির প্রতিক্রিয়া 401 এবং প্রতিক্রিয়াটিতে WWW- প্রমাণীকরণ শিরোনাম রয়েছে। এরপরে এটি ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য আবার জিজ্ঞাসা করে একটি প্রমাণীকরণ ডায়ালগ পপ আপ করে।

পদক্ষেপ 3 পর্যন্ত এটি ঠিক আছে I আমি ডায়ালগটি পপ আপ করতে চাই না, আমি আমার AJAX কলব্যাক ফাংশনটিতে 401 প্রতিক্রিয়াটি পরিচালনা করতে চাই। (উদাহরণস্বরূপ, লগইন পৃষ্ঠায় একটি ত্রুটি বার্তা প্রদর্শন করে)) আমি অবশ্যই ব্যবহারকারী তাদের ব্যবহারকারী নাম এবং পাসওয়ার্ডটি অবশ্যই পুনরায় প্রবেশ করিয়ে দিতে চাই, তবে আমি তাদেরকে আমার বন্ধুত্বপূর্ণ, আশ্বস্ত লগইন ফর্মটি দেখতে চান, ব্রাউজারের কুরুচিপূর্ণ নয়, ডিফল্ট প্রমাণীকরণ ডায়ালগ

ঘটনাক্রমে, সার্ভারের উপরে আমার কোনও নিয়ন্ত্রণ নেই, সুতরাং এটি একটি কাস্টম স্থিতি কোড (যেমন, 401 ব্যতীত অন্য কিছু) ফিরিয়ে আনা কোনও বিকল্প নয়।

প্রমাণীকরণের ডায়ালগটি দমন করার কোনও উপায় আছে কি? বিশেষত, আমি ফায়ারফক্স 2 বা তার পরে প্রমাণীকরণের প্রয়োজনীয় সংলাপটি চাপতে পারি? আইই 6 এবং তার পরে সংযুক্ত [হোস্ট] সংলাপটি দমন করার কোনও উপায় আছে কি ?



লেখকের অতিরিক্ত তথ্য সম্পাদনা করুন (18 সেপ্টেম্বর):
আমার যুক্ত করা উচিত যে ব্রাউজারের প্রমাণীকরণ ডায়ালগ পপিংয়ের সাথে আসল সমস্যাটি হ'ল এটি ব্যবহারকারীকে অপর্যাপ্ত তথ্য দেয়।

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

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

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


4
উত্তরটি কোনও ভাল উত্তর নেই answer মারিজন প্রস্তাবিত হ্যাকগুলি যত তাড়াতাড়ি কাছাকাছি আসে। অবশ্যই, যদি সম্ভব হয় তবে সার্ভার এবং আপনার জাভাস্ক্রিপ্ট দ্বারা বোঝা একটি কাস্টম প্রমাণীকরণ ব্যবহার করা, তবে ব্রাউজার দ্বারা নয় the
ডিজিভিড

আমি একই সমস্যার মুখোমুখি হয়েছি এবং স্ট্যাকওভারফ্লো (আমার ব্লগ নয়) এ এখানে একটি মন্তব্যে এই লিঙ্কটি পেয়েছি: লাউডভচারার.ব্লগস্পট.সিএ / ২০০১/১০/২ আশা করি এটি আপনাকে সহায়তা করবে।
gies0r

উত্তর:


17

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

  1. সম্ভবত ফ্ল্যাশ এটি অন্যভাবে পরিচালনা করে (আমি এখনও চেষ্টা করি নি), তাই কোনও ফ্ল্যাশ মুভি থাকার ফলে অনুরোধটি সহায়তা করতে পারে।

  2. আপনি নিজের সার্ভারে যে পরিষেবাটি অ্যাক্সেস করছেন সেটির জন্য আপনি একটি 'প্রক্সি' সেট আপ করতে পারেন এবং এতে প্রমাণীকরণের শিরোনামগুলিকে কিছুটা সংশোধন করতে হবে, যাতে ব্রাউজারটি তাদের চিনতে না পারে।


"সম্ভব নয়" সঠিক উত্তর বলে মনে হচ্ছে, যদিও আমি সন্দেহ করি যে "প্রক্সি" হ্যাকটি কৌশলটি করবে do
ডিজিভিড

@ স্টোবার আপনি যে নকলটি পোস্ট করেছেন তার জন্য গৃহীত উত্তরটি আসলে এই প্রশ্নের উত্তর হিসাবে লিঙ্ক করে!
8bitjunkie

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

4
আমি এই কোড দ্বারা অননুমোদিত 401 ত্রুটি ধরার চেষ্টা করি: aj .জ্যাক্সসেটআপ ({স্ট্যাটাস কোড: {401: ফাংশন () {রিডাইরেক্টটলগিন ();}}}); তবে IE সর্বদা ব্রাউজারের প্রমাণীকরণ ডায়ালগ দেখায়। আমি কীভাবে এইএসপি.নেট এমভিসি 2 তে এই সংলাপটি দমন করতে পারি?
পলপি

@ পলপ, যেমন বলা হয়েছে, আপনার এমন একটি প্রক্সি প্রয়োজন যা তাদের ডাব্লুডাব্লুডাব্লু-প্রমাণীকরণ শিরোনামের 401 স্থিতি কোড প্রতিক্রিয়া বা কোনও প্রকারের কাস্টম সার্ভার বাস্তবায়নকে সরিয়ে ফেলবে।
মোটিস

51

আমি এখানে একই সমস্যাটির মুখোমুখি হয়েছি এবং আমার সংস্থার ব্যাকএন্ড ইঞ্জিনিয়ার এমন একটি আচরণ প্রয়োগ করেছেন যা আপাতদৃষ্টিতে একটি ভাল অনুশীলন হিসাবে বিবেচিত হয়: যখন কোনও ইউআরএলে কল আসে 401, যখন ক্লায়েন্ট শিরোনামটি সেট করে থাকে X-Requested-With: XMLHttpRequestতবে সার্ভার www-authenticateতার মধ্যে শিরোনামটি ফেলে দেয় প্রতিক্রিয়া

পার্শ্ব প্রতিক্রিয়া হ'ল ডিফল্ট প্রমাণীকরণ পপআপ উপস্থিত হয় না।

আপনার এপিআই কলটিতে X-Requested-Withশিরোনাম সেট করা আছে তা নিশ্চিত করুন XMLHttpRequest। যদি তাই হয় তবে এই ভাল অভ্যাস অনুসারে সার্ভারের আচরণ পরিবর্তন করা ছাড়া আর কিছুই করার নেই ...


4
যদি ব্যাকএন্ডটি জাভা / স্প্রিং ভিত্তিক হয় তবে DelegatingAuthenticationEntryPointআপনার জন্য এই আচরণটি পরিচালনা করে।
ডেরিক স্লাইফ

এই জন্য আপনাকে ধন্যবাদ. অনেক লাইব্রেরি
ডিভাইস

4
কোন ধারণা কীভাবে এনজিনেক্সে এটি করবেন? "যখন কোনও ইউআরএল-তে কোনও কল একটি 401 ফেরত দেয়, ক্লায়েন্টটি যদি এক্স-রিকুয়েস্টড-উইথ: এক্সএমএলএইচটিটিপিআরকেস্ট সেট করে থাকে, সার্ভার তার প্রতিক্রিয়ায় www-অনুমোদনের শিরোনামকে ফেলে দেয়" "
মার্কমনল

18

নিম্নলিখিত দুটি শর্ত পূরণ হলে ব্রাউজারটি একটি লগইন প্রম্পট পপ আপ করে:

  1. HTTP স্থিতি 4XX xx
  2. WWW-Authenticate শিরোনাম প্রতিক্রিয়া উপস্থিত

আপনি যদি HTTP প্রতিক্রিয়াটি নিয়ন্ত্রণ করতে পারেন, তবে আপনি WWW-Authenticateপ্রতিক্রিয়া থেকে শিরোনামটি সরিয়ে ফেলতে পারবেন এবং ব্রাউজারটি লগইন ডায়ালগ পপআপ করবে না।

আপনি যদি প্রতিক্রিয়াটি নিয়ন্ত্রণ করতে না পারেন তবে প্রতিক্রিয়া WWW-Authenticateথেকে শিরোনাম ফিল্টার করার জন্য একটি প্রক্সি সেটআপ করতে পারেন ।

আমি যতদূর জানি (আমি ভুল হলে আমাকে সংশোধন করতে দ্বিধা বোধ করি), একবার ব্রাউজার WWW-Authenticateশিরোনাম পাওয়ার পরে লগইন প্রম্পট রোধ করার কোনও উপায় নেই ।


ভাল তথ্য। বৈধ সংক্রান্ত WWW-Authenticateহেডার মূল্যবোধ, দেখতে stackoverflow.com/a/1748451/225217
Brice Roncace

6

আমি বুঝতে পারি যে এই প্রশ্ন এবং এর উত্তরগুলি খুব পুরানো। কিন্তু, আমি এখানে শেষ। সম্ভবত অন্যরাও করবে।

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

403-তে আইইটিএফ ডকুমেন্ট থেকে:

এমন একটি সার্ভার যা বৈধ শংসাপত্রগুলি গ্রহণ করে যা অ্যাক্সেস পাওয়ার পক্ষে পর্যাপ্ত নয় 403 (নিষিদ্ধ) স্থিতি কোডের সাথে সাড়া দেওয়া উচিত


4

আপনি যখন XMLHttpRequest অবজেক্ট তৈরি করবেন তখন মোজিলায় আপনি নিম্নলিখিত স্ক্রিপ্টের সাহায্যে এটি অর্জন করতে পারেন:

xmlHttp=new XMLHttpRequest();
xmlHttp.mozBackgroundRequest = true;
xmlHttp.open("GET",URL,true,USERNAME,PASSWORD);
xmlHttp.send(null);

২ য় লাইনটি ডায়ালগ বাক্সকে বাধা দেয় ....


4
এটি ফায়ারফক্স 2 এর অধীনে কিছুই করতে পারে না বলে মনে হচ্ছে এটি ফায়ারফক্স 3 এর অধীনে একটি ডিওএম সুরক্ষা ত্রুটি, এনএস_এআরআরআর_ডম_এসকিউরিটি_ইআরআর কোড 1000 এর
ফলস্বরূপ

2

আপনি কোন সার্ভার প্রযুক্তি ব্যবহার করেন এবং প্রমাণীকরণের জন্য আপনি কোনও নির্দিষ্ট পণ্য ব্যবহার করেন?

যেহেতু ব্রাউজারটি কেবল এটির কাজ করছে, আমি বিশ্বাস করি 401 স্থিতি কোডটি না ফেরানোর জন্য আপনাকে সার্ভার সাইডে জিনিসগুলি পরিবর্তন করতে হবে। এটি কাস্টম প্রমাণীকরণ ফর্মগুলি ব্যবহার করে করা যেতে পারে যা প্রমাণীকরণ ব্যর্থ হলে কেবল আবার ফর্মটি ফেরত দেয়।


2

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


মোজ-উপসর্গটি কোনও ক্রস-ব্রাউজার সমর্থন বোঝায় না (যদি না আপনি অন্য ব্রাউজারগুলির প্রতিটিতে কাজ করে এমন একই পরামিতিগুলি খুঁজে না পান)।
ব্রিলিয়ান্ড

2

jan.vdbergh এর সত্যতা রয়েছে, যদি আপনি অন্য স্থিতির কোডের জন্য 401 সার্ভারের পাশে পরিবর্তন করতে পারেন তবে ব্রাউজারটি পপ-আপটিকে ধরবে এবং আঁকবে না। অন্য সমাধান হ'ল অন্য কাস্টম শিরোনামের জন্য ডাব্লুডাব্লুডাব্লু-প্রমাণীকরণ শিরোনাম পরিবর্তন করা যেতে পারে। আমি বিশ্বাস করি না যে ভিন্ন ব্রাউজার কেন এটি সমর্থন করতে পারে না, ফায়ারফক্সের কয়েকটি সংস্করণে আমরা মোজব্যাকগ্রাউন্ডআরকোয়েস্টের সাহায্যে এক্সএইচআর অনুরোধ করতে পারি, তবে অন্যান্য ব্রাউজারগুলিতে ?? এখানে, ক্রোমিয়ামে এই সমস্যাটির সাথে একটি আকর্ষণীয় লিঙ্ক রয়েছে।


1

আমার এমভিসি 5 এবং ভিপিএন নিয়ে একই সমস্যা রয়েছে যেখানে আমরা যখনই ভিপিএন ব্যবহার করে ডিএমজেডের বাইরে থাকি তখন আমরা নিজেরাই এই ব্রাউজার বার্তার উত্তর দিতে পারি having .Net ব্যবহার করে আমি কেবল ত্রুটি ব্যবহার করে ত্রুটির রাউটিং পরিচালনা করি

<customErrors defaultRedirect="~/Error"  >
  <error statusCode="401" redirect="~/Index"/>
</customErrors>

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

      DirectoryEntry entry = new DirectoryEntry("LDAP://OurDomain");
      DirectorySearcher Dsearch = new DirectorySearcher(entry);
      Dsearch.Filter = "(SAMAccountName=" + UserID + ")";
      Dsearch.PropertiesToLoad.Add("cn");

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


1

আমি নোড, এক্সপ্রেস এবং পাসপোর্ট ব্যবহার করছি এবং একই সমস্যা নিয়ে লড়াই করছি। আমি শিরোনামটি www-authenticateখালি স্ট্রিংয়ে স্পষ্ট করে সেট করে এটি কাজ করতে পেরেছি । আমার ক্ষেত্রে এটি দেখতে এরকম দেখাচ্ছে:

(err, req, res, next) => {
  if (err) {
    res._headers['www-authenticate'] = ''
    return res.json(err)
  }
}

আমি আশা করি যে কাউকে সাহায্য করে!


0

সিলেক্ট না করা সি # এর পরিবর্তে এখানে ActionAttributeফিরে আসে এবং বেসিক লেখক কথোপকথনটি 'গ্রাস করে'।400401

public class NoBasicAuthDialogAuthorizeAttribute : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        base.HandleUnauthorizedRequest(filterContext);
        filterContext.Result = new HttpStatusCodeResult(400);
    }
}

নিম্নলিখিতগুলির মতো ব্যবহার করুন:

[NoBasicAuthDialogAuthorize(Roles = "A-Team")]
public ActionResult CarType()
{
 // your code goes here
}

আশা করি এটি আপনার কিছুটা সময় সাশ্রয় করবে।

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