2011-10-16 11 views
18

मैं अपने आवेदन को सुरक्षित करने की कोशिश कर रहा हूं जो JSF2.0 का उपयोग करके बनाया गया है।कंटेनर प्रबंधित सुरक्षा से अपाचे शिरो, स्प्रिंग सिक्योरिटी जैसे विकल्पों में कब स्थानांतरित किया जाए?

मैं इस बारे में उलझन में हूं कि लोग शिरो, स्प्रिंग सिक्योरिटी या ओवास्प के एस्पाई जैसे सुरक्षा विकल्पों के साथ कंटेनर प्रबंधित सुरक्षा के पीछे जाने का विकल्प चुनते हैं। स्टैक ओवरफ़्लो पर related questions में से कुछ को देखते हुए, जहां मुझे एहसास हुआ कि कंटेनर आधारित सुरक्षा को जेएसएफ डेवलपर्स द्वारा अतीत में अधिक पसंद किया गया था। लेकिन अपाचे शिरो का उपयोग करने के लिए मुझे दृढ़ता से अनुशंसा की गई है। मैं सुरक्षा मुद्दों के मामले में नौसिखिया हूं और मुझे पता नहीं है कि & उनसे निपटने के लिए प्रासंगिक समस्याएं क्या हो सकती हैं। इसलिए मैं ऐसा कुछ ढूंढ रहा हूं जो अधिकांश सुरक्षा समस्याओं को अपनी डिफ़ॉल्ट सेटिंग्स/स्वयं के माध्यम से संभालता है।

मेरी आवेदन आवश्यकताओं के संदर्भ में, मेरे पास एक सामाजिक एप्लिकेशन है जहां विभिन्न भूमिकाओं वाले उपयोगकर्ताओं के पास पृष्ठों के विभिन्न सेट तक पहुंच है और वे उन भूमिकाओं के आधार पर उन पृष्ठों पर कार्यक्षमता के विभिन्न स्तरों का उपयोग कर सकते हैं।

उस मामले में आपको क्या लगता है कि मेरे साथ जाने के लिए एक अच्छा विकल्प हो सकता है?

मैं व्यक्तिगत रूप से शिरो का चयन करने के लिए आश्वस्त हूं क्योंकि इसका उपयोग करना आसान है और नौसिखिए के लिए अधिकांश चीजों का ख्याल रखता है।

+4

किसने इसकी दृढ़ता से अनुशंसा की और उन्होंने किन कारणों से क्या दिया? – EJP

+1

कारण थे: "शिरो के साथ सुरक्षा को कॉन्फ़िगर करना काफी आसान है, शिरो अपनी डिफ़ॉल्ट सेटिंग्स के माध्यम से अधिकांश मुद्दों का ख्याल रखता है, मौजूदा जावा सुरक्षा तंत्र जैसे जेएएएस बहुत भ्रमित आदि हैं और यह नौसिखियों जैसे अन्य लोगों के लिए उपयुक्त है मैं जो सुरक्षा मुद्दों के बारे में ज्यादा नहीं जानता " –

+2

अच्छा, तो यह सब सच मानते हुए, आपका प्रश्न वास्तव में क्या है? – EJP

उत्तर

4

मैं बिल्कुल अपाचे Shiro के बारे में कुछ भी नहीं पता को छोड़कर इस प्रकार है, लेकिन क्या आप उद्धृत व्यावहारिक रूप से शब्दशः उनके Web page, जो इस तरह के '[JAAS] आवश्यक स्थिर परिभाषाओं कि केवल प्रोग्रामर को बदल सकता है' के रूप में कई गलत बयान शामिल हैं से आता है, और 'जेएएएस वर्चुअल मशीन-स्तरीय चिंताओं से बहुत अधिक बंधे हुए हैं, और यह संकेत है कि जेएएएस उपयोगकर्ताओं और भूमिकाओं के बारे में नहीं है, जो कि केवल झूठा है। मैं कंटेनर प्रबंधित सुरक्षा से दूर जाने के लिए बहुत दृढ़ विश्वास चाहता हूं। यह सर्वलेट विशिष्टता का हिस्सा है, इसलिए इसे किसी भी कंटेनर द्वारा समर्थित किया जाना चाहिए; यह अच्छी तरह से समझा जाता है; यह किसी तीसरे पक्ष के साथ जेडीके कक्षाओं द्वारा समर्थित है; ... और यह मेरे लिए काम करता है ;-)

