जैसा कि मैंने आपके प्रश्न को पढ़ा है, मैंने इंटरनेट पर खोज के लिए सफलता के बिना कोशिश की है कि कैसे बीयर के टोकन एन्क्रिप्ट या हस्ताक्षर किए गए हैं। मुझे लगता है कि वाहक टोकन हैशेड नहीं हैं (शायद आंशिक रूप से, लेकिन पूरी तरह से नहीं) क्योंकि उस स्थिति में, इसे डिक्रिप्ट करना और उपयोगकर्ताओं के गुणों को इससे पुनर्प्राप्त करना संभव नहीं होगा।
लेकिन आपका प्रश्न बियरर टोकन कार्यक्षमता पर उत्तर खोजने की कोशिश कर रहा है:
मान लीजिए मैं एक प्राधिकरण प्रदाता को लागू कर रहा हूं, क्या मैं वाहक टोकन के लिए किसी भी प्रकार की स्ट्रिंग की आपूर्ति कर सकता हूं? क्या यह एक यादृच्छिक स्ट्रिंग हो सकता है? क्या यह कुछ विशेषताओं के एक base64 एन्कोडिंग होना चाहिए? क्या इसे हैशेड किया जाना चाहिए?
इसलिए, मैं यह बताने की कोशिश करूंगा कि बीयर के टोकन और ताज़ा टोकन कैसे काम करते हैं:
जब उपयोगकर्ता एसएसएल के माध्यम से एक टोकन भेजने वाले उपयोगकर्ता और पासवर्ड के लिए सर्वर से अनुरोध करता है, तो सर्वर दो चीजें लौटाता है: एक एक्सेस टोकन और एक ताज़ा टोकन ।
एक एक्सेस टोकन एक बियरर टोकन है जिसे आपको कंक्रीट उपयोगकर्ता के रूप में प्रमाणित करने के लिए सभी अनुरोध हेडर में जोड़ना होगा।
Authorization: Bearer <access_token>
एक एक्सेस टोकन सभी उपयोगकर्ता गुणों, दावों और रोल्स के साथ एक एन्क्रिप्टेड स्ट्रिंग है जो आप चाहते हैं। (आप जाँच सकते हैं कि यदि आप अधिक भूमिकाएँ या दावे जोड़ते हैं तो टोकन का आकार बढ़ जाता है)। एक बार संसाधन सर्वर को एक पहुँच टोकन प्राप्त होता है, तो यह इसे डिक्रिप्ट करने और इन उपयोगकर्ता गुणों को पढ़ने में सक्षम होगा। इस तरह, उपयोगकर्ता को सभी आवेदन के साथ मान्य और प्रदान किया जाएगा।
एक्सेस टोकन की समय सीमा समाप्त हो जाती है (यानी 30 मिनट)। यदि पहुंच टोकन में एक लंबी समाप्ति थी, तो यह एक समस्या होगी, क्योंकि सैद्धांतिक रूप से इसे रद्द करने की कोई संभावना नहीं है। तो एक उपयोगकर्ता को एक भूमिका = "व्यवस्थापक" के साथ कल्पना करें जो "उपयोगकर्ता" में बदलता है। यदि कोई उपयोगकर्ता भूमिका के साथ पुराने टोकन को रखता है = "व्यवस्थापक" तो वह व्यवस्थापक अधिकारों के साथ टोकन समाप्ति तक पहुंच बना सकेगा। इसलिए एक्सेस टोकन की समय सीमा समाप्त हो गई है।
लेकिन, एक मुद्दा ध्यान में आता है। यदि किसी एक्सेस टोकन में समय सीमा समाप्त होती है, तो हमें उपयोगकर्ता और पासवर्ड को हर छोटी अवधि भेजना होगा। क्या यह सुरक्षित है? नहीं, यह नहीं है। हमें इससे बचना चाहिए। जब इस समस्या को हल करने के लिए ताज़ा टोकन दिखाई देते हैं।
ताज़ा टोकन डीबी में संग्रहीत किए जाते हैं और लंबे समय तक समाप्ति (उदाहरण: 1 महीने) होगी।
एक उपयोगकर्ता एक नए टोकन प्राप्त कर सकता है (जब यह समाप्त हो जाता है, उदाहरण के लिए हर 30 मिनट में) एक ताज़ा टोकन का उपयोग करके, जो उपयोगकर्ता को टोकन के लिए पहले अनुरोध में प्राप्त हुआ था। जब एक एक्सेस टोकन समाप्त हो जाता है, तो क्लाइंट को एक ताज़ा टोकन भेजना होगा। यदि यह ताज़ा टोकन DB में मौजूद है, तो सर्वर क्लाइंट को एक नया एक्सेस टोकन और दूसरा ताज़ा टोकन लौटाएगा (और नए द्वारा पुराने ताज़ा टोकन को बदल देगा)।
यदि उपयोगकर्ता पहुँच टोकन से समझौता कर लिया गया है, तो उस उपयोगकर्ता के ताज़ा टोकन को DB से हटा दिया जाना चाहिए। इस तरह से टोकन केवल तब तक मान्य रहेगा जब तक कि टोकन समाप्त नहीं हो जाता है क्योंकि जब हैकर ताज़ा टोकन भेजकर एक नया एक्सेस टोकन प्राप्त करने का प्रयास करता है, तो इस क्रिया से इनकार कर दिया जाएगा।