2012-10-23 13 views
5

का उपयोग कर एकाधिक जेवीएम आधारित अनुप्रयोगों में एकल साइन को कैसे कार्यान्वित किया जाए, मैं वर्तमान में एक ही सर्वलेट कंटेनर में तैनात सभी जेवीएम आधारित (Grails, Servlets) वेब अनुप्रयोगों में समाधान पर एक ही संकेत लागू करने की कोशिश कर रहा हूं (वर्तमान में टोमकैट , लेकिन मेरे समाधान को सिर्फ टॉमकैट तक सीमित नहीं करना चाहते हैं)। सभी वेब अनुप्रयोग एक सामान्य डेटाबेस साझा करते हैं।स्प्रिंग सिक्योरिटी

मैंने सिंगल साइन ऑन को संभालने के लिए एक नई वेब सेवा बनाने के लिए सीएएस या अन्य तृतीय पक्ष पुस्तकालयों का उपयोग करने से विभिन्न विकल्पों को देखा है, लेकिन कोई भी वास्तव में व्यवसाय को संतुष्ट नहीं करता है। मेरे वर्तमान कार्यान्वयन में एक नई जार लाइब्रेरी बनाना शामिल है जिसमें AuthenticationProviders का सामान्य कार्यान्वयन है, और Pre-Authentication Filters वसंत सुरक्षा के आधार पर है।

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

यह सुनिश्चित करने से पहले कि मैं एक बड़ी सुरक्षा समस्या नहीं बना रहा हूं, और मैं यह जानना चाहूंगा कि टोकन बनाने के लिए मुझे क्या करना होगा? इस बिंदु पर एक साधारण GUID पर्याप्त लग रहा है?

वर्तमान में हम वसंत सुरक्षा 3.0.x पर काम कर रहे हैं, और अभी तक 3.1 तक अपग्रेड नहीं किए गए हैं।

अग्रिम धन्यवाद।

+2

मैं गाइड को पर्याप्त सत्र आईडी होने के लिए हाँ कहूंगा। सुरक्षा मुद्दों के रूप में आपकी चिंताओं क्या हैं? –

+0

मेरी चिंताओं का कोई आम हमला होगा, उदाहरण के लिए सत्र स्पूफिंग, कि मैं इसे संभालने में सक्षम नहीं हो सकता। सत्र स्पूफिंग मामले में कुकी को उपयोगकर्ता की मशीन से दूसरे में कॉपी करके किया जा सकता है, लेकिन मुझे लगता है कि टाइमआउट समय को उचित स्तर पर सेट करके इस हमले को कम किया जा रहा है। –

+0

वेब ऐप सुरक्षा त्रुटियों के लिए एक अच्छा स्रोत https://www.owasp.org/index.php/Main_Page –

उत्तर

2

को देखने के लिए चाहते हो सकता है मैं कर रहा द्वारा इस समस्या को हल समाप्त हो गया है:

मैं एक AuthenticationSuccessHandler जो उपयोगकर्ता के सत्र के रूप में पहचान की जानकारी दी थी करने के लिए कुकी जोड़ना होगा बनाया मेजबाननाम जितना संभव हो सके इसे सुरक्षित करने का प्रयास करें। (एप्लिकेशन यहां सबसे अधिक ग्राहक साइटों पर चल रहा था, इसलिए यहां जोखिम कम से कम निर्धारित किए गए थे, लेकिन कुकी जैकिंग के बारे में सावधान रहें।)

फिर एसएसओ रखने के लिए आवश्यक प्रत्येक एप्लिकेशन पर मैंने AbstractPreAuthenticatedProcessingFilter लागू किया, और पहले प्रमाणीकरण फ़िल्टर जो कुकी को खींच देगा और प्रमाणीकरण ऑब्जेक्ट बनाएगा। आखिरकार मैंने AuthenticationProvider बनाया जो कुकी से जानकारी को सत्यापित करता था।

उम्मीद है कि इस प्रकार के अनुरोध के लिए भविष्य में किसी और की सहायता करें।

2

Spring Security Extensions वेबसाइट पर केर्बेरॉस, ओएथ और एसएएमएल के लिए उपलब्ध एक्सटेंशन उपलब्ध हैं। यहां ब्लॉग एंट्री है जो एक उदाहरण प्रदान करता है: SpringSource Blog

यदि आप अपने एसएसओ प्रदाता के रूप में एनटीएलएम का उपयोग कर रहे हैं, तो jespa-spring प्रोजेक्ट पर एक नज़र डालें।

या आप Java Open Single Sign-On Project

+0

यह मेरी आवश्यकता को पूरा नहीं करता है क्योंकि इसमें प्राधिकरण होने के लिए अतिरिक्त सर्वर स्थापित करना शामिल है। मेरे पास कई एप्लिकेशन हैं जिन्हें मैं प्रमाणीकरण साझा करना चाहता हूं, लेकिन मेरे आवेदन के बाहर किसी भी अतिरिक्त सर्वर की आवश्यकता नहीं है। –

संबंधित मुद्दे