Go (Golang) में प्राधिकरण और प्रमाणीकरण: एक संपूर्ण मार्गदर्शिका

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

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

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

Go (Golang) में प्राधिकरण और प्रमाणीकरण



Go (Golang) में आधुनिक वेब विकास में, उपयोगकर्ता डेटा की सुरक्षा और पहुँच नियंत्रण महत्वपूर्ण पहलू हैं। प्राधिकरण और प्रमाणीकरण के लिए लाइब्रेरी और उपकरण डेवलपर्स को अपने अनुप्रयोगों में जल्दी और विश्वसनीय रूप से सुरक्षा लागू करने में सक्षम बनाते हैं। इस लेख में, हम Go में प्रमाणीकरण (उपयोगकर्ता की पहचान सत्यापित करना) और प्राधिकरण (पहुँच अधिकार निर्धारित करना) को लागू करने के लिए बुनियादी दृष्टिकोण और लोकप्रिय लाइब्रेरी पर चर्चा करेंगे।



मुख्य अवधारणाएँ



उपकरणों पर जाने से पहले, दो प्रमुख अवधारणाओं के बीच अंतर करना महत्वपूर्ण है:

  • प्रमाणीकरण — यह जाँचने की प्रक्रिया है कि उपयोगकर्ता वही है जो वह होने का दावा करता है (आमतौर पर लॉगिन/पासवर्ड, टोकन, OAuth के माध्यम से)।
  • प्राधिकरण — यह निर्धारित करने की प्रक्रिया है कि प्रमाणित उपयोगकर्ता के लिए कौन से संसाधन और क्रियाएँ उपलब्ध हैं (भूमिकाएँ, पहुँच अधिकार)।


लोकप्रिय लाइब्रेरी और उपकरण



1. पासवर्ड हैशिंग के लिए bcrypt

लाइब्रेरी golang.org/x/crypto/bcrypt पासवर्ड के सुरक्षित भंडारण के लिए वास्तविक मानक है। यह स्वचालित रूप से नमक जोड़ता है और अनुकूली हैशिंग फ़ंक्शन का उपयोग करता है।



package main

import ( "fmt" "golang.org/x/crypto/bcrypt")

func main() { password := "mySecretPassword123" // पासवर्ड हैश करना hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) if err != nil { panic(err) } fmt.Printf("Hash: %s", hash) // पासवर्ड जाँचना err = bcrypt.CompareHashAndPassword(hash, []byte("wrongPassword")) if err != nil { fmt.Println("पासवर्ड गलत है:", err) } else { fmt.Println("पासवर्ड सही है") } // सफल जाँच err = bcrypt.CompareHashAndPassword(hash, []byte(password)) if err == nil { fmt.Println("पासवर्ड सही है!") }}


2. golang-jwt लाइब्रेरी के साथ JWT (JSON Web Tokens)

लाइब्रेरी github.com/golang-jwt/jwt/v5 JWT टोकन बनाने और सत्यापित करने की अनुमति देती है। यह स्टेटलेस प्रमाणीकरण लागू करने का एक लोकप्रिय तरीका है।



package main

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

var jwtSecret = []byte("super-secret-key")

func createToken(userID string) (string, error) { claims := jwt.MapClaims{ "user_id": userID, "exp": time.Now().Add(time.Hour * 24).Unix(), "iat": time.Now().Unix(), } token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) return token.SignedString(jwtSecret)}

func validateToken(tokenString string) (string, error) { token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("अप्रत्याशित हस्ताक्षर विधि: %v", token.Header["alg"]) } return jwtSecret, nil }) if err != nil { return "", err } if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid { return claims["user_id"].(string), nil } return "", fmt.Errorf("अमान्य टोकन")}

func main() { // टोकन बनाना token, _ := createToken("user123") fmt.Println("JWT Token:", token) // टोकन सत्यापित करना userID, err := validateToken(token) if err != nil { fmt.Println("सत्यापन त्रुटि:", err) } else { fmt.Println("टोकन से उपयोगकर्ता ID:", userID) }}


3. gorilla/sessions के साथ सत्र-आधारित प्रमाणीकरण

पारंपरिक सत्र प्रमाणीकरण के लिए github.com/gorilla/sessions का उपयोग करें। सत्र सर्वर पर संग्रहीत होते हैं, और क्लाइंट को केवल सत्र ID वाला cookie भेजा जाता है।



package main

import ( "net/http" "github.com/gorilla/sessions")\

अनुशंसाएँ