शुरुआती लोगों के लिए C++ में OAuth 2.0 और JWT प्राधिकरण का कार्यान्वयन

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

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

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

C++ में OAuth 2.0 और JWT का परिचय

\n\n

आधुनिक वेब डेवलपमेंट में, सुरक्षा और पहुँच प्रबंधन महत्वपूर्ण पहलू हैं। OAuth 2.0 और JWT (JSON Web Tokens) API और वेब एप्लिकेशन में प्राधिकरण लागू करने के लिए डी-फैक्टो मानक बन गए हैं। हालाँकि ये तकनीकें अक्सर JavaScript, Python या Java से जुड़ी होती हैं, C++ भी उनके कार्यान्वयन के लिए शक्तिशाली उपकरण प्रदान करता है।

\n\n

इस लेख में, हम समझेंगे कि OAuth 2.0 और JWT कैसे काम करते हैं, और C++ में उनके कार्यान्वयन के व्यावहारिक उदाहरण दिखाएंगे। यह सामग्री शुरुआती डेवलपर्स के लिए है जो C++ और नेटवर्क प्रोग्रामिंग की मूल बातों से परिचित हैं।

\n\n

OAuth 2.0 क्या है?

\n\n

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

\n\n
    \n
  • Resource Owner (संसाधन स्वामी) — वह उपयोगकर्ता जिसके पास डेटा है।
  • \n
  • Client (क्लाइंट) — वह एप्लिकेशन जो पहुँच का अनुरोध करता है।
  • \n
  • Authorization Server (प्राधिकरण सर्वर) — सफल प्रमाणीकरण के बाद टोकन जारी करता है।
  • \n
  • Resource Server (संसाधन सर्वर) — टोकन द्वारा संरक्षित API।
  • \n
\n\n

JWT क्या है?

\n\n

JWT (JSON Web Token) एक कॉम्पैक्ट टोकन प्रारूप है जिसमें डेटा (claims) के साथ एक JSON ऑब्जेक्ट होता है और अखंडता सत्यापन के लिए हस्ताक्षरित होता है। JWT की संरचना में तीन भाग होते हैं, जो बिंदुओं द्वारा अलग किए जाते हैं:

\n\n
    \n
  • Header (शीर्षक) — इसमें टोकन का प्रकार और हस्ताक्षर एल्गोरिदम (जैसे, HS256 या RS256) होता है।
  • \n
  • Payload (पेलोड) — इसमें डेटा (जैसे, उपयोगकर्ता ID, समाप्ति तिथि) होता है।
  • \n
  • Signature (हस्ताक्षर) — गुप्त कुंजी का उपयोग करके header + payload को हैश करके बनाया जाता है।
  • \n
\n\n

JWT का लाभ यह है कि यह स्व-निहित है: संसाधन सर्वर प्राधिकरण सर्वर से संपर्क किए बिना टोकन को सत्यापित कर सकता है, जिससे कार्य तेज होता है।

\n\n

मुख्य भाग: C++ में कार्यान्वयन

\n\n

1. लाइब्रेरीज़ और वातावरण तैयार करना

\n\n

C++ में OAuth 2.0 और JWT के साथ काम करने के लिए हमें निम्नलिखित लाइब्रेरीज़ की आवश्यकता होगी:

\n\n
    \n
  • cURL (libcurl) — प्राधिकरण सर्वर पर HTTP अनुरोधों के लिए।
  • \n
  • nlohmann/json — JSON के साथ काम करने के लिए।
  • \n
  • jwt-cpp — JWT टोकन बनाने और सत्यापित करने के लिए।
  • \n
  • OpenSSL — क्रिप्टोग्राफ़िक संचालन (हस्ताक्षर और हैशिंग) के लिए।
  • \n
\n\n

vcpkg के माध्यम से स्थापना (अनुशंसित):

\n\n
vcpkg install curl jsoncpp jwt-cpp openssl
\n\n

CMakeLists.txt का उदाहरण:

\n\n
cmake_minimum_required(VERSION 3.15)\nproject(OAuthJWTExample)\n\nfind_package(CURL REQUIRED)\nfind_package(nlohmann_json REQUIRED)\nfind_package(jwt-cpp REQUIRED)\nfind_package(OpenSSL REQUIRED)\n\nadd_executable(main main.cpp)\ntarget_link_libraries(main\n    CURL::libcurl\n    nlohmann_json::nlohmann_json\n    jwt-cpp::jwt-cpp\n    OpenSSL::SSL\n    OpenSSL::Crypto\n)
\n\n

2. OAuth 2.0 Authorization Code Flow का कार्यान्वयन

\n\n

सबसे सामान्य प्रवाह पर विचार करें — Authorization Code Flow। क्लाइंट उपयोगकर्ता से एक प्राधिकरण कोड प्राप्त करता है, और फिर इसे एक्सेस टोकन के लिए विनिमय करता है।

\n\n

चरण 1: उपयोगकर्ता को प्राधिकरण सर्वर पर रीडायरेक्ट करना (सरलीकृत उदाहरण):

\n\n
#include <iostream>\n#include <string>\n\nstd::string buildAuthUrl(const std::string& clientId, \n                         const std::string& redirectUri) {\n    return "https://auth.example.com/authorize?"\n           "response_type=code&"\n           "client_id=" + clientId + "&"\n           "redirect_uri=" + redirectUri + "&"\n           "scope=openid+profile";\n}\n\nint main() {\n    std::string clientId = "your_client_id";\n    std::string redirectUri = "http://lo                

ब्लॉग

पुस्तक अनुशंसाएँ