2010-07-19 15 views
6

का उपयोग कर एसएसओ लागू करें मैं सीएएस और स्प्रिंग सिक्योरिटी का उपयोग कर कई वेब अनुप्रयोगों में एसएसओ को लागू करने की कोशिश कर रहा हूं। उम्मीद मामला:
कैस - http: // localhost: 8080/सीएएस/
अनुप्रयोग एक सुरक्षित सामग्री - http: //localhost:8081/cas-client1/secure/index.html
अनुप्रयोग बी सुरक्षित सामग्री - http: //localhost:8081/cas-client2/secure/index.html
सीएएस + स्प्रिंग सिक्योरिटी

1) जब उपयोगकर्ता कैस-क्लाइंट 1 तक पहुंचता है, तो सीएएस लॉगिन फॉर्म संकेत दिया जाएगा और प्रमाणीकरण ट्रिगर किया जाएगा।
2) एक ही उपयोगकर्ता पहुँच cas-client2, पिछले लॉगिन मान्यता दी जानी चाहिए और कोई प्रवेश फार्म
प्रेरित किया जाएगा

हालांकि, मैं कदम 2. कैस लॉगिन अभी भी उपयोगकर्ता के लिए संकेत दिया प्रपत्र को लागू करने में विफल रहा हूँ और इसलिए डबल की आवश्यकता है लॉग इन करें। क्या मेरी स्प्रिंग सुरक्षा कॉन्फ़िगरेशन में कोई गलत सेटिंग है:

<security:http entry-point-ref="casAuthenticationEntryPoint" auto-config="true"> 
    <security:intercept-url pattern="/secure/**" access="ROLE_USER" /> 
    <security:custom-filter position="CAS_FILTER" ref="casAuthenticationFilter" /> 
    </security:http> 

    <bean id="casAuthenticationEntryPoint" class="org.springframework.security.cas.web.CasAuthenticationEntryPoint"> 
    <property name="loginUrl" value="http://localhost:8080/cas/login" /> 
    <property name="serviceProperties" ref="serviceProperties" /> 
    </bean> 

    <bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties"> 
    <!-- http://localhost:8081/cas-client2 for app 2--> 
    <property name="service" value="http://localhost:8081/cas-client1/j_spring_cas_security_check" /> 
    </bean> 

    <security:authentication-manager alias="authenticationManager"> 
    <security:authentication-provider ref="casAuthenticationProvider" /> 
    </security:authentication-manager> 

    <bean id="casAuthenticationFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter"> 
    <property name="authenticationManager" ref="authenticationManager" /> 
    <property name="authenticationFailureHandler"> 
     <bean class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler"> 
     <property name="defaultFailureUrl" value="/casfailed.jsp" /> 
     </bean> 
    </property> 
    </bean> 

    <bean id="casAuthenticationProvider" class="org.springframework.security.cas.authentication.CasAuthenticationProvider"> 
    <property name="userDetailsService" ref="userService" /> 
    <property name="serviceProperties" ref="serviceProperties" /> 
    <property name="ticketValidator"> 
     <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator"> 
     <constructor-arg index="0" value="http://localhost:8080/cas" /> 
     </bean> 
    </property> 
    <property name="key" value="an_id_for_this_auth_provider_only" /> 
    </bean> 

    <security:user-service id="userService"> 
    <security:user name="wilson" password="wilson" authorities="ROLE_USER" /> 
    </security:user-service> 

उत्तर

9

समस्या आखिरकार हल हो गई है। मेरा सीएएस HTTP का उपयोग कर रहा है और इसलिए सुरक्षित कुकीज़ को गलत पर सेट करने की आवश्यकता है।

संशोधित ticketGrantingTicketCookieGenerator.xml

p:cookieSecure="false" 
+4

अच्छा परीक्षण के लिए पता करने के लिए है, लेकिन मुझे लगता है कि हर किसी को https- – chrismarx

+0

पर इस चलना चाहिए धन्यवाद! मैंने पहली बार एक साल पहले इस जवाब पर ठोकर खाई और बस एक बार फिर सीएएस में डाइविंग शुरू कर दिया। क्यूए वातावरण में समस्याग्रस्त हो सकता है की तुलना में एक और पैरामीटर पी है: cookDDomain। यदि डोमेन उत्पादन और क्यूए के बीच अलग है, तो इस सेटिंग को पूरी तरह से समायोजित या हटा दिया जाना चाहिए। पी को हटा रहा है: cookieDomain और सेटिंग p: cookieSecure = "false" सीएएस प्राप्त करने और QA में चलने के लिए सबसे अधिक सुविधाजनक सेटिंग है। – AndreiM

+0

आखिरकार मुझे यह +1 मिला .. – edaklij

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