Go पर OAuth 2.0 और JWT प्राधिकरण: एक व्यावहारिक मार्गदर्शिका

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

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

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

Go पर OAuth 2.0 और JWT प्राधिकरण: सिद्धांत से व्यवहार तक

\n\n

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

\n\n

हम एक सरल REST API सर्वर बनाएंगे जो OAuth 2.0 प्रदाता (जैसे, Google) के माध्यम से सफल प्रमाणीकरण के बाद JWT टोकन जारी करेगा और प्रत्येक अनुरोध पर उन्हें सत्यापित करेगा।

\n\n

1. OAuth 2.0 और JWT की मूल बातें

\n\n

कोड लिखने से पहले, आइए संक्षेप में शब्दों को समझें।

\n\n
    \n
  • OAuth 2.0 — एक प्राधिकरण प्रोटोकॉल है जो उपयोगकर्ताओं को लॉगिन और पासवर्ड साझा किए बिना तीसरे पक्ष को अपने संसाधनों तक सीमित पहुंच प्रदान करने की अनुमति देता है। मुख्य भूमिकाएँ: Resource Owner (उपयोगकर्ता), Client (हमारा एप्लिकेशन), Authorization Server (टोकन जारी करने वाला सर्वर), Resource Server (सुरक्षित डेटा वाला सर्वर)।
  • \n
  • JWT — एक कॉम्पैक्ट URL-सुरक्षित टोकन प्रारूप है जिसमें तीन भाग होते हैं: header, payload और signature। JWT में कोई भी डेटा (claims) हो सकता है और यह एक गुप्त कुंजी या RSA कुंजी जोड़ी के साथ हस्ताक्षरित होता है।
  • \n
\n\n

हमारे कार्यान्वयन में, OAuth 2.0 का उपयोग प्रदाता (Google) से identity टोकन प्राप्त करने के लिए किया जाएगा, और फिर हम अपने API के साथ आगे के काम के लिए अपना स्वयं का JWT उत्पन्न करेंगे।

\n\n

2. प्रोजेक्ट सेटअप और निर्भरताएँ

\n\n

Go में एक नया प्रोजेक्ट बनाएं और आवश्यक पैकेज स्थापित करें:

\n\n
mkdir go-oauth-jwt\ncd go-oauth-jwt\ngo mod init example.com/go-oauth-jwt\ngo get github.com/gin-gonic/gin\ngo get github.com/golang-jwt/jwt/v5\ngo get golang.org/x/oauth2\ngo get golang.org/x/oauth2/google
\n\n

हम उपयोग करेंगे:

\n
    \n
  • Gin — Go के लिए एक तेज़ HTTP फ्रेमवर्क।
  • \n
  • golang-jwt — JWT के साथ काम करने के लिए लाइब्रेरी।
  • \n
  • oauth2 — OAuth 2.0 के लिए Go की मानक लाइब्रेरी।
  • \n
\n\n

साथ ही, आपको Google Cloud Console में एक एप्लिकेशन पंजीकृत करना होगा, OAuth 2.0 Client ID और Secret बनाना होगा, और Redirect URI निर्दिष्ट करना होगा (उदाहरण के लिए, http://localhost:8080/auth/google/callback)।

\n\n

3. Google के माध्यम से OAuth 2.0 लॉगिन का कार्यान्वयन

\n\n

आइए OAuth 2.0 कॉन्फ़िगरेशन और लॉगिन और कॉलबैक के लिए एंडपॉइंट बनाकर शुरू करें।

\n\n
package main\n\nimport (\n    "crypto/rand"\n    "encoding/base64"\n    "net/http"\n    "os"\n\n    "github.com/gin-gonic/gin"\n    "golang.org/x/oauth2"\n    "golang.org/x/oauth2/google"\n)\n\nvar (\n    googleOauthConfig *oauth2.Config\n    oauthStateString  string\n)\n\nfunc init() {\n    googleOauthConfig = &oauth2.Config{\n        RedirectURL:  "http://localhost:8080/auth/google/callback",\n        ClientID:     os.Getenv("GOOGLE_CLIENT_ID"),\n        ClientSecret: os.Getenv("GOOGLE_CLIENT_SECRET"),\n        Scopes:       []string{"https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"},\n        Endpoint:     google.Endpoint,\n    }\n    // CSRF से बचाव के लिए एक यादृच्छिक state टोकन उत्पन्न करें\n    b := make([]byte, 32)\n    rand.Read(b)\n    oauthStateString = base64.StdEncoding.EncodeToString(b)\n}\n\nfunc main() {\n    r := gin.Default()\n\n    r.GET("/auth/google/login", handleGoogleLogin)\n    r.GET("/auth/google/callback", handleGoogleCallback)\n\n    r.Run(":8080")\n}\n\nfunc handleGoogleLogin(c *gin.Context) {\n    url := googleOauthConfig.AuthCodeURL(oauthStateString)\n    c.Redirect(http.StatusTemporaryRedirect, url)\n}\n\nfunc handleGoogleCallback(c *gin.Context) {\n    state := c.Query("state")\n    if state != oauthStateString {\n        c.JSON(http.StatusBadRequest, gin.H{"error": "invalid oauth state"})\n        return\n    }\n\n    code := c.Query("code")\n    token, err := googl                

ब्लॉग

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