हिन्दी

डेवलपर टूल · JWT डिकोडर

JWT exp, iat और nbf: संख्यात्मक दिनांक सेकंड है, मिलीसेकंड नहीं

· यह काम किस प्रकार करता है

जेडब्ल्यूटी टाइम स्टाम्प्स डिबगिंग

JWT NumericDate सेकंड एक मिलीसेकंड ब्राउज़र घड़ी के साथ संरेखित
मूल ToolAcre वेक्टर चित्रण

JavaScript आपको मिलीसेकंड देता है और JWT सेकंड चाहता है, इसलिए टाइमस्टैम्प हजारों गुना गलत हो जाते हैं। यह पोस्ट न्यूमेरिकडेट और तीन बार के दावों को सही ढंग से पढ़ने का तरीका बताती है।

टोकन जो कभी समाप्त नहीं होते या आने से पहले ही समाप्त हो जाते हैं - इकाइयों की गलती के दो लक्षण

एक हजार में से एक गलती नाटकीय लक्षण पैदा करती है। JavaScript मिलीसेकंड की आपूर्ति, जहां एक टोकन निर्माता को युग सेकंड की उम्मीद होती है, समाप्ति को हजारों साल दूर धकेल सकता है। सेकंड मान को फिर से विभाजित करने से इसे 1970 के पास रखा जा सकता है, जिससे नया जारी किया गया टोकन उसके पहले वैध अनुरोध से पहले ही समाप्त हो गया दिखाई देगा।

एक डिकोडर ISO रीडिंग के बगल में संख्यात्मक दावा दिखाकर पैमाने को उजागर करने में मदद करता है। वह डिस्प्ले केवल डायग्नोस्टिक है। एक हमलावर किसी अहस्ताक्षरित या जाली पेलोड में कोई भी `exp`, `iat` या `nbf` नंबर लिख सकता है, इसलिए परिवर्तित घड़ी के समय का अधिकार केवल हस्ताक्षर और अन्यत्र नीति सत्यापन के बाद ही होता है।

RFC 7519 में न्यूमेरिकडेट - Unix युग के बाद से सेकंड, JSON संख्या के रूप में, अंशों की अनुमति है लेकिन शायद ही कभी उपयोग किया जाता है

JWT समय के दावे एक संख्यात्मक दिनांक प्रतिनिधित्व का उपयोग करते हैं: एक JSON संख्या जो Unix युग से सेकंड गिनती करती है। भिन्नात्मक संख्याएँ उप-सेकंड स्थितियों का प्रतिनिधित्व कर सकती हैं क्योंकि कार्यान्वयन दिनांक बनाने से पहले मान को 1,000 से गुणा करता है। यह किसी मान्य परिमित संख्या को पहले पूर्णांक में पूर्णांकित नहीं करता है।

ToolAcre प्रदर्शन के लिए समय-आकार वाले फ़ील्ड के रूप में `exp`, `nbf`, `iat`, `auth_time` और `updated_at` को पहचानता है। इसके पंजीकृत-दावा विवरण में केवल पहले तीन ही शामिल हैं। गैर-संख्यात्मक, अनंत या अमान्य दिनांक परिणामों को सार्थक समय के रूप में प्रस्तुत करने के बजाय छोड़ दिया जाता है, जिससे "जल्द ही" जैसी स्ट्रिंग को टाइमस्टैम्प के रूप में छिपाने से रोका जा सकता है।

Date.now() मिलीसेकेंड है - JavaScript आदत जो दूर भविष्य की समाप्ति उत्पन्न करती है

`Date.now()` मिलीसेकंड लौटाता है, जबकि न्यूमेरिकडेट मान सेकंड में व्यक्त किया जाता है। इसलिए ब्राउज़र घड़ी से दावा प्राप्त करने वाले निर्माता को अपनी स्वयं की राउंडिंग नीति लागू करने से पहले एक स्पष्ट स्केल रूपांतरण की आवश्यकता होती है, जिसे आमतौर पर 1,000 द्वारा विभाजित किया जाता है। ToolAcre पठन पथ केवल प्रदर्शन के लिए व्युत्क्रम गुणन करता है।

कोड समीक्षा में इकाई रूपांतरण को दृश्यमान रखें। `exp` में तेरह अंकों का मान एक उपयोगी चेतावनी संकेत है, लेकिन अंकों की गिनती सत्यापन नहीं है और निर्माता के अनुबंध को प्रतिस्थापित नहीं कर सकती है। डिकोडर किसी भी सीमित संख्यात्मक दावे को प्रस्तुत करने का प्रयास करेगा जिसे JavaScript दिनांक प्रस्तुत कर सकता है; यह चुपचाप मिलीसेकंड को सेकंड के रूप में पुनर्व्याख्या नहीं करता है।

ऍक्स्प, एनबीएफ और आईएटी - समाप्त होता है, पहले नहीं और जारी किया जाता है, और एक सत्यापनकर्ता प्रत्येक को कैसे लागू करता है

`exp` उस समय को बताता है जिसके बाद सत्यापनकर्ता को अपनी नीति के तहत टोकन स्वीकार नहीं करना चाहिए। `nbf` एक सीमा का नाम देता है जिसके पहले इसे स्वीकार नहीं किया जाना चाहिए। `iat` जारी करने का समय रिकॉर्ड करता है। ToolAcre इन अर्थों को लेबल करता है और आपूर्ति की गई संदर्भ घड़ी के साथ केवल `exp` और `nbf` की तुलना करता है।

