JWT ऑथेंटिकेशन और ऑथराइजेशन के साथ स्प्रिंग बूट को कैसे सुरक्षित करें

May 08 2023
नमस्कार शिक्षार्थियों, यहाँ हम स्प्रिंग बूट3.0 और JWT के साथ स्प्रिंग सुरक्षा कार्यान्वयन के बारे में जानने जा रहे हैं।

नमस्कार शिक्षार्थियों, यहाँ हम स्प्रिंग बूट3.0 और JWT के साथ स्प्रिंग सुरक्षा कार्यान्वयन के बारे में जानने जा रहे हैं। यह वसंत सुरक्षा भाग 1 के साथ जारी है: लिंक वहां हमने वसंत सुरक्षा भूमिका आधारित कार्यान्वयन के बारे में चर्चा की, इसमें हम JWT को लागू करने के तरीके पर चर्चा करेंगे।

JWT (JSON वेब टोकन) दो पक्षों के बीच सुरक्षित रूप से दावों का प्रतिनिधित्व करने के लिए एक मानक है। यह दो पक्षों के बीच स्थानांतरित किए जाने वाले दावों का प्रतिनिधित्व करने का एक कॉम्पैक्ट, URL-सुरक्षित साधन है। JWT में तीन भाग होते हैं: हेडर, पेलोड और सिग्नेचर।

हैडर में एल्गोरिदम और टोकन प्रकार शामिल हैं, पेलोड में विषय, नाम, जारी की गई तारीख शामिल है, सत्यापित हस्ताक्षर एन्कोडेड हेडर, पेलोड और गुप्त कुंजी का संयोजन है। JWT टोकन इन तीनों का संयोजन है

स्प्रिंग सिक्योरिटी को JWT के साथ एकीकृत किया जा सकता है ताकि JWTs को जनरेट, पार्स और वेरिफाई करके वेब एप्लिकेशन को सुरक्षित किया जा सके।

जेडब्ल्यूटी के साथ प्रमाणित और अधिकृत करने के लिए प्रवाह

JWT प्रमाणीकरण और प्राधिकरण स्प्रिंग बूट में कैसे काम करता है, इसका अवलोकन निम्नलिखित है :

  1. उपयोगकर्ता प्रमाणीकरण: जब कोई उपयोगकर्ता सिस्टम में लॉग इन करता है, तो सर्वर उपयोगकर्ता की साख, जैसे कि उनके उपयोगकर्ता नाम और पासवर्ड की पुष्टि करता है। यदि क्रेडेंशियल्स सही हैं, तो सर्वर उपयोगकर्ता के लिए JWT उत्पन्न करता है और इसे क्लाइंट को लौटाता है।
  2. JWT निर्माण: सर्वर उपयोगकर्ता की पहचान की जानकारी और अन्य आवश्यक डेटा, जैसे समाप्ति समय, को JSON ऑब्जेक्ट में एन्कोड करके JWT बनाता है। JSON ऑब्जेक्ट को तब एक गुप्त कुंजी या सार्वजनिक/निजी कुंजी जोड़ी का उपयोग करके हस्ताक्षरित किया जाता है।
  3. टोकन स्टोरेज: क्लाइंट JWT को स्थानीय रूप से स्टोर करता है, आमतौर पर कुकी या स्थानीय स्टोरेज में।
  4. प्राधिकरण: प्रत्येक बाद के अनुरोध के लिए, ग्राहक JWT को अनुरोध शीर्षलेख में भेजता है। सर्वर JWT के हस्ताक्षर की पुष्टि करता है और उपयोगकर्ता की पहचान की जानकारी और अन्य विवरण निकालने के लिए इसकी सामग्री को डिकोड करता है। इस जानकारी के आधार पर, सर्वर तब उपयोगकर्ता को कुछ संसाधनों तक पहुँचने या कुछ क्रियाएं करने के लिए अधिकृत कर सकता है।
  5. टोकन सत्यापन: सर्वर यह सुनिश्चित करने के लिए JWT को भी मान्य कर सकता है कि इसके साथ छेड़छाड़ नहीं की गई है और इसकी समय सीमा समाप्त नहीं हुई है। यदि टोकन अमान्य है, तो सर्वर अनुरोध को अस्वीकार कर सकता है या उपयोगकर्ता को फिर से लॉग इन करने का अनुरोध कर सकता है।

चरण 1: जेडब्ल्यूटी निर्भरताओं को जोड़ें

चरण 2: JWT को प्रमाणित करने और उत्पन्न करने के लिए एक समापन बिंदु बनाएँ

समापन बिंदु प्रमाणित करने और टोकन उत्पन्न करने के लिए

क्रिएट टोकन विधि में, हम दावे, विषय, जारी और समाप्ति तिथि, हस्ताक्षर सेट करके टोकन बना रहे हैं।

चरण 3: JWT को मान्य करने के लिए एक फ़िल्टर बनाएँ

फ़िल्टर के लिए एक वर्ग बनाएँ और एक बारPerRequestFilter के साथ विस्तारित करें, doFilterInternal विधि को ओवरराइड करें और हेडर से प्राधिकरण टोकन का आह्वान करें। टोकन से उपयोगकर्ता नाम और समाप्ति तिथि निकालकर टोकन को मान्य करें। इस फाइलर का उपयोग प्रत्येक एपीआई कॉल के लिए जेडब्ल्यूटी टोकन को मान्य करने के लिए किया जाता है।

चरण 4: एपीआई कॉल को अधिकृत करने के लिए कॉन्फ़िगरेशन जोड़ें

एक वर्ग बनाएँ और अधिकृत करने के लिए एक विधि जोड़ें, ऊपर दिए गए कोड में "/उत्पादों/नए","/उत्पादों/प्रमाणित" समापन बिंदुओं तक पहुँच प्रदान की गई है, "/उत्पादों/**" समापन बिंदु के लिए केवल मान्य JWT वाले प्रमाणित उपयोगकर्ता ही कर सकते हैं पहुँच।

कार्यान्वयन का परीक्षण

प्रमाणीकरण और टोकन उत्पन्न करना

/ प्रमाणित समापन बिंदु

जनरेट किए गए टोकन को कॉपी करें और इसे अन्य एपीआई कॉल में जोड़ें, मैं नीचे दिए गए एपीआई को एडमिन क्रेडेंशियल्स के साथ एक्सेस कर रहा हूं

अगर हम एडमिन क्रेडेंशियल्स के साथ एपीआई को एक्सेस करने की कोशिश करते हैं, जहां केवल यूजर ही एक्सेस कर सकता है, तो उसे 403 फॉरबिडन एरर मिलेगा

नोट: यदि आप इस कार्यान्वयन के कार्यशील जीथब कोड चाहते हैं तो कृपया मुझे फॉलो करें और अपनी ईमेल आईडी पर टिप्पणी करें। मैं आपके ईमेल पर सोर्स कोड लिंक भेजूंगा।

भाग 1: स्प्रिंग बूट के साथ स्प्रिंग सिक्योरिटी रोल आधारित एक्सेस

अन्य स्प्रिंग बूट अवधारणाओं के लिए लिंक देखें:

स्प्रिंग एओपी ट्यूटोरियल

स्प्रिंग बूट लॉगिंग ट्यूटोरियल

स्प्रिंग बूट में केंद्रीकृत विन्यास

सबसे अधिक इस्तेमाल किया जाने वाला हाइबरनेट एनोटेशन

साक्षात्कार के लिए महत्वपूर्ण माइक्रोसर्विसेज डिज़ाइन पैटर्न