क्या आप URL पैरामीटर में HTTP बेसिक प्रमाणीकरण के लिए उपयोगकर्ता / पास कर सकते हैं?


153

मेरा मानना ​​है कि यह संभव नहीं है, लेकिन मुझे पता है कि यह काम करता है। मुझे यह भी पता नहीं है कि क्या मापदंडों की कोशिश करनी है, और मुझे यह कहीं भी प्रलेखित नहीं मिला है।

मैंने http://myserver.com/~user=username&password=mypassword की कोशिश की, लेकिन यह काम नहीं करता है।

क्या आप इस बात की पुष्टि कर सकते हैं कि उपयोगकर्ता को HTTP पैरामीटर (GET या POST) से गुजरना / पारित करना वास्तव में संभव नहीं है?



@ ससम - क्या? पूरा URL कैसा दिखेगा?
ripper234

4
सभी ietf.org/rfc/rfc1738.txt (3.1) में
Smudge

@sam - क्षमा करें, मैं किसी कारण से आपकी टिप्पणी को स्वीकार करने में विफल रहा।
ripper234

जवाबों:


199

मानक HTTP क्रम में क्वेरी पैरामीटर के माध्यम से उपयोगकर्ता नाम और पासवर्ड को पारित करना वास्तव में संभव नहीं है। इसके बजाय, आप एक विशेष URL प्रारूप का उपयोग करते हैं, जैसे: http://username:password@example.com/- यह मानक HTTP "प्राधिकरण" हेडर में क्रेडेंशियल्स भेजता है।

यह संभव है कि जो भी आप बोल रहे थे वह कस्टम मॉड्यूल या कोड के बारे में सोच रहा था जो क्वेरी मापदंडों को देखता था और क्रेडेंशियल्स को सत्यापित करता था। यह मानक एचटीटीपी मानक नहीं है, हालांकि, यह एक एप्लिकेशन-विशिष्ट चीज है।


1
धन्यवाद, यह वही है जो मैं देख रहा था ... यह महत्वपूर्ण नहीं है कि यह जीईटी पैरामीटर है, बस मैं इसे URL में तैयार कर सकता हूं।
ripper234

42
FYI करें, http://username:password@example.comप्रारूप अब IE या क्रोम द्वारा समर्थित नहीं है, यदि अन्य लोग पहले से ही सूट नहीं करते हैं तो आश्चर्यचकित नहीं होंगे।
टीजे क्राउडर

11
वास्तव में क्रोम में ठीक काम करता है। केवल IE को खराब किया जा रहा है।
डेमियन ओवरिम

1
@DamienOvereem क्रोम के किस संस्करण पर आप? मैं मैक ओएस एक्स 37 पर हूँ और यह मेरे लिए काम नहीं करता है
क्रिस DaMour

11
मैंने तब से सीखा है कि क्रोम ने इसे कुछ समय के लिए अक्षम कर दिया था, लेकिन बाद में इस सुविधा को फिर से सक्षम कर दिया। मुझे यह भी पता चला है कि सफारी इस प्रकार के लिंक में चलने पर फ़िशिंग त्रुटियों को फेंक देगा .. मूल रूप से यूआरएल-आधारित http प्रमाणीकरण का समय समाप्त हो गया है ..
डेमियन ओवरिम

18

URL में मूल प्रमाणीकरण पैरामीटर पास करना अनुशंसित नहीं है

इस उद्देश्य के लिए एक प्राधिकरण शीर्ष लेख फ़ील्ड है इसे यहाँ देखें: http हेडर सूची

इसका उपयोग कैसे करें यह यहां लिखा गया है: मूल पहुंच प्रमाणीकरण

वहां आप यह भी पढ़ सकते हैं कि यद्यपि यह अभी भी कुछ ब्राउज़रों द्वारा समर्थित है, लेकिन url में मूल प्राधिकरण क्रेडेंशियल्स को जोड़ने के सुझाए गए समाधान की सिफारिश नहीं की गई है।

RFC 2617 में अध्याय 4.1 भी पढ़ें - बेसिक प्रमाणीकरण का उपयोग न करने के बारे में अधिक जानकारी के लिए HTTP प्रमाणीकरण।


प्रमाणीकरण मानकों को क्वेरी स्ट्रिंग में पास करना

OAuth या अन्य प्रमाणीकरण सेवाओं का उपयोग करते समय, आप अक्सर अपने शीर्षक टोकन को एक प्राधिकरण शीर्षलेख के बजाय क्वेरी स्ट्रिंग में भेज सकते हैं, इसलिए कुछ इस प्रकार है:

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD

