मैं एक RESTful API का निर्माण कर रहा हूं जो उपयोगकर्ता प्रमाणीकरण के लिए JWT टोकन का उपयोग करता है (एक login
समापन बिंदु द्वारा जारी किया गया है और बाद में सभी हेडर में भेजा गया है), और टोकन को एक निश्चित समय के बाद ताज़ा किया जाना चाहिए (एक renew
समापन बिंदु, जो एक नवीनीकृत टोकन लौटाता है )।
यह संभव है कि टोकन समाप्त होने से पहले उपयोगकर्ता का एपीआई सत्र अमान्य हो जाता है, इसलिए मेरे सभी समापन बिंदु यह जांचने से शुरू होते हैं कि: 1) टोकन अभी भी वैध है और 2) उपयोगकर्ता का सत्र अभी भी वैध है। टोकन को सीधे अमान्य करने का कोई तरीका नहीं है, क्योंकि ग्राहक इसे स्थानीय रूप से संग्रहीत करते हैं।
इसलिए मेरे सभी समापन बिंदुओं को दो संभावित परिस्थितियों के अपने ग्राहकों को संकेत देना है: 1) यह टोकन या 2 को नवीनीकृत करने का समय है) कि सत्र अमान्य हो गया है, और उन्हें अब सिस्टम तक पहुंचने की अनुमति नहीं है। मैं अपने समापन बिंदु के लिए अपने ग्राहकों को संकेत देने के लिए दो विकल्पों के बारे में सोच सकता हूं, जब दो स्थितियों में से एक होता है (मान लें कि ग्राहकों को या तो विकल्प के रूप में अनुकूलित किया जा सकता है):
- एक HTTP 401 कोड (अनधिकृत) लौटाएं यदि सत्र अमान्य हो गया है या टोकन समाप्त हो जाने पर 412 कोड (पूर्ववर्ती विफल) वापस कर दिया है और यह
renew
समापन बिंदु कॉल करने का समय है , जो 200 (ओके) कोड लौटाएगा। - 401 को यह संकेत देने के लिए लौटें कि या तो सत्र अमान्य है या टोकन समाप्त हो गया है। इस स्थिति में क्लाइंट तुरंत
renew
समापन बिंदु को कॉल करेगा , यदि यह 200 पर लौटाता है तो टोकन रीफ्रेश हो जाता है, लेकिन अगरrenew
यह 401 भी वापस आता है तो इसका मतलब है कि क्लाइंट सिस्टम से बाहर है।
आप इन दोनों विकल्पों में से कौन सा विकल्प सुझाएंगे? कौन सा अधिक मानक होगा, समझने में सरल होगा, और / या अधिक प्रतिष्ठित? या आप पूरी तरह से एक अलग दृष्टिकोण की सिफारिश करेंगे? क्या आपको किसी भी विकल्प के साथ कोई स्पष्ट समस्या या सुरक्षा जोखिम दिखाई देता है? यदि आपके उत्तर में बाहरी संदर्भ शामिल हैं जो आपकी राय का समर्थन करते हैं तो अतिरिक्त बिंदु।
अपडेट करें
दोस्तों, कृपया वास्तविक प्रश्न पर ध्यान दें - नवीनीकरण / सत्र अमान्य को संकेत देने के लिए दो http कोड विकल्पों में से कौन सा सबसे अच्छा है? इस तथ्य पर ध्यान न दें कि मेरा सिस्टम JWT और सर्वर-साइड सत्रों का उपयोग करता है , यह बहुत विशिष्ट व्यावसायिक नियमों के लिए मेरे एपीआई की ख़ासियत है, और उस भाग के लिए नहीं जिसकी मैं मदद मांग रहा हूं;)