Rust में प्राधिकरण और प्रमाणीकरण: पुस्तकालय और उपकरण

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

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

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

Rust में प्राधिकरण और प्रमाणीकरण: उपकरणों का पूर्ण अवलोकन

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



प्रमाणीकरण के मुख्य दृष्टिकोण

Rust परियोजनाओं में अक्सर तीन रणनीतियों का उपयोग किया जाता है:

  • सत्र-आधारित प्रमाणीकरण — सर्वर सत्र की स्थिति संग्रहीत करता है (आमतौर पर Redis या मेमोरी में), क्लाइंट को सत्र पहचानकर्ता के साथ एक cookie प्राप्त होती है।
  • JWT (JSON Web Token) — स्टेटलेस टोकन जिनमें दावे (claims) होते हैं और सर्वर द्वारा हस्ताक्षरित होते हैं।
  • OAuth2 / OpenID Connect — तृतीय-पक्ष प्रदाताओं (Google, GitHub, Yandex) के माध्यम से विकेंद्रीकृत प्रमाणीकरण।


Rust के प्रमुख पुस्तकालय



1. jsonwebtoken — JWT के साथ कार्य

JWT टोकन बनाने और सत्यापित करने के लिए सबसे लोकप्रिय पुस्तकालय। HS256, RS256, ES256 और अन्य एल्गोरिदम का समर्थन करता है।

use jsonwebtoken::{encode, decode, Header, Validation, EncodingKey, DecodingKey};

// टोकन बनानाlet claims = serde_json::json!({ "sub": "user123", "exp": 1740000000, "role": "admin"});let token = encode(&Header::default(), &claims, &EncodingKey::from_secret("secret".as_ref())).unwrap();

// सत्यापनlet token_data = decode::<serde_json::Value>( &token, &DecodingKey::from_secret("secret".as_ref()), &Validation::default()).unwrap();println!("टोकन इसका है: {}", token_data.claims["sub"]);


2. bcrypt — पासवर्ड हैशिंग

नमक के साथ सुरक्षित हैशिंग। डेटाबेस में पासवर्ड को सुरक्षित रूप से संग्रहीत करने के लिए उपयोग किया जाता है।

use bcrypt::{hash, verify, DEFAULT_COST};

let password = "super_secret_123";let hashed = hash(password, DEFAULT_COST).unwrap();println!("हैश: {}", hashed);

let valid = verify(password, &hashed).unwrap();println!("पासवर्ड सही है: {}", valid); // true


3. actix-web-identity / actix-web-flash — Actix Web के लिए सत्र

यदि आप Actix Web फ्रेमवर्क का उपयोग कर रहे हैं, तो ये क्रेट्स cookie या Redis के माध्यम से सत्र प्रबंधित करने में मदद करेंगे।

use actix_web::{web, App, HttpServer, HttpRequest, HttpResponse, middleware::IdentityService};use actix_web::cookie::Key;

async fn login(req: HttpRequest) -> HttpResponse { let identity = req.extensions().get::<Identity>().unwrap(); identity.remember("user_id=42".to_string()); HttpResponse::Ok().body("प्रमाणित")}

#[actix_web::main]async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .wrap(IdentityService::new(Key::from(&[0; 32]))) .route("/login", web::get().to(login)) }) .bind("127.0.0.1:8080")? .run() .await}


4. oauth2 — OAuth2 क्लाइंट

OAuth2 प्रवाह (जैसे "GitHub से लॉगिन") को लागू करने के लिए पुस्तकालय। Authorization Code, Client Credentials और Refresh Token का समर्थन करता है।

use oauth2::{basic::BasicClient, AuthUrl, TokenUrl, ClientId, ClientSecret, RedirectUrl};

let client = BasicClient::new( ClientId::new("your_client_id".to_string()), Some(ClientSecret::new("your_client_secret".to_string())), AuthUrl::new("https://github.com/login/oauth/authorize".to_string()).unwrap(), Some(TokenUrl::new("https://github.com/login/oauth/access_token".to_string()).unwrap())).set_redirect_uri(RedirectUrl::new("http://localhost:8080/callback".to_string()).unwrap());


दृष्टिकोणों की तुलना

  • JWT — माइक्रोसर्विसेज और API के लिए सबसे अच्छा विकल्प, सर्वर की आवश्यकता नहीं है

अनुशंसाएँ