복붙노트

[SPRING] Spring REST 보안 - 다른 URL을 다르게 확보

SPRING

Spring REST 보안 - 다른 URL을 다르게 확보

기본 인증을 사용하여 Spring 4에서 REST API를 사용하고 있습니다. 이러한 REST 서비스는 / api / v1 / ** URL 아래에 있습니다. 그러나 다른 url / api / v2 / **에서 REST 끝점 집합을 추가하려고하지만 토큰 기반 인증으로 보호됩니다.

하나의 서블릿으로이 작업을 수행 할 수 있습니까? 다른 URL에 대해 다른 형태의 인증을 사용하도록 Spring Security를 ​​설정하는 방법은 무엇입니까?

고맙습니다.

해결법

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

    1.다음은 UserDetailsService를 사용하고 다른 URL 끝점에 대해 서로 다른 보안 구성을 갖는 Java 구성의 코드 샘플입니다.

    다음은 UserDetailsService를 사용하고 다른 URL 끝점에 대해 서로 다른 보안 구성을 갖는 Java 구성의 코드 샘플입니다.

    @Configuration
    @EnableWebMvcSecurity
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Autowired
        UserDetailsService userDetailsService;
    
        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            auth.userDetailsService(userDetailsService);
        }
    
        @Configuration
        @Order(1)
        public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter{
    
            @Override
            protected void configure(HttpSecurity http) throws Exception {
                http
                        .antMatcher("/api/v1/**")
                        .httpBasic()
                            .realmName("API")
                            .and()
                        .csrf().disable()
                        .authorizeRequests()
                        .antMatchers("/api/v1/**").authenticated();
            }
        }
    
        @Configuration
        @Order(2)
        public static class ApiTokenSecurityConfig extends WebSecurityConfigurerAdapter{
    
            @Override
            protected void configure(HttpSecurity http) throws Exception {
                http
                        .antMatcher("/api/v2/**")
                        /* other config options go here... */
            }
    
        }
    }
    
  2. from https://stackoverflow.com/questions/33037559/spring-rest-security-secure-different-urls-differently by cc-by-sa and MIT license