تنفيذ OAuth 2.0 و JWT للمصادقة باستخدام C++ للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في OAuth 2.0 و JWT باستخدام C++



في تطوير الويب الحديث، الأمان وإدارة الوصول هما جانبان بالغا الأهمية. أصبح OAuth 2.0 و JWT (رموز JSON Web Tokens) المعيار الفعلي لتنفيذ المصادقة في واجهات API وتطبيقات الويب. على الرغم من أن هذه التقنيات ترتبط غالبًا بـ JavaScript أو Python أو Java، إلا أن C++ توفر أيضًا أدوات قوية لتنفيذها.



في هذه المقالة، سنشرح كيفية عمل OAuth 2.0 و JWT، ونعرض أمثلة عملية لتنفيذها باستخدام C++. المحتوى موجه للمطورين المبتدئين الذين لديهم معرفة أساسية بـ C++ وبرمجة الشبكات.



ما هو OAuth 2.0؟



OAuth 2.0 هو بروتوكول مصادقة يسمح للتطبيقات بالحصول على وصول محدود إلى موارد المستخدم دون نقل بيانات اعتماده (اسم المستخدم وكلمة المرور). بدلاً من ذلك، يتم استخدام رموز الوصول. الأدوار الرئيسية في OAuth 2.0:



  • مالك المورد (Resource Owner) — المستخدم الذي يملك البيانات.
  • العميل (Client) — التطبيق الذي يطلب الوصول.
  • خادم المصادقة (Authorization Server) — يصدر الرموز بعد المصادقة الناجحة.
  • خادم الموارد (Resource Server) — واجهة API المحمية بالرموز.


ما هو JWT؟



JWT (JSON Web Token) هو تنسيق رمز مضغوط يحتوي على كائن JSON مع بيانات (مطالبات) ويتم توقيعه للتحقق من سلامته. يتكون هيكل JWT من ثلاثة أجزاء مفصولة بنقاط:



  • الرأس (Header) — يحتوي على نوع الرمز وخوارزمية التوقيع (مثل HS256 أو RS256).
  • الحمولة (Payload) — تحتوي على البيانات (مثل معرف المستخدم، تاريخ انتهاء الصلاحية).
  • التوقيع (Signature) — يتم إنشاؤه عن طريق تجزئة الرأس + الحمولة باستخدام مفتاح سري.


ميزة JWT هي أنه مكتفي ذاتيًا: يمكن لخادم الموارد التحقق من الرمز دون الرجوع إلى خادم المصادقة، مما يسرع العمل.



الجزء الرئيسي: التنفيذ باستخدام C++



1. المكتبات وإعداد البيئة



للعمل مع OAuth 2.0 و JWT باستخدام C++، سنحتاج إلى المكتبات التالية:



  • cURL (libcurl) — لطلبات HTTP إلى خادم المصادقة.
  • nlohmann/json — للعمل مع JSON.
  • jwt-cpp — لإنشاء والتحقق من رموز JWT.
  • OpenSSL — للعمليات التشفيرية (التوقيع والتجزئة).


التثبيت عبر vcpkg (موصى به):



vcpkg install curl jsoncpp jwt-cpp openssl


مثال على CMakeLists.txt:



cmake_minimum_required(VERSION 3.15)project(OAuthJWTExample)

find_package(CURL REQUIRED)find_package(nlohmann_json REQUIRED)find_package(jwt-cpp REQUIRED)find_package(OpenSSL REQUIRED)

add_executable(main main.cpp)target_link_libraries(main CURL::libcurl nlohmann_json::nlohmann_json jwt-cpp::jwt-cpp OpenSSL::SSL OpenSSL::Crypto)


2. تنفيذ تدفق رمز المصادقة OAuth 2.0 Authorization Code Flow



لننظر إلى التدفق الأكثر شيوعًا — تدفق رمز المصادقة Authorization Code Flow. يحصل العميل على رمز مصادقة من المستخدم، ثم يستبدله برمز وصول.



الخطوة 1: إعادة توجيه المستخدم إلى خادم المصادقة (مثال مبسط):



#include <iostream>#include <string>

std::string buildAuthUrl(const std::string& clientId, const std::string& redirectUri) { return "https://auth.example.com/authorize?" "response_type=code&" "client_id=" + clientId + "&" "redirect_uri=" + redirectUri + "&" "scope=openid+profile";}

int main() { std::string clientId = "your_client_id"; std::string redirectUri = "http://lo

المدونات

توصيات الكتب