2010-06-29 16 views
9

मुझे उत्सुकता है कि मुझे याद रखें कि कैसे काम करता है और यह वसंत सुरक्षा में कैसे काम करता है?मुझे स्प्रिंग सुरक्षा में कैसे याद रखें?

मैं समझता हूं कि सर्वर क्लाइंट को दीर्घकालिक कुकीज़ भेजता है। और फिर क्लाइंट कुकी वापस भेजता है और सर्वर क्लाइंट को पहचान सकता है क्योंकि कनेक्शन cookie --> session के साथ सर्वर पर हैश-मैप जैसा कुछ है।

मुझे समझ में नहीं आता कि सर्वर [सर्वर-साइड एप्लिकेशन] सर्वर के बाद कुकी द्वारा क्लाइंट द्वारा पहचान कैसे करता है [टोमकैट] को पुनरारंभ किया गया है।

सर्वर शट डाउन से पहले cookie-session मानचित्र कैसे वसंत सुरक्षा बचाता है? क्या यह सर्वर-विशिष्ट है (यानी टोमकैट, जेट्टी आदि में कुछ अलग हुआ है)?

पीएस वसंत सुरक्षा और पुनर्वितरण के साथ एक और संबंधित समस्या: यहां तक ​​कि यदि मैं RememberMe पर टिक नहीं लगाता हूं और लॉग इन करता हूं, तो मुझे अभी भी लगभग 3 मिनट के लिए पुनर्वितरण के बाद मान्यता प्राप्त है। क्या यह ठीक है?

उत्तर

9

The Spring Security docs discuss यह वास्तव में कैसे काम करता है।

यह दृष्टिकोण एक उपयोगी याद-मेरी रणनीति प्राप्त करने के लिए हैशिंग का उपयोग करता है। संक्षेप में एक कुकी सफल इंटरैक्टिव प्रमाणीकरण पर ब्राउज़र को भेजा जाता है, कुकी के साथ बना जा रहा है इस प्रकार है:

base64(username + ":" + expirationTime + ":" + md5Hex(username + ":" + expirationTime + ":" password + ":" + key))

...

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

असल में कुकी में उपयोगकर्ता नाम, पासवर्ड, समाप्ति समय और एक कुंजी (जिसे आप निर्दिष्ट करते हैं), जिनमें से सभी hashed एक साथ हैं। आपके ब्राउज़र सर्वर से इस कुकी की सामग्री को भेजता है, तो वसंत सुरक्षा:

  1. दिए गए उपयोगकर्ता नाम के लिए बैकएंड से पासवर्ड पुन: प्राप्त करता
  2. उपयोगकर्ता नाम/पासवर्ड/आदि की md5Hex() गणना करता है डेटाबेस से और तुलना यह कुकी
  3. में मान के लिए यदि वे मेल खाते हैं - आप लॉग इन हैं! यदि कोई मैच नहीं है, तो आपने जाली कुकी प्रदान की है या उपयोगकर्ता नाम/पासवर्ड/कुंजी में से एक बदल गया है।

यहाँ अंतर्निहित धारणा है कि हैश समारोह है - md5Hex() हिस्सा ऊपर - आसानी से एक ही दिशा में डेटा के कुछ टुकड़े एन्कोड करने के लिए एक तरीका प्रदान करता अभी तक md5Hex से पासवर्ड ठीक करने के लिए अविश्वसनीय रूप से मुश्किल और अव्यावहारिक उल्टा करने के लिए (है पाठ)।

8

'मुझे याद रखें कुकीज़ के साथ सत्र कुकीज़ को भ्रमित न करें।

सत्र कुकी सर्वर (जैसे टोमकैट) द्वारा भेजी जाती है और सत्र के साथ आने वाले अनुरोध को संबद्ध करने के लिए उपयोग की जाती है।

मुझे याद रखें कि कुकी को विभिन्न सत्रों में क्लाइंट को प्रमाणीकृत करने के लिए वसंत सुरक्षा द्वारा भेजा जाता है (उदा।मूल सत्र की समाप्ति के बाद या सर्वर पुनरारंभ करने के बाद)।

एक उपयोगकर्ता को प्रमाणित करने के लिए से याद मेरे कुकी स्प्रिंग सुरक्षा 2 रणनीति प्रदान करता है:

  • TokenBasedRememberMeServices - डिफ़ॉल्ट रूप से उपयोग, कम सुरक्षित - कुकी पासवर्ड के हैश और अन्य डेटा
  • PersistentTokenBasedRememberMeServices शामिल हैं - अधिक सुरक्षित , डेटाबेस पहुंच की आवश्यकता है - कुकी containt डेटाबेस में संग्रहीत एक अद्वितीय पहचानकर्ता
संबंधित मुद्दे