सुरक्षा और प्रमाणपत्र
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 और स्थानीय प्रस्तुति से तुलना करें।