मैंने अभी यह लेख पढ़ा है जो कुछ साल पुराना है लेकिन आपके REST API को सुरक्षित करने के एक चतुर तरीके का वर्णन करता है। अनिवार्य रूप से:
- प्रत्येक ग्राहक के पास एक विशिष्ट सार्वजनिक / निजी कुंजी जोड़ी होती है
- केवल क्लाइंट और सर्वर निजी कुंजी जानते हैं; यह तार के ऊपर कभी नहीं भेजा जाता है
- प्रत्येक अनुरोध के साथ, ग्राहक कई इनपुट (संपूर्ण अनुरोध स्वयं, वर्तमान टाइमस्टैम्प और निजी कुंजी) लेता है और अनुरोध के एक हैश का उत्पादन करने के लिए उन्हें HMAC फ़ंक्शन के माध्यम से चलाता है।
- क्लाइंट तब सामान्य अनुरोध (जिसमें सार्वजनिक कुंजी होती है) और सर्वर को हैश भेजता है
- सर्वर क्लाइंट की निजी कुंजी (प्रदान की गई सार्वजनिक कुंजी के आधार पर) को देखता है और कुछ टाइमस्टैम्प चेक (जो कि मुझे समझ में नहीं आता है) करता है जो अनुरोध को सत्यापित करता है, रिप्ले हमले का शिकार नहीं होता है
- यदि सब कुछ ठीक है, तो सर्वर अनुरोध की अपनी हैश उत्पन्न करने के लिए निजी कुंजी और उसी HMAC फ़ंक्शन का उपयोग करता है
- सर्वर तब दोनों हैश की तुलना करता है (क्लाइंट द्वारा भेजे गए एक के साथ-साथ यह उत्पन्न होता है); यदि वे मेल खाते हैं, तो अनुरोध प्रमाणित होता है और आगे बढ़ने की अनुमति दी जाती है
मैं तब JWT से टकरा गया , जो बहुत समान लगता है। हालाँकि, पहले लेख में JWT का जिक्र नहीं है, और इसलिए मैं सोच रहा हूँ कि क्या JWT उपरोक्त मौखिक समाधान से अलग है, और यदि ऐसा है, तो कैसे।