복붙노트

[SPRING] 405 POST에 허용되지 않는 메소드

SPRING

405 POST에 허용되지 않는 메소드

매우 간단한 스프링 부팅 응용 프로그램이 있으며 다음 코드로 보안됩니다.

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");

아이디어는 "admin"부분을 확보하는 것입니다. 그것은 REST API를 노출합니다. 문제는 모든 POSTS가 반환하는 것입니다.

응용 프로그램에서 보안 초보를 제거하면 작동합니다. 보안 구성이 문제라고 생각합니다. 그러나 나는 어떻게 발견 할 수 없다.

해결법

  1. ==============================

    1.이것은 쉬워야합니다.

    이것은 쉬워야합니다.

    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를 활성화해야하는 경우 docs를 참조하십시오.

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

  2. ==============================

    2.이는 Spring Security SAML 확장을 사용하고 SAMLUserDetailsService가 UsernameNotFoundException을 반환하는 경우에도 발생할 수 있습니다. 꽤 반 직관적 인 것 같지만, 그것이 내 경험상 기본적으로하는 것입니다.

    이는 Spring Security SAML 확장을 사용하고 SAMLUserDetailsService가 UsernameNotFoundException을 반환하는 경우에도 발생할 수 있습니다. 꽤 반 직관적 인 것 같지만, 그것이 내 경험상 기본적으로하는 것입니다.

  3. from https://stackoverflow.com/questions/33699724/405-method-not-allowed-for-post by cc-by-sa and MIT license