golang-jwt Go: पूर्ण गाइड, उदाहरण और उपयोग

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

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

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

golang-jwt for Go: पूर्ण गाइड उदाहरणों के साथ

golang-jwt लाइब्रेरी (आधिकारिक नाम: github.com/golang-jwt/jwt/v5) Go भाषा के लिए JSON Web Tokens (JWT) की डी-फैक्टो स्टैंडर्ड लाइब्रेरी है। यह डेवलपर्स को JWT टोकन बनाने, साइन करने, वेरिफाई करने और डिकोड करने के लिए एक शक्तिशाली और लचीला टूलसेट प्रदान करती है। JWT एक कॉम्पैक्ट और सेल्फ-कंटेंड तरीका है जिसमें JSON ऑब्जेक्ट के रूप में दो पक्षों के बीच जानकारी भेजी जाती है, और इसे डिजिटल सिग्नेचर से वेरिफाई किया जा सकता है। JWT टोकन का उपयोग REST API, माइक्रोसर्विसेज और वेब एप्लिकेशन में ऑथेंटिकेशन, ऑथराइजेशन और सुरक्षित डेटा एक्सचेंज के लिए व्यापक रूप से किया जाता है।

इस लाइब्रेरी की आवश्यकता क्यों है? आधुनिक Go वेब डेवलपमेंट में, लगभग हर एप्लिकेशन जिसमें यूजर ऑथेंटिकेशन की आवश्यकता होती है (जैसे API सर्वर, माइक्रोसर्विसेज, सिंगल साइन-ऑन सिस्टम), JWT के साथ काम करना पड़ता है। golang-jwt लाइब्रेरी सारी जटिलता को संभाल लेती है: सिग्नेचर जनरेशन और वेरिफिकेशन (HMAC, RSA, ECDSA, EdDSA), हेडर और पेलोड पार्स करना, स्टैंडर्ड फील्ड (exp, iat, iss, sub) और कस्टम claims को प्रोसेस करना। इसके बिना, आपको क्रिप्टोग्राफिक ऑपरेशन और JSON पार्सिंग मैन्युअल रूप से करनी पड़ती, जिसमें त्रुटियां और सुरक्षा कमजोरियां हो सकती हैं।

golang-jwt के मुख्य लाभ: RFC 7519 स्पेसिफिकेशन का पूर्ण समर्थन, fluent-इंटरफेस के कारण उपयोग में आसानी, उच्च प्रदर्शन (स्टैंडर्ड crypto लाइब्रेरी का उपयोग करता है), कस्टम signing methods और वैलिडेटर के माध्यम से एक्सटेंशन की संभावना। यह लाइब्रेरी समुदाय द्वारा सक्रिय रूप से मेंटेन की जाती है, GitHub पर 7,000 से अधिक स्टार हैं, और Kubernetes, Docker, Grafana जैसे प्रोजेक्ट्स में इसका उपयोग किया जाता है।

इंस्टॉलेशन

लाइब्रेरी को इंस्टॉल करने के लिए Go का स्टैंडर्ड तरीका go get का उपयोग करें। सुनिश्चित करें कि आपके पास Go का वर्जन 1.18 या उससे ऊपर है (1.21+ अनुशंसित है)।

go get github.com/golang-jwt/jwt/v5

कमांड चलाने के बाद, आपके go.mod में डिपेंडेंसी जुड़ जाएगी। कोड में लाइब्रेरी को इस प्रकार इम्पोर्ट करें:

import "github.com/golang-jwt/jwt/v5"

त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण

एक सरल उदाहरण बनाते हैं: सिमेट्रिक की (HMAC-SHA256) का उपयोग करके JWT टोकन जनरेट और वेरिफाई करना।

package main

import (
    "fmt"
    "time"
    "github.com/golang-jwt/jwt/v5"
)

func main() {
    // 1. सीक्रेट की (सुरक्षित रखें)
    secretKey := []byte("my-super-secret-key-12345")

    // 2. टोकन बनाना
    claims := jwt.MapClaims{
        "user_id": 12345,
        "role":    "admin",
        "exp":     time.Now().Add(time.Hour * 24).Unix(), // 24 घंटे की वैधता
        "iat":     time.Now().Unix(),                     // बनाने का समय
    }

    token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
    tokenString, err := token.SignedString(secretKey)
    if err != nil {
        panic(err)
    }
    fmt.Println("जनरेट किया गया टोकन:", tokenString)

    // 3. टोकन वेरिफाई और पार्स करना
    parsedToken, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
        // जांचें कि साइनिंग मेथड HMAC है
        if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
            return nil, fmt.Errorf("अनपेक्षित साइनिंग मेथड: %v", token.Header["alg"])
        }
        return secretKey, nil
    })

    if err != nil {
        panic(err)
    }

    // 4. Claims निकालना
    if claims, ok := parsedToken.Claims.(jwt.MapClaims); ok && parsedToken.Valid {
        fmt.Printf("यूजर ID: %v\n", claims["user_id"])
        fmt.Printf("रोल: %v\n", claims["role"])
    } else {
        fmt.Println("टोकन अमान्य है")
    }
}

मुख्य मेथड और फंक्शन

लाइब्रेरी के प्रमुख मेथड को समझते हैं। प्रत्येक के लिए सिग्नेचर, विवरण और कार्यशील उदाहरण दिया गया है।

अनुशंसाएँ