परिचय: आधुनिक वेब अनुप्रयोगों में OAuth 2.0 और JWT की आवश्यकता क्यों है?
\n\nआधुनिक वेब डेवलपमेंट में, क्लाइंट और सर्वर के बीच सुरक्षित डेटा ट्रांसफर एक प्रमुख कार्य है। पारंपरिक प्रमाणीकरण विधियाँ, जैसे कुकी-आधारित सत्र, मोनोलिथिक अनुप्रयोगों के लिए अच्छी तरह से काम करती हैं, लेकिन REST API, मोबाइल ऐप या माइक्रोसर्विस आर्किटेक्चर बनाते समय असुविधाजनक हो जाती हैं। यहीं पर दो शक्तिशाली उपकरण काम आते हैं: प्रोटोकॉल OAuth 2.0 और टोकन प्रारूप JWT (JSON Web Token)।
\n\nइस लेख में, हम OAuth 2.0 और JWT की बुनियादी अवधारणाओं को समझेंगे, और फिर चरण दर चरण PHP पर एक सरल प्राधिकरण प्रणाली बनाएंगे। यह लेख शुरुआती डेवलपर्स के लिए है, इसलिए सभी स्पष्टीकरण यथासंभव सरल होंगे और व्यावहारिक कोड उदाहरणों के साथ होंगे।
\n\nOAuth 2.0 क्या है और यह कैसे काम करता है?
\n\nOAuth 2.0 एक प्राधिकरण प्रोटोकॉल है जो अनुप्रयोगों को उपयोगकर्ता के लॉगिन और पासवर्ड को स्थानांतरित किए बिना उसके संसाधनों तक सीमित पहुँच प्राप्त करने की अनुमति देता है। कल्पना करें कि आप Google या Facebook खाते के माध्यम से किसी साइट पर लॉग इन करना चाहते हैं - यह OAuth 2.0 का काम है।
\n\nOAuth 2.0 में मुख्य भूमिकाएँ
\n- \n
- Resource Owner (संसाधन स्वामी) — वह उपयोगकर्ता जो डेटा का मालिक है। \n
- Client (क्लाइंट) — वह एप्लिकेशन जो उपयोगकर्ता के डेटा तक पहुँच प्राप्त करना चाहता है। \n
- Authorization Server (प्राधिकरण सर्वर) — वह सर्वर जो सफल प्रमाणीकरण के बाद टोकन जारी करता है। \n
- Resource Server (संसाधन सर्वर) — वह सर्वर जो संरक्षित डेटा संग्रहीत करता है और टोकन सत्यापित करता है। \n
प्राधिकरण प्रवाह (Authorization Code Grant)
\nसबसे सामान्य और सुरक्षित OAuth 2.0 प्रवाह इस प्रकार है:
\n- \n
- क्लाइंट उपयोगकर्ता को प्राधिकरण सर्वर पर रीडायरेक्ट करता है। \n
- उपयोगकर्ता लॉग इन करता है और अनुमति देता है। \n
- प्राधिकरण सर्वर क्लाइंट को authorization code लौटाता है। \n
- क्लाइंट कोड को access token (एक्सेस टोकन) से बदलता है। \n
- एक्सेस टोकन का उपयोग करके, क्लाइंट संसाधन सर्वर तक पहुँचता है। \n
JWT क्या है और यह इतना लोकप्रिय क्यों है?
\n\nJWT (JSON Web Token) एक कॉम्पैक्ट और स्व-निहित टोकन प्रारूप है जिसका उपयोग JSON ऑब्जेक्ट के रूप में पक्षों के बीच जानकारी स्थानांतरित करने के लिए किया जाता है। JWT में जानकारी को सत्यापित और विश्वसनीय माना जा सकता है क्योंकि टोकन डिजिटल हस्ताक्षर से हस्ताक्षरित होता है।
\n\nJWT की संरचना
\nJWT तीन भागों से बना होता है, जो बिंदुओं से अलग होते हैं:
\nheader.payload.signature\n- \n
- Header (शीर्षक) — इसमें टोकन का प्रकार (JWT) और हस्ताक्षर एल्गोरिदम (जैसे HS256 या RS256) होता है। \n
- Payload (पेलोड) — इसमें डेटा (claims) होता है, जैसे उपयोगकर्ता आईडी, भूमिका, टोकन के निर्माण और समाप्ति का समय। \n
- Signature (हस्ताक्षर) — गुप्त कुंजी का उपयोग करके शीर्षक और पेलोड को एन्क्रिप्ट करके बनाया जाता है। \n
JWT के लाभ
\n- \n
- स्व-निहितता — सभी आवश्यक जानकारी टोकन के अंदर संग्रहीत होती है, जिससे डेटाबेस पर लोड कम होता है। \n
- सुरक्षा — टोकन पर हस्ताक्षर किया गया है, इसलिए इसे जाली नहीं बनाया जा सकता। \n
- सार्वभौमिकता — किसी भी प्रोग्रामिंग भाषा और प्लेटफॉर्म के साथ काम करता है। \n
- स्केलेबिलिटी — माइक्रोसर्विस और वितरित प्रणालियों के लिए आदर्श। \n
व्यावहारिक कार्यान्वयन: PHP पर प्राधिकरण प्रणाली बनाना
\n\nअब सबसे दिलचस्प भाग पर आते हैं - कोड लिखना। हम PHP पर एक सरल स्क्रिप्ट बनाएंगे जो JWT टोकन उत्पन्न करती है और प्रत्येक अनुरोध पर इसे सत्यापित करती है। JWT के साथ काम करने के लिए हम लाइब्रेरी firebase/php-jwt का उपयोग करेंगे।