Node.js बैकएंड विकास बूटकैंप · पाठ

JWT टोकन बनाना और सत्यापन

JSON वेब टोकन (JWT) समझें और सुरक्षित API पहुँच के लिए उनका निर्माण व सत्यापन लागू करें।

पाठ 2, कुल 6 में से12 चरण

JWT टोकन बनाना और सत्यापन, CoddyKit पर Node.js बैकएंड विकास बूटकैंप का एक निःशुल्क पाठ है। यह 6 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Node.js बैकएंड विकास बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम में कुल 6 पाठ शामिल हैं।

JWT का परिचय: क्या और क्यों

स्वागत है! इस पाठ में हम JSON Web Tokens (JWT) को समझेंगे, जो API को सुरक्षित करने का एक लोकप्रिय तरीका है।

JWT दावों को दो पक्षों के बीच भेजने के लिए एक संक्षिप्त और URL-सुरक्षित माध्यम है। इसे अपने API के लिए एक डिजिटल पहचान-पत्र समझिए।

API के लिए JWT का उपयोग क्यों करें?

आधुनिक वेब और मोबाइल API के लिए JWT कई लाभ प्रदान करते हैं:

  • स्टेटलेस होना: सर्वर को सत्र संबंधी जानकारी संग्रहीत करने की आवश्यकता नहीं होती। प्रत्येक अनुरोध में उपयोगकर्ता के प्रमाणीकरण का विवरण होता है।
  • स्केलेबिलिटी: अनुप्रयोगों को क्षैतिज रूप से बढ़ाना आसान होता है, क्योंकि सर्वरों के बीच साझा सत्र स्थिति नहीं होती।
  • सुरक्षा: सही तरीके से लागू किए जाने पर JWT उपयोगकर्ता की पहचान सत्यापित करने और छेड़छाड़ रोकने का सुरक्षित तरीका प्रदान करते हैं।

JWT की संरचना: तीन भाग

JWT एक ऐसी स्ट्रिंग है जो तीन भागों से बनी होती है और ये भाग बिंदुओं (.) से अलग होते हैं। प्रत्येक भाग Base64Url में एन्कोड किया जाता है:

HEADER.PAYLOAD.SIGNATURE

आइए समझते हैं कि इनमें से प्रत्येक भाग का क्या अर्थ है और सुरक्षा के लिए ये क्यों महत्वपूर्ण हैं।

JWT का Header

Header में आमतौर पर दो भाग होते हैं:

  • alg (Algorithm): टोकन पर हस्ताक्षर करने के लिए उपयोग किए गए क्रिप्टोग्राफ़िक एल्गोरिदम को निर्दिष्ट करता है, जैसे HS256 और RS256।
  • typ (Type): बताता है कि टोकन JWT है।

उदाहरण (Base64Url से डिकोड किया गया):

{"alg": "HS256", "typ": "JWT"}

JWT का Payload (दावे)

Payload में "दावे" होते हैं—किसी इकाई, जैसे उपयोगकर्ता, के बारे में कथन और अतिरिक्त डेटा।

दावे ये हो सकते हैं:

  • पंजीकृत: मानक फ़ील्ड, जैसे iss (जारीकर्ता), exp (समाप्ति समय), sub (विषय)।
  • सार्वजनिक: IANA JWT Registry में पंजीकृत कस्टम दावे।
  • निजी: भेजने वाले और प्राप्त करने वाले के बीच सहमति से तय किए गए कस्टम दावे।

Payload का उदाहरण:

{"sub": "user123", "name": "Alice", "exp": 1678886400}

JWT का Signature

Signature टोकन की प्रामाणिकता और अखंडता सत्यापित करने के लिए अत्यंत महत्वपूर्ण है। यह सुनिश्चित करता है कि टोकन के साथ छेड़छाड़ नहीं की गई है।

इसे एन्कोड किए गए Header, एन्कोड किए गए Payload, एक गुप्त कुंजी और Header में निर्दिष्ट एल्गोरिदम को लेकर बनाया जाता है, फिर इन पर हस्ताक्षर किए जाते हैं।

सूत्र (सरलीकृत):

HMACSHA256(encodedHeader + "." + encodedPayload, secretKey)

Python: JWT बनाना

आइए Python की PyJWT लाइब्रेरी का उपयोग करके JWT बनाते हैं। पहले इसे इंस्टॉल करें: pip install PyJWT।

हम समाप्ति समय और एक गुप्त कुंजी वाला Payload परिभाषित करते हैं।

import jwt
import datetime

def main():
    SECRET_KEY = "your-super-secret-key"

    # Define payload with some claims
    payload = {
        "sub": "user123",
        "name": "Alice",
        "exp": datetime.datetime.utcnow() + datetime.timedelta(minutes=30),
        "iat": datetime.datetime.utcnow()
    }

    # Encode the token
    token = jwt.encode(payload, SECRET_KEY, algorithm="HS256")
    print(f"Generated JWT: {token}")

if __name__ == "__main__":
    main()

गुप्त कुंजियाँ और सुरक्षा

