Go पर OAuth 2.0 और JWT प्राधिकरण: शुरुआती लोगों के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: Go में OAuth 2.0 और JWT की आवश्यकता क्यों है?

\n\n

आधुनिक वेब डेवलपमेंट सुरक्षित प्रमाणीकरण और प्राधिकरण के बिना अधूरा है। यदि आप Go (Golang) में अपना पहला API, माइक्रोसर्विस या वेब एप्लिकेशन लिख रहे हैं, तो देर-सबेर आपको उपयोगकर्ता डेटा को सुरक्षित करने की आवश्यकता होगी। दो मानक — OAuth 2.0 और JWT (JSON Web Token) — इस क्षेत्र में स्वर्ण मानक बन गए हैं।

\n\n

इस लेख में, हम समझेंगे कि OAuth 2.0 और JWT कैसे काम करते हैं, और Go में एक सरल लेकिन कार्यशील कार्यान्वयन लिखेंगे। आप सीखेंगे कि एक्सेस टोकन कैसे जारी करें, उन्हें कैसे सत्यापित करें और अपने एंडपॉइंट को कैसे सुरक्षित करें। यह लेख शुरुआती डेवलपर्स के लिए है जो Go और HTTP की मूल बातों से परिचित हैं।

\n\n

OAuth 2.0 और JWT क्या हैं? सरल शब्दों में

\n\n

OAuth 2.0 — प्रत्यायोजित पहुंच प्रोटोकॉल

\n\n

OAuth 2.0 कोई लाइब्रेरी या फंक्शन नहीं है, बल्कि एक प्रोटोकॉल है। कल्पना करें कि आप किसी साइट पर Google के माध्यम से लॉगिन करना चाहते हैं। OAuth 2.0 साइट को Google से आपके डेटा (जैसे ईमेल) तक सीमित पहुंच प्राप्त करने की अनुमति देता है, बिना आपको अपना Google पासवर्ड देने की आवश्यकता के। इसे "प्रत्यायोजित पहुंच" कहा जाता है।

\n\n

OAuth 2.0 में मुख्य भूमिकाएँ:

\n
    \n
  • Resource Owner — उपयोगकर्ता (आप)।
  • \n
  • Client — एप्लिकेशन जो पहुंच प्राप्त करना चाहता है (हमारी साइट)।
  • \n
  • Authorization Server — सर्वर जो टोकन जारी करता है (Google)।
  • \n
  • Resource Server — उपयोगकर्ता डेटा वाला सर्वर (Google API)।
  • \n
\n\n

JWT — टोकन का प्रारूप

\n\n

JWT (JSON Web Token) JSON ऑब्जेक्ट के रूप में पक्षों के बीच जानकारी स्थानांतरित करने का एक कॉम्पैक्ट और स्व-निहित तरीका है। यह तीन भागों से बना होता है, जो बिंदुओं द्वारा अलग किए जाते हैं:

\n\n
    \n
  • Header — टोकन का प्रकार और हस्ताक्षर एल्गोरिदम (जैसे HS256)।
  • \n
  • Payload — डेटा (claims): उपयोगकर्ता ID, भूमिका, समाप्ति तिथि।
  • \n
  • Signature — हस्ताक्षर जो गारंटी देता है कि टोकन बदला नहीं गया है।
  • \n
\n\n

JWT का उपयोग अक्सर OAuth 2.0 में Access Token के रूप में किया जाता है। सर्वर गुप्त कुंजी से टोकन पर हस्ताक्षर करता है, और क्लाइंट इसे हेडर Authorization: Bearer <token> में भेजता है।

\n\n

अभ्यास: Go पर JWT प्राधिकरण का कार्यान्वयन

\n\n

हम Go में एक छोटा HTTP सर्वर लिखेंगे जो JWT टोकन जारी करेगा और सुरक्षित रूट्स पर उन्हें सत्यापित करेगा। JWT के साथ काम करने के लिए हम लोकप्रिय लाइब्रेरी github.com/golang-jwt/jwt/v5 का उपयोग करेंगे।

\n\n

चरण 1: निर्भरताएँ स्थापित करना और प्रोजेक्ट संरचना

\n\n

एक नया मॉड्यूल बनाएं और लाइब्रेरी स्थापित करें:

\n\n
go mod init auth-example\ngo get github.com/golang-jwt/jwt/v5\ngo get golang.org/x/crypto
\n\n

फ़ाइल संरचना सरल होगी:

\n\n
    \n
  • main.go — प्रवेश बिंदु और रूट्स।
  • \n
  • auth.go — JWT बनाने और सत्यापित करने का तर्क।
  • \n
  • handlers.go — HTTP हैंडलर।
  • \n
\n\n

चरण 2: JWT टोकन बनाना

\n\n

फ़ाइल auth.go बनाएं। यहाँ हम गुप्त कुंजी (वास्तविक प्रोजेक्ट में इसे .env में रखें) और टोकन जनरेट करने का फंक्शन परिभाषित करेंगे।

\n\n
package main\n\nimport (\n    "time"\n    "github.com/golang-jwt/jwt/v5"\n)\n\nvar jwtSecret = []byte("your-secret-key-here")\n\ntype Claims struct {\n    UserID   int    `json:"user_id"`\n    Username string `json:"username"`\n    jwt.RegisteredClaims\n}\n\nfunc GenerateToken(userID int, username string) (string, error) {\n    claims := Claims{\n        UserID:   userID,\n        Username: username,\n        RegisteredClaims: jwt.RegisteredClaims{\n            ExpiresAt: jwt.NewNumericDate(time.Now().Add(24 * time.Hour)),\n            IssuedAt:  jwt.NewNumericDate(time.Now()),\n            Issuer:    "auth-example",\n        },\n    }\n\n    token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)\n    return token.SignedString(jwtSecret)\n}

ब्लॉग

पुस्तक अनुशंसाएँ