लौटाई गई स्थिति `expired` है जब डिकोड की गई समाप्ति अब से पहले होती है, `future` जब पहले नहीं अब से बाद में होती है, और अन्य प्रदर्शित समय दावों के लिए `past` होती है। ये लेबल पेलोड अंकगणित के बारे में अवलोकन हैं। वे प्रमाणीकरण निर्णय नहीं हैं और जारीकर्ता, दर्शक, कुंजी या हस्ताक्षर का मूल्यांकन नहीं करते हैं।

घड़ी में अंतर और छूट सत्यापनकर्ता की होती है; यह डिकोडर न तो परिभाषित करता है

रूपरेखा में पूछा गया कि घड़ी का कितना तिरछा होना उचित है, लेकिन न तो JWT डिकोडर कॉन्फ़िगरेशन और न ही कार्यान्वयन किसी छूट को परिभाषित करता है। वह संख्या सत्यापनकर्ता और उसकी परिनियोजन आवश्यकताओं से संबंधित है। यहां एक डिफ़ॉल्ट का आविष्कार करने से एक निरीक्षण लेख अप्रलेखित सुरक्षा नीति में बदल जाएगा, इसलिए यह खंड जानबूझकर कुछ भी प्रदान नहीं करता है।

यदि कोई सेवा किCCमा के पास टोकन को अस्वीकार कर देती है, तो विश्वसनीय लॉग का उपयोग करके सेवा घड़ी, जारीकर्ता घड़ी और कॉन्फ़िगर सत्यापनकर्ता नीति की तुलना करें। ToolAcre बिना किसी सहनशीलता विंडो के ब्राउज़र की वर्तमान तिथि के विरुद्ध दावों का समाधान करता है। इसलिए इसका परिणाम उस सर्वर से भिन्न हो सकता है जो जानबूझकर छूट लागू करता है, भले ही दोनों एक ही संख्या को पार्स करते हों।

कार्यान्वित उदाहरण - एक नमूना ऍक्स्प मान को मानव-पठनीय समय में परिवर्तित करना और इसे आईएटी के विरुद्ध जांचना

मान लीजिए कि एक सिंथेटिक पेलोड में `iat: 1717243200` और `exp: 1717246800` हैं। 1,000 से गुणा करने पर ISO क्षण `2024-06-01T12:00:00.000Z` और `2024-06-01T13:00:00.000Z` मिलते हैं। कच्चे सेकंड मानों को घटाने पर गणना में ब्राउज़र मिलीसेकंड को मिलाए बिना एक घंटे का अंतराल प्राप्त होता है।

वह अंकगणित बताता है कि पेलोड क्या कहता है। यह नहीं दर्शाता है कि जारीकर्ता ने उन मूल्यों को चुना है या एक घंटा किसी भी आवेदन के लिए उपयुक्त है। ToolAcre संख्याओं को सुंदर रूप से प्रिंट करता है, UTC पंक्तियाँ उत्पन्न करता है और आज के सापेक्ष समाप्ति तिथि को पुराना कह सकता है; एक सत्यापनकर्ता को स्वतंत्र रूप से अपने स्वयं के स्वीकृति नियमों को प्रमाणित और लागू करना होगा।

इसमें क्या शामिल नहीं है - क्या कोई विशिष्ट सर्वर टोकन स्वीकार करेगा, जो उसकी घड़ी और छूट पर निर्भर करता है; डिकोडर मूल्य दिखाता है, निर्णय नहीं

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

इसके विपरीत, भविष्य की ओर देखने वाली समाप्ति एक असत्यापित टोकन को वैध नहीं बनाती है। समय सारणी को संभावित इकाई त्रुटियों का पता लगाने और डिबगिंग के लिए साक्ष्य इकट्ठा करने के तरीके के रूप में मानें। वास्तविक निर्णय सर्वर लॉग या अपेक्षित कुंजी और नीति के साथ नियंत्रित सत्यापन परीक्षण में होता है, डिकोड पैनल में कभी नहीं।

टेकअवे: दावे पढ़ें, अंकगणित करें - ToolAcre JWT डिकोडर exp, iat और nbf दिखाता है ताकि आप इकाइयों को स्वयं जांच सकें

दावे पढ़ें और जानबूझकर स्केल अंकगणित निष्पादित करें: संख्यात्मक दिनांक सेकंड केवल दिनांक सीमा पर JavaScript मिलीसेकंड बन जाते हैं। ToolAcre उस गुणन को स्रोत में स्पष्ट बनाता है और परिणामी ISO मान प्रदर्शित करता है, जबकि यह अनुमान लगाने के बजाय कि उनके लेखक क्या चाहते हैं, विकृत समय प्रकारों को अनदेखा करते हैं।

सुरक्षा भेद को समान रूप से स्पष्ट रखें. `exp` डिस्प्ले समाप्ति प्रवर्तन नहीं है, `nbf` डिस्प्ले प्रवेश नियंत्रण नहीं है, और `iat` जारी करने का प्रमाण नहीं है। थ्रोअवे टोकन का निरीक्षण करने के बाद, इसे प्रमाणित करने के लिए विश्वसनीय सत्यापनकर्ता का उपयोग करें और सेवा की वास्तविक घड़ी और दावा नीति लागू करें।