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")\ पुस्तकालय में भी
ArgumentParser के साथ Swift CLI: शक्तिशाली कंसोल टूल बनाना
Go (Golang) में Excel के साथ काम करें: exelize और tealeg/xlsx लाइब्रेरी
Node.js में Prometheus मेट्रिक्स: मॉनिटरिंग के लिए prom-client लाइब्रेरी
TypeScript मशीन लर्निंग: ब्राउज़र और Node.js के लिए लाइब्रेरीज़
C# (.NET) में JSON प्रोसेसिंग: Newtonsoft.Json और System.Text.Json के लिए पूर्ण गाइड