सुरक्षा और प्रमाणपत्र

JWT दावे समझें: exp, iat और nbf

exp, nbf और iat दावे NumericDate मान हैं: Unix epoch से सेकंड में मापी संख्याएँ। वे टोकन के जीवनकाल के अलग-अलग क्षण बताते हैं।

प्रकाशित

NumericDate का अर्थ Unix epoch से सेकंड है

JWT समय दावे 1970-01-01T00:00:00Z से सेकंड दर्शाने वाली JSON संख्या उपयोग करते हैं और leap seconds अनदेखे करते हैं। वही संख्या JavaScript Date में देने के लिए 1000 से गुणा करें।

const expiresAt = new Date(payload.exp * 1000);

exp: समाप्ति समय

टोकन को exp पर या उसके बाद स्वीकार नहीं करना चाहिए। डिकोडर संख्या की मौजूदा घड़ी से तुलना कर सकता है, लेकिन ऐप को सत्यापित टोकन और गुम या अमान्य समाप्ति के लिए स्पष्ट नीति चाहिए।

if (nowSeconds >= payload.exp) reject("expired");

nbf: इस समय से पहले मान्य नहीं

टोकन को nbf से पहले स्वीकार नहीं करना चाहिए। यह विलंबित सक्रियण, तय समय का एक्सेस और ऐसे प्रवाह सम्भव बनाता है जहाँ जारी करना उपयोग की अनुमति से पहले होता है।

if (nowSeconds < payload.nbf) reject("not active yet");

iat: जारी होने का समय, समाप्ति नियम नहीं

iat टोकन जारी होने का समय दर्ज करता है और उम्र निकालने या स्पष्ट रूप से भविष्य का समय पकड़ने में मदद कर सकता है। यह समाप्ति नहीं बताता और exp की जगह नहीं लेता।

const tokenAgeSeconds = nowSeconds - payload.iat;

exp, iat और nbf की साथ-साथ तुलना

दावाअर्थआम अस्वीकृति जाँच
expसमाप्ति समयnow >= exp
nbfइससे पहले मान्य नहींnow < nbf
iatजारी होने का समयनीति के अनुसार उम्र या भविष्य के समय की जाँच

घड़ी के अंतर के लिए छोटा और स्पष्ट अवकाश रखें

JWT विनिर्देश घड़ी के छोटे अंतर के लिए थोड़ा अवकाश देता है। इसे सीमित और दस्तावेज़ित रखें; बड़ी सहनशीलता चुपचाप वह अवधि बढ़ाती है जिसमें समाप्त या समय से पहले वाला टोकन स्वीकार हो सकता है।

समय दावों की सत्यापन सूची

  • किसी समय दावे पर भरोसा करने से पहले सिग्नेचर सत्यापित करें।
  • हर जगह सेकंड उपयोग करें और भरोसेमंद घड़ी से तुलना करें।
  • ऐप की नीति के अनुसार खराब या गैर-संख्यात्मक मान अस्वीकार करें।
  • घड़ी के अंतर के लिए एक दस्तावेज़ित अवकाश लागू करें।
  • issuer, audience और आवश्यक ऐप दावे भी सत्यापित करें।

उदाहरण आज़माएँ

JWT समय दावों को तारीख में पढ़ें

exp, iat और nbf वाले कृत्रिम टोकन की कच्चे सेकंड और तारीख के रूप में तुलना करें।

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSBMb3ZlbGFjZSIsImFkbWluIjp0cnVlLCJpYXQiOjE3MDAwMDAwMDAsIm5iZiI6MTY5OTk5OTkwMCwiZXhwIjoyMTQ3NDgzNjQ3fQ.ZGVtby1zaWduYXR1cmU

अपेक्षित परिणाम: डिकोडर तीनों NumericDate मान दिखाता है और उनके अलग अर्थ गाइड में समझाए गए हैं।

समय मान पढ़ें

exp, iat और nbf को तारीख के रूप में देखें

कृत्रिम टोकन डिकोड करके हर कच्चे NumericDate की UTC और स्थानीय प्रस्तुति से तुलना करें।

JWT Decoder में आगे बढ़ें →