C++ में प्राधिकरण और प्रमाणीकरण: लाइब्रेरी, उदाहरण और कार्यान्वयन

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

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

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

C++ में प्राधिकरण और प्रमाणीकरण के लिए लाइब्रेरी और उपकरण



C++ में आधुनिक सॉफ्टवेयर विकास में, उपयोगकर्ता डेटा की सुरक्षा और पहुँच नियंत्रण महत्वपूर्ण कार्य हैं। इस लेख में, हम C++ में प्राधिकरण और प्रमाणीकरण को लागू करने के लिए मुख्य लाइब्रेरी और दृष्टिकोणों पर चर्चा करेंगे, जिसमें पासवर्ड हैशिंग, JWT टोकन के साथ कार्य और OAuth2 प्रोटोकॉल का समर्थन शामिल है।



1. पासवर्ड हैशिंग: bcrypt लाइब्रेरी (C++ रैपर)



C++ में पासवर्ड को सुरक्षित रूप से संग्रहीत करने के लिए bcrypt एल्गोरिदम के अनुकूलन का उपयोग करने की अनुशंसा की जाती है। सबसे लोकप्रिय कार्यान्वयन libbcrypt (C++ रैपर) या bcrypt इंटरफ़ेस के साथ OpenSSL का उपयोग करना है। पासवर्ड हैशिंग और सत्यापन का उदाहरण:



#include <bcrypt.h>#include <iostream>

int main() { const char* password = "mySecret123"; const char* hash = bcrypt_generate_hash(password, 12); // 12 = लागत कारक

std::cout << "Hash: " << hash << std::endl;

bool match = bcrypt_check_password(password, hash); std::cout << "Password match: " << (match ? "true" : "false") << std::endl;

return 0;}


महत्वपूर्ण: bcrypt स्वचालित रूप से नमक (salt) जोड़ता है और कम्प्यूटेशनल जटिलता (लागत कारक) को समायोजित करने की अनुमति देता है। पासवर्ड को कभी भी सादे पाठ में संग्रहीत न करें।



2. JWT (JSON Web Tokens) के साथ कार्य



C++ में टोकन-आधारित प्रमाणीकरण को लागू करने के लिए jwt-cpp (या libjwt) लाइब्रेरी का उपयोग करें। यह HS256, RS256 और अन्य एल्गोरिदम का समर्थन करती है। JWT बनाने और सत्यापित करने का उदाहरण:



#include <jwt-cpp/jwt.h>#include <iostream>

int main() { // HS256 के साथ टोकन बनाना auto token = jwt::create() .set_issuer("auth.pythonlib.ru") .set_type("JWT") .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.pythonlib.ru");

try { verifier.verify(decoded); std::cout << "Token is valid!" << std::endl; std::cout << "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;}


3. liboauth2 के साथ OAuth2 के माध्यम से प्रमाणीकरण



बाहरी प्रदाताओं (Google, GitHub, VK) के साथ एकीकरण के लिए liboauth2 (C++) का उपयोग करें। लाइब्रेरी Authorization Code Flow और Client Credentials Flow का समर्थन करती है। एक्सेस टोकन प्राप्त करने का उदाहरण:



#include <oauth2/client>#include <iostream>

int main() { oauth2::client client( "your_client_id", "your_client_secret", "https://provider.com/oauth2/token", "https://your-app.com/callback" );

// प्राधिकरण कोड को टोकन के लिए विनिमय करना auto token = client.fetch_access_token("authorization_code_here");

std::cout << "Access Token: " << token.access_token << std::endl; std::cout << "Expires in: " << token.expires_in << " seconds" << std::endl;

// टोकन सत्यापन if (client.validate_token(token)) { std::cout << "Token is valid" << std::endl; }

return 0;}


4. क्रिप्टोग्राफ़िक समर्थन: OpenSSL



OpenSSL हैश (SHA-256, SHA-512), सममित और असममित एन्क्रिप्शन के साथ काम करने के लिए एक मूल लाइब्रेरी है। नमक के साथ पासवर्ड हैशिंग का उदाहरण:

अनुशंसाएँ