C++ में प्रमाणीकरण और प्राधिकरण का परिचय
प्रमाणीकरण (उपयोगकर्ता की पहचान सत्यापित करना) और प्राधिकरण (पहुँच अधिकारों की जाँच करना) किसी भी आधुनिक अनुप्रयोग के प्रमुख सुरक्षा घटक हैं। C++ में, इन कार्यों को विशेष लाइब्रेरीज़ की सहायता से हल किया जाता है, जो JWT-टोकन, OAuth 2.0, पासवर्ड हैशिंग और सत्र प्रबंधन के लिए समर्थन लागू करने में सक्षम बनाती हैं। इस लेख में, हम मुख्य उपकरणों, उनकी स्थापना और उपयोग के उदाहरणों पर चर्चा करेंगे।
C++ में प्रमाणीकरण के लिए मुख्य लाइब्रेरीज़
1. JWT-CPP — JSON वेब टोकन के साथ कार्य
JWT-CPP JWT-टोकन बनाने और सत्यापित करने के लिए एक हल्की लाइब्रेरी है। यह HMAC, RSA और ECDSA एल्गोरिदम का समर्थन करती है। REST API और माइक्रोसर्विसेज़ के लिए आदर्श है।
स्थापना:
git clone https://github.com/Thalhammer/jwt-cppcd jwt-cppmkdir build && cd buildcmake ..make && make installटोकन बनाने और जाँचने का उदाहरण:
#include <jwt-cpp/jwt.h>#include <iostream>
int main() { // पेलोड के साथ टोकन बनाना auto token = jwt::create() .set_issuer("auth.example.com") .set_type("JWS") .set_payload_claim("user_id", jwt::claim(std::string("12345"))) .sign(jwt::algorithm::hs256{"secret_key"});
std::cout << "Token: " << token << std::endl;
// टोकन सत्यापित करना auto decoded = jwt::decode(token); auto verifier = jwt::verify() .allow_algorithm(jwt::algorithm::hs256{"secret_key"}) .with_issuer("auth.example.com");
try { verifier.verify(decoded); std::cout << "Token valid. User ID: " << decoded.get_payload_claim("user_id").as_string() << std::endl; } catch (const std::exception& e) { std::cerr << "Invalid token: " << e.what() << std::endl; } return 0;}2. bcrypt-cpp — पासवर्ड हैशिंग
bcrypt-cpp लाइब्रेरी Blowfish एल्गोरिदम का उपयोग करके सुरक्षित पासवर्ड हैशिंग प्रदान करती है। इसमें स्वचालित सॉल्ट जनरेशन और ब्रूट-फोर्स हमलों से सुरक्षा शामिल है।
उपयोग का उदाहरण:
#include <bcrypt/BCrypt.hpp>#include <iostream>
int main() { std::string password = "SuperSecret123!";
// पासवर्ड हैश करना std::string hash = BCrypt::generateHash(password); std::cout << "Hash: " << hash << std::endl;
// पासवर्ड जाँचना if (BCrypt::validatePassword(password, hash)) { std::cout << "Password correct!" << std::endl; } else { std::cout << "Invalid password." << std::endl; } return 0;}3. OAuth2 क्लाइंट — प्रदाताओं के साथ एकीकरण
Google, GitHub या Facebook के माध्यम से लॉगिन लागू करने के लिए, cpp-httplib लाइब्रेरी का उपयोग OAuth2 प्रवाहों के मैन्युअल प्रबंधन के साथ करें। HTTP अनुरोधों के माध्यम से एक्सेस टोकन प्राप्त करने का उदाहरण:
#include <httplib.h>#include <nlohmann/json.hpp>#include <iostream>
int main() { httplib::Client cli("https://oauth2.googleapis.com");
// अनुरोध पैरामीटर (अपने स्वयं के मानों से बदलें) auto res = cli.Post("/token", { {"code", "authorization_code"}, {"client_id", "YOUR_CLIENT_ID"}, {"client_secret", "YOUR_CLIENT_SECRET"}, {"redirect_uri", "http://localhost:8080/callback"}, {"grant_type", "authorization_code"} });
if (res && res->status == 200) { auto json = nlohmann::json::parse(res->body); std::cout << "Access token: " << json["access_token"].get<std::string>() << std::endl; } else { std::cerr << "Failed to get token" << std::endl; } return 0;}