2013-10-06 9 views
7

मैं ([उपयोगकर्ता < -> भूमिका < -> दाएं] के आधार पर एक कस्टम प्राधिकरण को लागू करने जा रहा हूं) मॉडल और अधिकारों की तुलना नियंत्रक और विधि नाम से की जानी चाहिए (उदाहरण के लिए "नियंत्रक | विधि")।वसंत सुरक्षा, अनुकूलन प्राधिकरण, AccessDecisionManager बनाम सुरक्षा फ़िल्टर

मैं अनुरूपण UserDetails और AuthenticationProvider इस्तेमाल किया दी प्राधिकारी (here) को समायोजित करने के लिए, लेकिन के रूप में कैसे अनुकूलित कर प्राधिकरण की तुलना के बारे में जाँच की स्रोत कोड और डॉक्स मैंने पाया एक फिल्टर SecurityContextHolderAwareRequestWrapper) कि isGranted और isUserInRole लागू करता अधिकार तुलना करने के लिए नहीं है, जबकि दस्तावेज़ों को AccessDecisionManager मतदाताओं को अनुकूलित करने के लिए कहते हैं (जैसा कि मैंने समझा)। किसका इस्तेमाल किया जाना चाहिए? जहां मेरे पास अधिकारियों की तुलना करने के लिए नियंत्रक और विधि (क्रिया) नाम है?

मुझे स्प्रिंग सुरक्षा के बारे में उलझन में मिला। क्या आधिकारिक दस्तावेज़ों से कोई अन्य संसाधन है जो बताता है कि यह कैसे काम करता है, मेरा मतलब है क्रियाओं और विधियों का अनुक्रम और उन्हें कैसे अनुकूलित करें।

उत्तर

9

कई दृष्टिकोण हैं: जहाँ आप एक भूमिका प्रत्येक उपयोगकर्ता को निर्दिष्ट और

  • आगे बढ़ने से वसंत सुरक्षा अभिव्यक्तियों का उपयोग करके
  • भी एक नया वसंत एसीएल घटक नहीं है इससे पहले कि भूमिका की जांच

    1. भूमिका आधारित है, जो आपको कक्षा स्तर पर एसीएल नियंत्रण करने देता है और डेटाबेस में संग्रहीत किया जाता है। मेरा निजी उपयोग अब तक 1 और 2 रहा है, जहां आप केवल उपयोगकर्ताओं को भूमिका निभाते हैं। लेकिन विकल्प 3 जब सुरक्षा मॉडल chaning अपने webapp के पुनर्निर्माण के लिए बिना, आप महीन कणों का सुरक्षा मॉडल बनाने की अनुमति देता

    भूमिका के आधार

    एक भूमिका आधारित सुरक्षा तंत्र UserDetailsService इंटरफेस को लागू करने महसूस किया जा सकता और इस वर्ग का उपयोग करने के लिए वसंत सुरक्षा को विन्यस्त करना।

    कैसे इस तरह के एक परियोजना के लिए महसूस किया जा सकता पर जानने के लिए, एक नज़र निम्नलिखित ट्यूटोरियल पर ले: के साथ स्मृति उपयोगकर्ता डेटाबेस में कस्टम userdetails सेवा Link साथ Link

  • फार्म आधारित प्रवेश

    • फार्म आधारित प्रवेश

        0:

    कम वसंत सुरक्षा में पर्दे के पीछे निम्न प्रदर्शन

  • प्रमाणीकरण पर (उदा। एक लॉगिन फॉर्म जमा करना) एक प्रमाणीकरण ऑब्जेक्ट बनाया गया है जिसमें लॉगिन प्रमाण-पत्र हैं। उदाहरण के लिए UsernamePasswordAuthenticationFilterUsernamePasswordAuthenticationToken
  • प्रमाणीकरण ऑब्जेक्ट को AuthenticationManager पर पास किया गया है, जिसे प्रमाणीकरण प्रक्रिया में नियंत्रक के रूप में माना जा सकता है। डिफ़ॉल्ट कार्यान्वयन ProviderManager
  • प्रमाणीकरण प्रबंधक AuthenticationProvider के माध्यम से प्रमाणीकरण करता है। उपयोग किया जाने वाला डिफ़ॉल्ट कार्यान्वयन DaoAuthenticationProvider है।
  • दाओ प्रमाणीकरणप्रदाता UserDetails को UserDetailsService से पुनर्प्राप्त करके प्रमाणीकरण करता है।उपयोगकर्ता विवरण को डेटा ऑब्जेक्ट के रूप में सोचा जा सकता है जिसमें उपयोगकर्ता प्रमाण-पत्र शामिल हैं, लेकिन उपयोगकर्ता की प्राधिकरण/भूमिकाएं भी शामिल हैं! DaoAuthenticationProvider अपने loadUserByUsername विधि के माध्यम से प्रमाण-पत्र पुनर्प्राप्त करता है और उसके बाद इसे आपूर्ति किए गए उपयोगकर्ता नाम पासवर्डशब्द प्रमाणीकरण टोकन से तुलना करता है।
  • उपयोगकर्ताDetailsService उपयोगकर्ता प्रमाण-पत्र, प्राधिकरण एकत्र करता है और इसके बारे में उपयोगकर्ता विवरण वस्तु बनाता है। उदाहरण के लिए आप डेटाबेस से पासवर्ड हैश और अधिकारियों को पुनर्प्राप्त कर सकते हैं। वेबसाइट यूआरएल-पैटर्न को कॉन्फ़िगर करते समय आप attribute तक पहुंच के अधिकारियों को संदर्भित कर सकते हैं। इसके अलावा, आप SecurityContextHolder.getContext() के माध्यम से अपने नियंत्रक कक्षाओं में प्रमाणीकरण ऑब्जेक्ट को पुनर्प्राप्त कर सकते हैं। GetA प्रमाणीकरण()।
  • Furthemore इन कक्षाओं की अंदरूनी कामकाज का एक बेहतर समझ पाने के लिए आप javadocs पढ़ सकते हैं:

    • UserDetails - कैसे उपयोगकर्ता क्रेडेंशियल संग्रहीत और एक्सेस किया जाता है
    • AuthenticationManager.authenticate(..) - कैसे AuthenticationExceptions पर अनुबंध
    • UserDetailsService.loadUserByUsername(..) हैंडल हैं - उपयोगकर्ता नाम लुकअप विफलताओं को कैसे प्रबंधित किया जाता है, इस पर संपर्क करें, उदाहरण के लिए उपयोगकर्ता मौजूद नहीं है

    स्पेल

    इसके बजाय जाँच अधिकारियों की, SPEL एक उपयोगकर्ता की अन्य संपत्तियों की जांच करने के भी सक्षम बनाता है। आप यूआरएल पैटर्न में इनका उपयोग कर सकते हैं, लेकिन @ प्राधिकारीकरण के साथ विधियों को भी एनोटेट कर सकते हैं। इस तरह से व्यापार परत को सुरक्षित करना कम घुसपैठिया है।

    एसीएल के आधार

    एसीएल आधारित मॉडल वसंत सुरक्षा 3.0 में पेश किया गया था, लेकिन अच्छी तरह से documented नहीं किया गया है। उनका सुझाव Contacts XML example पर देखना है, क्योंकि यह उनके नए एसीएल घटक का उपयोग करता है।

    अंतिम this book में आपकी सुरक्षा इच्छाओं को और अनुकूलित करने के तरीके पर शानदार उदाहरण हैं।

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