PHP में JWT टोकन: firebase/php-jwt लाइब्रेरी और पूर्ण गाइड

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

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

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

PHP में JWT टोकन: firebase/php-jwt लाइब्रेरी के लिए पूर्ण गाइड



JSON Web Token (JWT) क्लाइंट और सर्वर के बीच JSON प्रारूप में डेटा स्थानांतरित करने का एक कॉम्पैक्ट और सुरक्षित तरीका है। आधुनिक वेब डेवलपमेंट में, JWT का व्यापक रूप से उपयोगकर्ताओं के प्रमाणीकरण और अधिकारिता के लिए, साथ ही विभिन्न सेवाओं के बीच सूचना के आदान-प्रदान के लिए उपयोग किया जाता है। PHP में JWT के साथ काम करने के लिए सबसे लोकप्रिय और विश्वसनीय लाइब्रेरी firebase/php-jwt है।



JWT क्या है और इसकी आवश्यकता क्यों है?

JWT तीन भागों से बना होता है, जो बिंदुओं द्वारा अलग किए जाते हैं:

  • Header — हेडर, जिसमें टोकन के प्रकार और हस्ताक्षर एल्गोरिदम के बारे में जानकारी होती है।
  • Payload — डेटा के साथ पेलोड (उदाहरण के लिए, उपयोगकर्ता ID, भूमिका, समाप्ति तिथि)।
  • Signature — गुप्त कुंजी या RSA/ECDSA कुंजी जोड़ी का उपयोग करके बनाया गया हस्ताक्षर।

JWT के मुख्य लाभ:

  • सर्वर पर सत्र संग्रहीत करने की आवश्यकता नहीं है (stateless)।
  • JSON प्रारूप में कोई भी डेटा शामिल कर सकते हैं।
  • विभिन्न हस्ताक्षर एल्गोरिदम का समर्थन करते हैं: HS256, RS256, ES256 और अन्य।
  • क्रिप्टोग्राफिक हस्ताक्षर के कारण जालसाजी के प्रति प्रतिरोधी।


firebase/php-jwt लाइब्रेरी की स्थापना

लाइब्रेरी स्थापित करने के लिए Composer का उपयोग करें। प्रोजेक्ट की रूट फ़ोल्डर में टर्मिनल खोलें और कमांड चलाएँ:

composer require firebase/php-jwt

स्थापना के बाद, अपने PHP स्क्रिप्ट में Composer ऑटोलोड को शामिल करें:

<?phprequire_once __DIR__ . '/vendor/autoload.php';

use Firebase\\JWT\\JWT;use Firebase\\JWT\\Key;?>


JWT टोकन का निर्माण

टोकन बनाने के लिए, पेलोड को परिभाषित करना और इसे गुप्त कुंजी से हस्ताक्षरित करना आवश्यक है। HS256 एल्गोरिदम के साथ टोकन बनाने का उदाहरण:

<?php$key = 'your-secret-key-here'; // गुप्त कुंजी (कम से कम 32 अक्षर)$payload = [    'iss' => 'pythonlib.ru',       // टोकन जारीकर्ता    'sub' => '1234567890',         // विषय (उदाहरण के लिए, उपयोगकर्ता ID)    'name' => 'इवान इवानोव',    'role' => 'user',    'iat' => time(),               // निर्माण का समय    'exp' => time() + 3600         // समाप्ति तिथि (1 घंटा)];

$jwt = JWT::encode($payload, $key, 'HS256');echo "बनाया गया JWT टोकन:" . $jwt;?>

इस उदाहरण में, हम मानक फ़ील्ड सेट करते हैं: iss (जारीकर्ता), sub (विषय), iat (निर्माण का समय) और exp (समाप्ति तिथि)। आप कोई भी कस्टम फ़ील्ड जोड़ सकते हैं, जैसे role या email।



JWT टोकन का डिकोडिंग और सत्यापन

क्लाइंट से टोकन प्राप्त करने पर, इसके हस्ताक्षर और समाप्ति तिथि की जाँच करना आवश्यक है। लाइब्रेरी स्वचालित रूप से एल्गोरिदम और हस्ताक्षर की वैधता की जाँच करती है:

<?phptry {    $decoded = JWT::decode($jwt, new Key($key, 'HS256'));    print_r($decoded);} catch (\\Firebase\\JWT\\ExpiredException $e) {    echo "त्रुटि: टोकन समाप्त हो गया — " . $e->getMessage();} catch (\\Firebase\\JWT\\SignatureInvalidException $e) {    echo "त्रुटि: अमान्य हस्ताक्षर — " . $e->getMessage();} catch (\\Exception $e) {    echo "त्रुटि: " . $e->getMessage();}?>

decode() विधि पेलोड डेटा के साथ एक stdClass ऑब्जेक्ट लौटाती है। यदि टोकन अमान्य है, तो संबंधित अपवाद फेंका जाता है। ExpiredException और SignatureInvalidException अपवादों को हमेशा संभालने की अनुशंसा की जाती है।



असममित एन्क्रिप्शन (RS256) का उपयोग

सुरक्षा बढ़ाने के लिए, कुंजी जोड़ी (निजी/सार्वजनिक) के साथ RS256 एल्गोरिदम का उपयोग करें। यह विशेष रूप से माइक्रोसर्विस आर्किटेक्चर में प्रासंगिक है:

<?php// कुंजी जनरेशन (एक बार किया जाता है)// openssl genrsa -out private.pem 2048// openssl rsa -in private.pem -pubout -out public.pem

$privateKey = file_get_contents('

अनुशंसाएँ