और एक URL में एक प्राधिकरण शीर्षलेख को एन्कोडिंग के बारे में कैसे जाना जाता है?
Womble

2
क्या यह नहीं है कि आपके द्वारा कहा गया फॉर्म अब हटा दिया गया था?
Womble

2
आपके द्वारा "इस उद्देश्य के लिए एक प्राधिकरण शीर्ष लेख फ़ील्ड है" के साथ पूछे गए प्रश्न का उत्तर था कि कैसे यूआरएल में प्रमाणीकरण मापदंडों को रखा जाए । यदि आप HTTP हेडर फ़ील्ड को एक URL (जो आप नहीं कर सकते हैं) में एनकोड नहीं कर सकते हैं, तो आपका उत्तर एक गैर अनुक्रमिक है।
Womble

क्या आप इस बात का हवाला दे सकते हैं कि यूआरआई मानक में कहा गया है कि यूआरआई में बुनियादी प्रमाणीकरण मानकों को पारित किया गया है? RFC 2396 केवल यह कहता है कि यह "NOT RECOMMENDED" है क्योंकि सादे पाठ में प्रमाणीकरण विवरण कई परिस्थितियों में है, एक अच्छा विचार नहीं है (जिनमें से मैं सहमत हूं), जबकि RFC 7235 में कुछ भी उल्लेख नहीं है। ऐनक में कहीं भी मैं खोज सकता हूँ कहता है कि यह पदावनत है।
रयान

1
@ रजाई: मुझे माफी मांगनी होगी, आप वास्तव में सही हैं। आपका संकेत है कि कल्पना को "बदल दिया गया" ने मुझे आगे की जांच करने के लिए उकसाया (प्रकाशित होने / गिने जाने के बाद आरएफसी को कभी संशोधित नहीं किया जाता)। मैंने अभी पाया कि RFC 2396 वास्तव में RFC 3986 द्वारा अधिगृहीत किया गया है , जिसे मैं पहले नहीं पा सका था। RFC 3986 में यूज़रनेम का पासवर्ड न होने का उल्लेख है: पासवर्ड सिंटेक्स:Use of the format "user:password" in the userinfo field is deprecated.
रेयान

17

http: // उपयोगकर्ता नाम: password@example.com फ़ायरफ़ॉक्स, क्रोम, सफारी के लिए काम करेगा IE के लिए नहीं।

Microsoft ज्ञानकोष


2
यह क्षमता Chrome 19+ से हटा दी गई थी। कोड देखें। http://www.p/chromium/issues/detail
मोशे काटज़

4
उस बग रिपोर्ट को पढ़ने से, यह क्रोम 20 में वापस जुड़ गया। निश्चित रूप से, मैं इसके बारे में बहुत सारी शिकायतें देखने की उम्मीद करूंगा अगर यह नहीं हुआ होता।
Womble

मैंने अब इसे इंटरनेट एक्सप्लोरर के लिए अनुरोध किया: Connect.microsoft.com/IE/feedback/details/873575/… । थोड़ा अलग उपयोग-मामला, लेकिन एक ही मुद्दे को संबोधित करता है;)
साइमनसिमिटी

@Diago अगर पासवर्ड में '@' होता है तो यह काम नहीं करता है। यह घातक त्रुटि देता है, क्या कोई मुझे बता सकता है कि हम एक ही बार में उपयोगकर्ता नाम और पासवर्ड कैसे दे सकते हैं
आशीष जैन

@ आशीषजैन - मैं @पासवर्ड के रूप में भागने की कोशिश करूँगा %40। (मुझे नहीं पता कि यह काम करता है, हालांकि, और यह सर्वर या ब्राउज़र / सर्वर संयोजन पर निर्भर हो सकता है।)
डेविड मोल्स

0

यह (स्पष्ट रूप से) जीईटी मापदंडों में किसी भी स्ट्रिंग को भेजने के लिए संभव है, हालांकि लॉगिन और पासवर्ड भेजने की अनुशंसा नहीं की जाती है क्योंकि यह अत्यधिक दिखाई दे सकता है, खासकर अगर यह AJAX अनुरोध में नहीं है।

फिर भी, आपको लॉगिन और पासवर्ड निकालने के लिए सर्वर पेज को कोड करने की आवश्यकता होगी और फिर जो भी आवश्यक हो, उन्हें मान्य करें और उनका उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.