JWT पर हस्ताक्षर करने और उनका सत्यापन करने के लिए उपयोग की जाने वाली SECRET_KEY अत्यंत महत्वपूर्ण है। यदि यह कुंजी उजागर हो जाए, तो हमलावर मान्य टोकन बना सकता है और अनधिकृत पहुँच प्राप्त कर सकता है।

  • हमेशा मज़बूत और बेतरतीब ढंग से बनाई गई कुंजी का उपयोग करें।
  • इसे अपने अनुप्रयोग में कभी भी सीधे न लिखें; पर्यावरण चर या सुरक्षित कुंजी-प्रबंधन सेवा का उपयोग करें।
  • इसे पूरी तरह गोपनीय रखें!

Python: JWT का सत्यापन करना

JWT का सत्यापन करने के लिए उसी गुप्त कुंजी और एल्गोरिदम का उपयोग करके उसे डिकोड करें। PyJWT हस्ताक्षर का स्वतः सत्यापन करता है और समाप्ति जैसे दावों की जाँच करता है (`exp`)।

import jwt
import datetime
import time

def main():
    SECRET_KEY = "your-super-secret-key"

    # Generate a token to validate (short expiry for demo)
    payload_gen = {
        "sub": "user123",
        "name": "Bob",
        "exp": datetime.datetime.utcnow() + datetime.timedelta(seconds=5), 
        "iat": datetime.datetime.utcnow()
    }
    token_to_validate = jwt.encode(payload_gen, SECRET_KEY, algorithm="HS256")
    print(f"Token to validate: {token_to_validate}\n")
    time.sleep(1) # Wait a bit for demonstration

    # Attempt to decode/validate it
    try:
        decoded_payload = jwt.decode(token_to_validate, SECRET_KEY, algorithms=["HS256"])
        print("Token is valid!")
        print(f"Decoded Payload: {decoded_payload}")
    except jwt.ExpiredSignatureError:
        print("Token has expired!")
    except jwt.InvalidTokenError:
        print("Invalid token (e.g., bad signature or format).")

if __name__ == "__main__":
    main()

JWT के लिए सर्वोत्तम विधियाँ

अपने JWT कार्यान्वयन को सुरक्षित रखने के लिए:

  • समाप्ति निर्धारित करें (exp): समझौता किए गए टोकन की प्रभावी अवधि सीमित करने के लिए हमेशा समाप्ति दावा शामिल करें।
  • HTTPS: निगरानी से बचने के लिए JWT हमेशा HTTPS के माध्यम से भेजें।
  • सुरक्षित संग्रहण: क्लाइंट की ओर टोकन सुरक्षित रूप से संग्रहीत करें, जैसे वेब के लिए केवल-HTTP कुकी और मोबाइल के लिए सुरक्षित संग्रहण।
  • रिफ़्रेश टोकन: लंबे सत्रों के लिए कम अवधि वाले एक्सेस टोकन और अधिक अवधि वाले रिफ़्रेश टोकन का उपयोग करें।

अपनी समझ जाँचें

JWT के घटकों की समीक्षा करें। निम्नलिखित में से कौन-सा भाग यह सुनिश्चित करता है कि टोकन के साथ छेड़छाड़ नहीं की गई है?

पुनरावलोकन: JWT की आवश्यक बातें

इस पाठ में हमने सुरक्षित API प्रमाणीकरण के लिए JSON Web Tokens (JWT) का अध्ययन किया।

  • JWT संक्षिप्त और URL-सुरक्षित टोकन होते हैं, जिनमें Header, Payload और Signature होते हैं।
  • Header टोकन के प्रकार और हस्ताक्षर करने वाले एल्गोरिदम को परिभाषित करता है।
  • Payload में "दावे" होते हैं, जैसे उपयोगकर्ता ID, भूमिकाएँ और समाप्ति।
  • Signature टोकन की अखंडता और प्रामाणिकता की पुष्टि करता है।
  • हमने Python की PyJWT लाइब्रेरी का उपयोग करके JWT बनाना और उनका सत्यापन करना सीखा।
  • सुरक्षा के लिए हमेशा मज़बूत, गुप्त कुंजियों का उपयोग करें और समाप्ति समय निर्धारित करें।

अगले पाठ में हम संपूर्ण प्रमाणीकरण प्रवाह के लिए OAuth2 का उपयोग करके JWT को FastAPI में एकीकृत करेंगे!

शुरुआत निःशुल्क

एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
22
पाठ
92

अक्सर पूछे जाने वाले प्रश्न

क्या “JWT टोकन बनाना और सत्यापन” पाठ निःशुल्क है?

हाँ—“JWT टोकन बनाना और सत्यापन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम में कुल 6 पाठ शामिल हैं।

“JWT टोकन बनाना और सत्यापन” में मैं क्या सीखूँगा?

JSON वेब टोकन (JWT) समझें और सुरक्षित API पहुँच के लिए उनका निर्माण व सत्यापन लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Node.js बैकएंड विकास बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Node.js बैकएंड विकास बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Node.js बैकएंड विकास बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 6 में से 2वाँ पाठ है।

“JWT टोकन बनाना और सत्यापन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Node.js बैकएंड विकास बूटकैंप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Node.js बैकएंड विकास बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. उपयोगकर्ता पंजीकरण और लॉगिन
  2. JWT टोकन बनाना और सत्यापन
  3. स्टेटलेस प्रमाणीकरण के लिए JWT
  4. OAuth2 पासवर्ड फ़्लो एकीकरण
  5. भूमिका-आधारित पहुँच नियंत्रण
  6. भूमिका-आधारित पहुँच नियंत्रण (RBAC)
← Node.js बैकएंड विकास बूटकैंप पर वापस जाएँ