OAUTH का इतिहास: पासवर्ड से लेकर वैश्विक मानकों तक
आप इसे हर दिन देखते हैं। आप "Login with Google" या "Login with GitHub" पर क्लिक करते हैं। आप पासवर्ड टाइप नहीं करते। आप तुरंत साइट में प्रवेश कर जाते हैं।
यह OAuth की वजह से संभव होता है। यह सुरक्षा के लिए वैश्विक मानक है। लेकिन इसकी शुरुआत इस तरह से नहीं हुई थी। यह बड़ी समस्याओं को हल करने के लिए विकसित हुआ है।
पासवर्ड के साथ समस्या
शुरुआती दिनों में, आप हर वेबसाइट के लिए एक नया पासवर्ड बनाते थे। इससे तीन बड़ी समस्याएँ पैदा हुईं:
- लोग हर जगह एक ही पासवर्ड का उपयोग करते थे। यदि एक साइट लीक हो जाती, तो हर अकाउंट खतरे में पड़ जाता।
- लोग पासवर्ड भूल जाते थे। वे वेब का उपयोग करने के बजाय "forgot password" पर क्लिक करने में अधिक समय बिताते थे।
- वेबसाइटें आपका मूल (raw) पासवर्ड देख सकती थीं। यदि कोई साइट हैक हो जाती, तो आपका पासवर्ड चला जाता।
सुरक्षा का विकास
Basic Auth: आप हर अनुरोध (request) के साथ अपना यूजरनेम और पासवर्ड भेजते थे। यदि आप HTTPS का उपयोग नहीं करते थे, तो हैकर्स सब कुछ देख सकते थे।
Session Cookies: आप एक बार लॉग इन करते थे और आपको एक session ID मिल जाती थी। यह बेहतर था, लेकिन XSS या CSRF जैसे हमलों के माध्यम से कुकीज़ चोरी की जा सकती हैं। साथ ही, एक साइट आपके लॉगिन का उपयोग दूसरी साइट से बात करने के लिए नहीं कर सकती थी।
API Keys: आप किसी वेबसाइट को एक विशेष कुंजी (key) देते थे। यह बेहतर था क्योंकि आप अपना पासवर्ड नहीं भेजते थे। हालाँकि, API keys के पास अक्सर बहुत अधिक अधिकार होते हैं। यदि आप किसी ऐप को API key देते हैं, तो उस ऐप के पास आपके ईमेल पढ़ने, संदेश भेजने और आपका अकाउंट डिलीट करने की शक्ति हो सकती है। यह होटल के वैले (valet) को अपनी कार की चाबी देने जैसा है, लेकिन वह चाबी आपके घर को भी खोल सकती है।
OAuth समाधान: वैले की (Valet Key)
OAuth ने खेल बदल दिया। अपना पासवर्ड देने के बजाय, आप एक "token" देते हैं। इसे एक वैले की (valet key) के रूप में सोचें। एक वैले की ड्राइवर को आपकी कार पार्क करने देती है, लेकिन यह उन्हें आपकी डिक्की खोलने या आपके घर में प्रवेश करने की अनुमति नहीं देती है।
व्यवहार में OAuth कैसे काम करता है:
- आप Canva का उपयोग करना चाहते हैं और Google से फ़ोटो लेना चाहते हैं।
- Canva, Google से अनुमति मांगता है।
- Google आपसे पूछता है: "क्या Canva आपकी फ़ोटो देख सकता है?"
- आप कहते हैं: "हाँ, लेकिन केवल देखें। उन्हें कुछ भी डिलीट न करने दें।"
- Google, Canva को एक विशिष्ट token देता है।
Canva आपका Google पासवर्ड कभी नहीं देखता। यदि कोई हैकर उस token को चुरा भी लेता है, तो वे केवल थोड़े समय के लिए फ़ोटो देख सकते हैं। वे आपका पासवर्ड नहीं बदल सकते या आपके पैसे नहीं निकाल सकते।
आधुनिक सुरक्षा: PKCE
मोबाइल ऐप्स और वेब ऐप्स में एक कमजोरी होती है। वे रहस्यों (secrets) को अच्छी तरह से छिपा नहीं सकते। इसे ठीक करने के लिए, हम PKCE (Proof Key for Code Exchange) का उपयोग करते हैं।
यह एक आरक्षण प्रणाली (reservation system) की तरह काम करता है:
- ऐप एक गुप्त कोड (verifier) बनाता है।
- ऐप उस कोड का एक हैश किया हुआ वर्शन (challenge) Google को भेजता है।
- जब ऐप token मांगता है, तो वह मूल गुप्त कोड भेजता है।
- Google जाँचता है कि क्या कोड challenge से मेल खाता है।
यदि वे मेल खाते हैं, तो Google जान जाता है कि यह वही ऐप है। यदि वे मेल नहीं खाते हैं, तो Google अनुरोध को ब्लॉक कर देता है। यह हैकर्स को आपके authorization code को चुराने से रोकता है।
OAuth का रोडमैप
- 2007 (OAuth 1.0): बहुत जटिल था और इसमें भारी गणित का उपयोग किया जाता था।
- 2012 (OAuth 2.0): तेज़ और आसान। इसमें tokens का उपयोग किया गया और HTTPS की आवश्यकता थी।
- 2016 (OAuth 2.0 + PKCE): मोबाइल और आधुनिक वेब ऐप्स के लिए सुरक्षा जोड़ी गई।
- 2023 (OAuth 2.1): नया गोल्ड स्टैंडर्ड। यह पुराने, असुरक्षित तरीकों को हटा देता है।
मुख्य सबक: अपना पासवर्ड कभी भी किसी अन्य ऐप को न दें। उन्हें एक सीमित टिकट दें जो समाप्त (expire) हो जाता है। आप नियंत्रण में रहते हैं।
स्रोत: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4
