SHA-256 के साथ HMAC। साझा सममित कुंजी। सामान्य उपयोग के लिए अनुशंसित।
यह कैसे काम करता है
JSON वेब टोकन (JWT) एक संक्षिप्त, हस्ताक्षरित टोकन है जो दो पक्षों के बीच जानकारी (क्लेम) ले जाता है। यह बिंदुओं से अलग तीन भागों से बना है —हेडर, पेलोड और हस्ताक्षर—, प्रत्येक Base64URL में एन्कोड किया गया।
जनरेट मोड में आप हेडर और पेलोड को JSON में परिभाषित करते हैं और किसी गुप्त कुंजी (HMAC) या निजी कुंजी (RSA/ECDSA) से साइन करते हैं। रीड मोड में आप किसी मौजूदा टोकन को पेस्ट करके उसकी सामग्री का निरीक्षण करते हैं और हस्ताक्षर सत्यापित करते हैं।
पेलोड एन्क्रिप्टेड नहीं है: कोई भी Base64URL डिकोड करके इसे पढ़ सकता है। हस्ताक्षर केवल यह सुनिश्चित करता है कि टोकन बदला नहीं गया, इसे छिपाता नहीं है। JWT में कभी संवेदनशील डेटा न रखें।
उदाहरण
header{"alg":"HS256","typ":"JWT"} → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9payload{"sub":"1234567890","name":"John Doe","iat":1516239022} → eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQtokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cहस्ताक्षर (तीसरा भाग) एल्गोरिद्म और कुंजी पर निर्भर करता है; यह उदाहरण कुंजी "your-256-bit-secret" के साथ HS256 का उपयोग करता है।उपयोग के मामले
- API में उपयोगकर्ताओं को प्रमाणित करना: सर्वर एक हस्ताक्षरित टोकन जारी करता है और सत्र संग्रहीत किए बिना हर अनुरोध पर उसे सत्यापित करता है।
- प्रमाणीकरण टोकन का निरीक्षण और डीबग करना ताकि उनके क्लेम (sub, exp, भूमिकाएँ) और तिथियाँ देखी जा सकें।
- किसी टोकन के हस्ताक्षर को गुप्त कुंजी या सार्वजनिक कुंजी से सत्यापित करना ताकि पुष्टि हो कि उससे छेड़छाड़ नहीं हुई।
- प्रमाणीकरण फ़्लो विकसित करते समय विभिन्न एल्गोरिद्म (HMAC, RSA, ECDSA) के साथ परीक्षण टोकन बनाना।
अक्सर पूछे जाने वाले प्रश्न
क्या JWT की सामग्री एन्क्रिप्टेड है?
नहीं। हेडर और पेलोड केवल Base64URL में एन्कोड किए गए हैं, जिसे कोई भी डिकोड कर सकता है। हस्ताक्षर अखंडता (कि इसे बदला नहीं गया) की गारंटी देता है, गोपनीयता की नहीं।
HS256 और RS256 में क्या अंतर है?
HS256 साइन और वेरिफ़ाई के लिए एक ही साझा गुप्त कुंजी (HMAC) का उपयोग करता है। RS256 असिमेट्रिक है: यह निजी कुंजी से साइन करता है और सार्वजनिक कुंजी से वेरिफ़ाई करता है, जो तब आदर्श है जब कई सेवाओं को जारी किए बिना केवल सत्यापन करना हो।
iat, exp और nbf क्लेम का क्या अर्थ है?
ये मानक टाइमस्टैम्प हैं: iat (जारी किया गया), exp (समाप्त होता है) और nbf (इससे पहले मान्य नहीं)। इन्हें 1970 से सेकंड में व्यक्त किया जाता है (यूनिक्स epoch)।
"none" एल्गोरिद्म को क्यों हतोत्साहित किया जाता है?
क्योंकि यह बिना हस्ताक्षर वाला टोकन बनाता है: कोई भी पेलोड बदल सकता है और यह फिर भी स्वीकार होगा। यह केवल परीक्षण के लिए उपयोगी है, उत्पादन में कभी नहीं।
क्या मेरा टोकन किसी सर्वर को भेजा जाता है?
नहीं। निर्माण, डिकोडिंग और सत्यापन पूरी तरह आपके ब्राउज़र में होते हैं; टोकन और कुंजियाँ कभी आपके डिवाइस से बाहर नहीं जातीं।