मेरे पास एक बहुत ही सरल स्प्रिंग बूट एप्लिकेशन है, जो निम्नलिखित कोड द्वारा सुरक्षित है:

http.authorizeRequests()
        .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
        .and()
          .formLogin().loginPage("/login").failureUrl("/login?error")
          .usernameParameter("username").passwordParameter("password")
        .and()
          .logout().logoutSuccessUrl("/login?logout")
        .and()
          .exceptionHandling().accessDeniedPage("/403");

विचार "व्यवस्थापक" भाग को सुरक्षित करने के लिए है। यह एक REST API को उजागर करता है। समस्या सभी POSTS रिटर्न की है

405 विधि अनुमति नहीं है

यदि मैं एप्लिकेशन से सुरक्षा स्टार्टर हटाता हूं, तो यह काम करता है। यह मुझे विश्वास दिलाता है कि सुरक्षा कॉन्फ़िगरेशन समस्या है। लेकिन मुझे पता नहीं कैसे।

4
Arash 13 नवम्बर 2015, 21:41

2 जवाब

सबसे बढ़िया उत्तर

यह आसान होना चाहिए।

CSRF सक्षम होने पर POST और PUT अनुरोधों की अनुमति नहीं दी जाएगी, और स्प्रिंग बूट डिफ़ॉल्ट रूप से सक्षम बनाता है।

बस इसे अपने कॉन्फ़िगरेशन कोड में जोड़ें:

.csrf().disable()

अर्थात् :

http.
.csrf().disable().
authorizeRequests()
        .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
        .and()
          .formLogin().loginPage("/login").failureUrl("/login?error")
          .usernameParameter("username").passwordParameter("password")
        .and()
          .logout().logoutSuccessUrl("/login?logout")
        .and()
          .exceptionHandling().accessDeniedPage("/403");

यदि आप CSRF को सक्षम करना चाहते हैं तो डॉक्स देखें।

http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#csrf-configure

11
Ashwini Rao 14 नवम्बर 2015, 08:04

यह तब भी हो सकता है यदि स्प्रिंग सिक्योरिटी एसएएमएल एक्सटेंशन और आपके SAMLUserDetailsService का उपयोग UsernameNotFoundException करता है। बहुत ही सहज ज्ञान युक्त लगता है, लेकिन यह डिफ़ॉल्ट रूप से (मेरे अनुभव में) है।

0
simon 16 पद 2016, 23:18