PyJWT का परिचय
JSON Web Token (JWT) API प्रमाणीकरण और अधिकार के क्षेत्र में एक मानक बन गया है। यह क्लाइंट और सर्वर के बीच सुरक्षित रूप से पहचान संबंधी जानकारी भेजने की अनुमति देता है, बिना सर्वर पर सत्र (session) स्टोर किए। Python में JWT के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरीज़ में से एक PyJWT है।
PyJWT एक Python लाइब्रेरी है जो JWT टोकन बनाने, डिकोड करने और सत्यापित करने की प्रक्रिया को सरल बनाती है, साथ ही विभिन्न एन्क्रिप्शन एल्गोरिदम का समर्थन करती है। यह लेख विस्तार से बताएगा कि आप अपने प्रोजेक्ट में PyJWT का प्रभावी और सुरक्षित तरीके से उपयोग कैसे कर सकते हैं।
JWT (JSON Web Token) की मूल बातें
JWT टोकन की संरचना
JWT तीन भागों से बना होता है, जो डॉट (.) से अलग होते हैं:
header.payload.signature
- Header — इसमें टोकन का प्रकार और उपयोग किया गया एल्गोरिदम (जैसे HS256) होता है
- Payload — इसमें claims (आवश्यकताएँ) यानी उपयोगी डेटा होता है
- Signature — टोकन की प्रामाणिकता जांचने के लिए उपयोग किया जाता है
JWT उपयोग करने के लाभ
- Stateless: सर्वर को सत्र (session) स्टोर करने की ज़रूरत नहीं
- कॉम्पैक्ट: HTTP हेडर में आसानी से भेजा जा सकता है
- सुरक्षा: HMAC और RSA एन्क्रिप्शन का समर्थन
- क्रॉस-प्लेटफ़ॉर्म: सभी प्रोग्रामिंग भाषाओं पर काम करता है
- स्व-पर्याप्त: इसमें उपयोगकर्ता के बारे में सारी ज़रूरी जानकारी होती है
JWT का कार्य सिद्धांत
JWT निम्नलिखित सिद्धांत पर काम करता है:
- उपयोगकर्ता सर्वर पर प्रमाणित होता है
- सर्वर उपयोगकर्ता की जानकारी के साथ JWT टोकन जनरेट करता है
- क्लाइंट टोकन को सेव करता है और इसे Authorization हेडर में भेजता है
- सर्वर टोकन के हस्ताक्षर (signature) की जाँच करता है और उपयोगकर्ता का डेटा निकालता है
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 में बनाई गई थी और Python में JWT टोकन के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरीज़ में से एक है। यह लाइब्रेरी सक्रिय रूप से विकसित और समुदाय द्वारा समर्थित है, और नवीनतम सुरक्षा मानकों को पूरा करने के लिए नियमित रूप से अपडेट की जाती है।
लाइब्रेरी की आर्किटेक्चर
PyJWT एक मॉड्यूलर आर्किटेक्चर पर बनी है जिसमें जिम्मेदारियों का स्पष्ट विभाजन है:
- एन्कोडिंग/डिकोडिंग कोर — टोकन के साथ काम करने के लिए मुख्य फ़ंक्शन
- एल्गोरिदम मॉड्यूल — विभिन्न एन्क्रिप्शन एल्गोरिदम का समर्थन
- एक्सेप्शन मॉड्यूल — त्रुटियों और अपवाद स्थितियों को संभालना
- यूटिलिटी मॉड्यूल — समय और कुंजियों के साथ काम करने के लिए सहायक फ़ंक्शन
मुख्य क्षमताएँ
- सभी मानक JWT एल्गोरिदम का समर्थन
- टोकन की समय सीमा (expiry) की स्वचालित जाँच
- कस्टम claims जोड़ने की सुविधा
- विभिन्न प्रकार की कुंजियों का समर्थन (सममित और असममित)
- लोकप्रिय वेब फ्रेमवर्क के साथ एकीकरण
PyJWT के साथ JWT टोकन बनाना
बेसिक उदाहरण
payload = {"user_id": 123}
secret = "mysecret"
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)