2012-05-16 18 views
6

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

उदाहरण:

Users संसाधन के लिए वहाँ है एक UserWS और एक UserService। व्यवस्थापक उपयोगकर्ताओं को बना/अपडेट/हटा सकते हैं और उपयोगकर्ता अन्य उपयोगकर्ताओं के बारे में पढ़ सकते हैं।
UserWS मानना ​​%root%/users है ROLE_USER प्राधिकरण के साथ उस यूआरएल के लिए intercept-url परिभाषित करेगा जो केवल कहता है कि आपको वहां पहुंचने के लिए एक उपयोगकर्ता होना है, लेकिन सेवा परत स्वयं प्रासंगिक विधियों के लिए विशिष्ट प्राधिकरण निर्दिष्ट करेगी।

अन्य विकल्प हैं:

  • प्लेस दोनों सेवाओं और WS-
    समर्थक आप जितनी जल्दी हो सके घुसपैठियों के रूप में बाहर फ़िल्टर कर देंगे पर एक ही प्राधिकरण आवश्यकताओं (और उदाहरण के लिए बचाने के लिए मापदंडों आप वसंत MVC उपयोग कर रहे हैं)
    कांग्रेस विन्यास के दोहराव के रूपांतरण एक रखरखाव मुद्दा है और त्रुटियों की संभावना => सुरक्षा समस्या

  • प्लेस authorizati है WS
    कांग्रेस से आ रही सेवा परत विभिन्न संदर्भों से इस्तेमाल किया जा सकता है यदि WS- पर आवश्यकताओं पर
    समर्थक जितनी जल्दी हो सके फ़िल्टर केवल सेवा-
    पर

  • प्लेट प्राधिकरण आवश्यकताओं प्रो- कोई दोहराव
    अनुमति देने के कांग्रेस उपरि "साफ" अयोग्य अनुरोध सेवा परत

वास्तव में विकल्पों के बारे में किसी भी राय जानना चाहेंगे करने के लिए आने के लिए

उत्तर

5

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

0

यदि आपके पास समय है, तो मैं केवल दोनों ही कहूंगा, केवल सेवा परत ही नहीं।

प्रस्तुति और सेवाओं को सुरक्षित करना हमेशा अच्छा होता है क्योंकि यदि आपने कभी प्रस्तुति के अलावा किसी और चीज को अपनी सेवाओं का खुलासा किया है (उदाहरण के लिए आप एक वेब सेवा का पर्दाफाश करते हैं), तो आपकी सुरक्षा आपकी जगह होगी और पहले से ही हो जाएगी।

अगर किसी को आपकी प्रस्तुति परत को बाईपास करने का कोई तरीका मिल जाए (कहें कि आपके पास टियर और आपकी सेवाएं रिमोट मशीन पर चलती हैं), तो आपके पास अभी भी आपकी सुरक्षा होगी।

+0

आपके उत्तर के लिए धन्यवाद, लेकिन जैसा कि मैंने कहा, अगर मेरे पास दोनों पर समान अधिकार हैं तो यह दोहराव है और त्रुटियों (इसलिए सुरक्षा देयता) के लिए प्रवण है। मान लीजिए कि मैं सेवा परत को एनोटेट करता हूं, आपको क्या लगता है कि मुझे डब्ल्यूएस पर रखना चाहिए और क्यों? धन्यवाद – Ittai

+0

आईएमएचओ आपको सिर्फ एक ही सेवा की आवश्यकता है जिसमें तर्क है और उस सेवा के लिए यूआई प्रतिनिधि और डब्ल्यूएस प्रतिनिधि है। इस तरह आपको केवल ठोस सेवा को एनोटेट करने की आवश्यकता है। आम तौर पर, यदि आप डुप्लिकेशंस नहीं चाहते हैं तो आपको वास्तविक तर्क रखने वाले घटक को सुरक्षित करना होगा। – Simeon