+2

लेकिन * मैंने जो सुना है, * कंटेनर प्रबंधित सुरक्षा में ऐसी सभी चीज़ें शामिल नहीं हैं जो सुरक्षा के लिए वेब ऐप की मांग को पूरा कर सकें और यह कॉन्फ़िगर करने के लिए नौसिखियों (वेब ​​सुरक्षा डोमेन में) के लिए बहुत आसान नहीं है? मुझे लगता है कि ये वही सीमाएं/नुकसान हैं !? –

+1

@ मार्कोस, यह सही है, आप अनुमान लगा रहे हैं। मैं आपकी वास्तविक आवश्यकताओं को परिभाषित करके शुरू करूंगा और फिर देख सकता हूं कि कौन से सिस्टम उनका समर्थन कर सकते हैं। फिलहाल आप विज्ञापन दोहरा रहे हैं। – EJP

+0

हो सकता है .. लेकिन मैं विशेष रूप से कुछ भी शुरू करने से पहले इस बारे में विशेषज्ञों की राय सुनना चाहता था। –

17

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

  • एक आवेदन सर्वर पर एकल साइन, loginmodules में बनाया गया, आदि जैसे, JAAS के शीर्ष पर कुछ सेवाएं प्रदान करने, तो कभी कभी जब अनुमति के विवरण का स्तर एक आवश्यकता है, तो आप JAAS के लिए जाना चाहिए नहीं है के लिए सामान्य है।

  • पिछली बार मैंने Shiro जाँच भी समर्थित नहीं किया आपसी ssl प्रमाणीकरण (डिजिटल प्रमाणपत्र का उपयोग करते हुए), लेकिन आप शायद उस का उपयोग नहीं किया जाएगा ...

  • आप Shiro का उपयोग करते हैं अपने अनुप्रयोग शायद हो जाएगा एप्लिकेशन सर्वर/सर्वलेट कंटेनर (ओह, विडंबना!) के बीच अधिक पोर्टेबल, क्योंकि जावाईई सुरक्षा कॉन्फ़िगरेशन अधिकांश गैर-तुच्छ सेटअप के लिए विक्रेता विशिष्ट होता है।

सभी सब में

, आवश्यकताओं आपके द्वारा निर्दिष्ट के आधार पर:

  • एक AppServer (ग्लासफिश, JBoss) का उपयोग करना: JAAS (ootb authc/authz, निर्मित loginmodules)
  • का उपयोग करना एक सर्वलेट कंटेनर (जेटी/बिलाव): Shiro (सेटअप और उपयोग करने के लिए आसान)

आशा है कि यह मदद करता है :)

1

मैंने फैसला किया है कि स्प्रिंगसेक्चर (एसएस) हमारे प्रमाणीकरण और प्राधिकरण ढांचे के लिए जा रहा है। मुख्य रूप से क्योंकि एसएस ओपनआईडी और ओथ करता है। हालांकि इसे अनुमति देना होगा हालांकि अनुमति/समूह/उपयोगकर्ता/इकाई प्रणाली के लिए काफी कुछ है। मैं 'EntityManager/Entity' स्तर, सेवा स्तर, और वेब/एपीआई स्तर पर प्राधिकरण करने की योजना बना रहा हूं। "दरवाजा बंद करो, लेकिन अपने गहने को पीछे के कमरे में 3 टन सुरक्षित में रखें" आखिरी आधे शिरो बहुत बेहतर हैंडल करते हैं। लेकिन मैं शिरो में openid4j/openauth4j को एकीकृत करने की कोशिश करने में सहज नहीं हूं।

किसी भी हस्तक्षेप या कोड ब्लोट के बिना दोनों की सुविधाओं को चुनना और चुनना वाकई अच्छा होगा। यह सबसे अच्छा विकल्प है।

पीएस, स्प्रिंग प्लेट पर कई अन्य चीजें लाता है, जेएसएफ के साथ एकीकरण की तरह, इसलिए इसमें बहुत अपील है।

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