Basic Auth हेडर जनरेटर

यूज़रनेम और पासवर्ड दर्ज करें और Authorization: Basic हेडर के साथ तुरंत चलाने लायक curl कमांड पाएँ, या किसी मौजूदा हेडर को पेस्ट करके उसके अंदर छिपे क्रेडेंशियल देखें।

Authorization हेडर
curl कमांड

मौजूदा हेडर डिकोड करें

पूरी तरह आपके ब्राउज़र में चलता है। कुछ भी अपलोड नहीं होता।

उपयोग कैसे करें

  1. यूज़रनेम और पासवर्ड दर्ज करें।
  2. बना हुआ Authorization हेडर अपने क्लाइंट में कॉपी करें, या अनुरोध को टेस्ट करने के लिए curl कमांड का उपयोग करें।
  3. किसी मौजूदा हेडर को पढ़ने के लिए उसे “मौजूदा हेडर डिकोड करें” वाले हिस्से में पेस्ट करें, यूज़रनेम और पासवर्ड दिख जाएँगे।

HTTP Basic ऑथेंटिकेशन कैसे काम करता है

Basic ऑथेंटिकेशन RFC 7617 में परिभाषित है। जब कोई संसाधन सुरक्षित होता है, तो सर्वर 401 Unauthorized और WWW-Authenticate: Basic realm="..." हेडर के साथ जवाब देता है। इसके बाद क्लाइंट यूज़रनेम और पासवर्ड को कोलन से जोड़ता है, परिणाम को Base64 में एनकोड करता है और उसे हर अनुरोध के साथ भेजता है:

Authorization: Basic base64(username ":" password)

# RFC 7617 का उदाहरण: यूज़र "Aladdin", पासवर्ड "open sesame"
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

ब्राउज़र यह आदान-प्रदान ख़ुद सँभालते हैं और लॉगिन डायलॉग दिखाते हैं, जबकि स्क्रिप्ट और API क्लाइंट आमतौर पर सर्वर के चैलेंज का इंतज़ार किए बिना पहले ही अनुरोध के साथ हेडर भेज देते हैं। चूँकि कोलन दोनों मानों को अलग करता है, इसलिए यूज़रनेम में कोलन नहीं होना चाहिए; पासवर्ड में हो सकता है। सर्वर अपने चैलेंज में charset="UTF-8" जोड़कर बता सकता है कि गैर-ASCII क्रेडेंशियल UTF-8 में अपेक्षित हैं।

Base64 एन्क्रिप्शन नहीं है

हेडर देखने में उलझा हुआ लगता है, लेकिन इसे देखने वाला कोई भी व्यक्ति कुछ ही सेकंड में पासवर्ड वापस पा सकता है, चाहे इस पेज के डिकोडर से या किसी भी Base64 डिकोडर से। Basic ऑथेंटिकेशन केवल HTTPS पर ही स्वीकार्य है, जहाँ TLS रास्ते में हेडर को एन्क्रिप्ट रखता है। यह भी ध्यान रखें कि:

  • क्रेडेंशियल हर अनुरोध के साथ जाते हैं, इसलिए सादे HTTP पर भेजा गया एक भी अनुरोध उन्हें उजागर कर देता है;
  • प्रॉक्सी, लोड बैलेंसर और डीबगिंग टूल Authorization हेडर को लॉग कर सकते हैं, जब तक उन्हें ऐसा न करने के लिए सेट न किया जाए;
  • ब्राउज़र दर्ज किए गए क्रेडेंशियल बंद होने तक याद रखते हैं, और लॉग आउट करने का कोई मानक तरीक़ा नहीं है।

सार्वजनिक API के लिए रद्द किए जा सकने वाले API टोकन या OAuth बेहतर विकल्प हैं। आंतरिक टूल, स्टेजिंग साइटों और TLS पर होने वाली सर्वर-से-सर्वर कॉल के लिए Basic ऑथेंटिकेशन अब भी एक उचित विकल्प है।

कोड से हेडर भेजना

# curl हेडर ख़ुद बनाता है
curl -u 'user:password' https://api.example.com/

// JavaScript fetch (btoa केवल Latin-1 अक्षर सँभाल पाता है)
fetch(url, { headers: { Authorization: 'Basic ' + btoa('user:password') } })

# Python requests
requests.get(url, auth=('user', 'password'))

क्रेडेंशियल को URL में डालने से बचें, जैसे https://user:password@host/ में। RFC 3986 इस रूप को अप्रचलित मानता है, यह ब्राउज़र हिस्ट्री और सर्वर लॉग में पहुँच जाता है, और आधुनिक ब्राउज़र इस पर पाबंदियाँ लगाते हैं।

अक्सर पूछे जाने वाले प्रश्न

Basic auth हेडर को डिकोड कैसे करें?

हेडर को “मौजूदा हेडर डिकोड करें” वाले हिस्से में पेस्ट करें, यूज़रनेम और पासवर्ड तुरंत दिख जाएँगे। कोई भी Base64 डिकोडर यही परिणाम देता है, और ठीक इसी वजह से यह हेडर केवल HTTPS पर ही भेजा जाना चाहिए।

क्या पासवर्ड में कोलन हो सकता है?

हाँ। सर्वर डिकोड किए गए मान को पहले कोलन पर विभाजित करता है, इसलिए उसके बाद का सब कुछ पासवर्ड का हिस्सा होता है। लेकिन यूज़रनेम में कोलन नहीं होना चाहिए।

क्या HTTP Basic ऑथेंटिकेशन सुरक्षित है?

HTTPS पर एक मज़बूत और अनोखे पासवर्ड के साथ यह रास्ते में क्रेडेंशियल की सुरक्षा करता है, लेकिन वे हर अनुरोध के साथ भेजे जाते हैं और टोकन की तरह उनकी समय-सीमा ख़त्म नहीं होती। इसे कभी भी सादे HTTP पर इस्तेमाल न करें।

ऐक्सेंट वाले या गैर-लैटिन अक्षरों वाले पासवर्ड से लॉगिन क्यों विफल होता है?
हो सकता है कि क्लाइंट और सर्वर कैरेक्टर एनकोडिंग पर सहमत न हों। RFC 7617 सर्वर को charset="UTF-8" घोषित करने की अनुमति देता है; इसके बिना पुराने सर्वर ISO-8859-1 मान सकते हैं और अलग-अलग बाइट की तुलना कर सकते हैं।
क्या मेरा पासवर्ड कहीं भेजा जाता है?

नहीं। हेडर आपके ब्राउज़र में JavaScript द्वारा बनाया जाता है और कुछ भी कहीं नहीं भेजा जाता। फिर भी, बनाई गई curl कमांड दूसरों के साथ शेयर करते समय टेस्ट क्रेडेंशियल का उपयोग करें।