PyJWT: التعامل مع رموز JWT في بايثون

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

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

ابدأ الدورة

مقدمة عن PyJWT

أصبح JSON Web Token (JWT) المعيار الأساسي في مجال المصادقة والتفويض لواجهات API. يتيح نقل معلومات التحقق بين العميل والخادم بأمان دون الحاجة لتخزين الجلسات على الخادم. من أشهر المكتبات في بايثون للتعامل مع JWT هي PyJWT.

PyJWT هي مكتبة بايثون للتعامل مع رموز JWT، تسهل إنشاء وفك تشفير والتحقق من JWT مع دعم خوارزميات تشفير متعددة. هذا المقال يشرح بالتفصيل كيفية استخدام PyJWT بكفاءة وأمان في مشروعك.

أساسيات JWT (JSON Web Token)

بنية رمز JWT

يتكون JWT من ثلاثة أجزاء مفصولة بنقاط:

header.payload.signature
  • Header — يحتوي على نوع الرمز والخوارزمية المستخدمة (مثل HS256)
  • Payload — يحتوي على المطالبات (claims)، أي البيانات المفيدة
  • Signature — يُستخدم للتحقق من صحة الرمز

مزايا استخدام JWT

  • عديم الحالة (Stateless): لا يحتاج الخادم لتخزين الجلسات
  • صغير الحجم: يُنقل بسهولة في رؤوس HTTP
  • الأمان: دعم تشفير HMAC و RSA
  • متعدد المنصات: يعمل على جميع لغات البرمجة
  • مكتفي بذاته: يحتوي على جميع المعلومات اللازمة عن المستخدم

مبدأ عمل JWT

يعمل JWT وفق المبدأ التالي:

  1. يقوم المستخدم بتسجيل الدخول على الخادم
  2. يولد الخادم رمز JWT يحتوي على معلومات المستخدم
  3. يحفظ العميل الرمز ويرسله في رأس Authorization
  4. يتحقق الخادم من توقيع الرمز ويستخرج بيانات المستخدم

تثبيت وإعداد PyJWT

كيفية تثبيت PyJWT

pip install PyJWT

للعمل مع خوارزميات RSA و ECDSA، قم بتثبيت التبعيات الإضافية:

pip install "PyJWT[crypto]"

الاستيراد والإعداد الأولي

import jwt
import datetime
import os
from typing import Dict, Any

تنفذ PyJWT معيار RFC 7519 بالكامل وتوفر واجهة بسيطة لتوليد الرموز والتحقق منها.

وصف تفصيلي لمكتبة PyJWT

التاريخ والتطور

تم إنشاء PyJWT في عام 2013 وهي واحدة من أشهر المكتبات للتعامل مع رموز JWT في بايثون. المكتبة تتطور بنشاط وتدعمها المجتمع، ويتم تحديثها بانتظام لتتوافق مع أحدث معايير الأمان.

هندسة المكتبة

تم بناء PyJWT على بنية معيارية مع فصل واضح للمسؤوليات:

  • نواة التشفير/فك التشفير — الوظائف الأساسية للتعامل مع الرموز
  • وحدة الخوارزميات — دعم خوارزميات تشفير مختلفة
  • وحدة الاستثناءات — معالجة الأخطاء والحالات الاستثنائية
  • وحدة الأدوات المساعدة — وظائف مساعدة للتعامل مع الوقت والمفاتيح

الإمكانيات الأساسية

  • دعم جميع خوارزميات JWT القياسية
  • التحقق التلقائي من صلاحية الرمز
  • إمكانية إضافة مطالبات مخصصة
  • دعم أنواع مختلفة من المفاتيح (متناظرة وغير متناظرة)
  • التكامل مع أطر الويب الشهيرة

إنشاء رموز JWT باستخدام PyJWT

مثال أساسي

payload = {"user_id": 123}
secret = "mysecret"
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)

تحديد مدة الصلاحية وبيانات إضافية

توصيات