2009-07-01 11 views
9

मेरे पास एक सुरक्षा संदर्भ परिभाषा है जो मेरे एप्लिकेशन के फ्लेक्स भाग के लिए प्रीएटाइन्टिकेटेड प्रोसेसिंगफिल्टर एंटर्रीपॉइंट का उपयोग करती है। मेरे पास एक और परिभाषा कैसे हो सकती है जो मेरे आवेदन के किसी अन्य भाग के लिए HTML फॉर्म के साथ मानक फॉर्म लॉगिन का उपयोग करेगी? यहाँ मैं वर्तमान में क्या है:क्या मेरे पास वसंत सुरक्षा के साथ कई सुरक्षा संदर्भ हो सकते हैं?

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
         http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.1.xsd"> 


    <http auto-config="true" access-denied-page="/admin/access-denied"> 
     <intercept-url pattern="/admin/login*" filters="none"/> 
      <intercept-url pattern="/admin/access-denied" filters="none"/> 
     <intercept-url pattern="/admin/**/*" access="ROLE_ADMIN" /> 
     <form-login login-page="/admin/login" authentication-failure-url="/admin/login?login_error=1" 
      default-target-url="/admin/index" login-processing-url="/admin/login-process"/> 
     <logout logout-success-url="/admin/login"/> 

    </http> 

<global-method-security jsr250-annotations="enabled" /> 

    <beans:bean id="preAuthenticatedEntryPoint" class="org.springframework.security.ui.preauth.PreAuthenticatedProcessingFilterEntryPoint" > 
    </beans:bean> 


    <beans:bean id="userAccountManager" class="com.mycomp.service.managers.jpa.UserAccountJpaManager" /> 
    <beans:bean id="userService" class="com.mycomp.auth.DefaultUserDetailsService" /> 
    <beans:bean id="defaultPasswordEncoder" class="com.mycomp.auth.DefaultPasswordEncoder" /> 

    <authentication-provider user-service-ref="userService"> 
     <password-encoder ref="defaultPasswordEncoder"/> 
    </authentication-provider> 


</beans:beans> 

मैं क्या करना चाहते हैं क्या यूआरएल कि व्यवस्थापक साइट में हैं के लिए एक और प्रमाणीकरण प्रदाता का उपयोग है, एक मैं वर्तमान में है फ्लेक्स आवेदन के लिए है। इसलिए मैं व्यवस्थापक यूआरएल की सुरक्षा किसी अन्य उपयोगकर्ता का उपयोग करने के लिए सुरक्षा चाहता हूं।

+0

मेरे पास एक ही समस्या है ... यह कैसे समाप्त हुआ? – HDave

+0

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

उत्तर

0

यह सब कुछ है कि आपके आवेदन के कौन से हिस्सों को वसंत सुरक्षा फ़िल्टर श्रृंखला द्वारा अवरुद्ध किया जाता है। अपने xml विन्यास में कहीं (के आधार पर यदि आप सरल टैग config किया या नहीं) इस तरह की एक अवरोधन regex है:

<intercept-url pattern="/**" ...> 

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

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

+0

मैंने अपनी सुरक्षा संदर्भ कॉन्फ़िगरेशन पोस्ट की है। अगर आप इसके साथ मेरी मदद कर सकते हैं तो मैं सराहना करता हूं। – Vasil

2

मानचित्र एक ऐसे भिन्न URL प्रतिमान पर प्रत्येक फिल्टर श्रृंखला:

<bean id="myfilterChainProxy" 
    class="org.springframework.security.util.FilterChainProxy"> 
    <security:filter-chain-map pathType="ant"> 
    <security:filter-chain pattern="/flex" filters="filterF"/> 
    <security:filter-chain pattern="/**" filters="filter1,filter2,filter3"/> 
    </security:filter-chain-map> 
</bean> 
+0

मुझे लगता है कि मुझे यही करना है। हालांकि मुझे नहीं पता कि एक कस्टम प्रमाणीकरण प्रदाता के साथ फ़िल्टर को परिभाषित करने का सबसे आसान तरीका क्या है। – Vasil

12

यह हाल ही में जब तक ऐसा करने के लिए मुश्किल हो गया है, लेकिन अब यह आसान है!

वसंत सुरक्षा ने संस्करण 3.1 में परिदृश्य के लिए समर्थन जोड़ा है। यह वर्तमान में रिलीज उम्मीदवार के रूप में उपलब्ध है, जिसे SEC-1171 द्वारा कार्यान्वित किया गया है। सिंटैक्स का विवरण मैनुअल में 3.1 के साथ शामिल है।

इसका उपयोग करना बहुत आसान है। असल में आप बस अपने संदर्भ सुरक्षा कॉन्फ़िगरेशन में एकाधिक http तत्वों को परिभाषित करते हैं, प्रत्येक संदर्भ के लिए एक। हम इसे इस तरह का उपयोग कर रहे:

<!-- Configure realm for system administration users --> 
<security:http pattern="/admin/**" create-session="stateless"> 
    <security:intercept-url pattern='/**' access='ROLE_ADMIN' requires-channel="https" /> 
    <security:custom-filter position="PRE_AUTH_FILTER" ref="preAuthFilter" /> 
</security:http> 


<!-- Configure realm for standard users --> 
<security:http auto-config="true" access-denied-page="/error/noaccess" use-expressions="true" create-session="ifRequired"> 
    <security:form-login 
      ... 
      ... 
</security:http> 

ध्यान दें करने के लिए महत्वपूर्ण बात यह है कि पहले http तत्व पर pattern="/admin/**" है। यह वसंत को बताता है कि /admin के तहत सभी यूआरएल डिफ़ॉल्ट संदर्भ के बजाय उस संदर्भ के अधीन हैं - और इस प्रकार /admin के तहत यूआरएल इसके बजाय आपके प्रीवाइडरिसेशन फ़िल्टर का उपयोग करते हैं।

+0

हाय, एकाधिक 'http' तत्वों का उपयोग करते समय मुझे एक ही समस्या है।मैंने इसे विभिन्न पैटर्न के साथ मैप किया है और अभी भी सुरक्षा क्षेत्र ('http' तत्व) के बीच 'सुरक्षा कॉन्टेक्स्ट' साझा किया है। –

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