[SPRING] 하나의 특수 경로에만 필터를 추가하는 방법 WebSecurityConfigurerAdapter
SPRING하나의 특수 경로에만 필터를 추가하는 방법 WebSecurityConfigurerAdapter
우리는 다음과 같은 구성을 가지고 있습니다 :
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
public static final String LOGIN_PATH_EXPRESSION = "/login";
public static final String API_PATH_EXPRESSION = "/api/**/*";
public static final String GLOBAL_PATH_EXPRESSION = "/**/*";
@Autowired
@Qualifier("ssoFilter")
private Filter ssoFilter;
@Autowired
private VerifyingProcessingFilter verifyingProcessingFilter;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.userDetailsService(username -> new User(username, "", Collections.emptyList()))
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers(LOGIN_PATH_EXPRESSION)
.authenticated()
.and()
.httpBasic()
.and()
.authenticationProvider(new SimpleAuthenticationProvider())
.authorizeRequests()
.antMatchers(API_PATH_EXPRESSION).authenticated()
.and()
.addFilterBefore(ssoFilter, BasicAuthenticationFilter.class)
.addFilterAfter(verifyingProcessingFilter, FilteredOAuth2AuthenticationProcessingFilter.class)
.authorizeRequests()
.antMatchers(GLOBAL_PATH_EXPRESSION)
.permitAll()
.and()
.csrf()
.disable();
}
/ logincall에서 FilteredOAuth2AuthenticationProcessingFilter의 내부에서 끝내고 왜 이것이 일어나는지 물어 보았습니다.
목표는 ssoFilter 및 verifyingProcessingFilter가 api / ** / * 경로로 끝점을 지정할 때만 적용되도록하는 것입니다.
바로 지금 우리는 AntMatching 체크를 필터 안에 추가해야만 올바른 요청에만 적용될 수 있지만 일치하는 요청에만 추가 할 수 있어야한다고 가정합니다.
특정 Ant Matching 경로 요청에 필터를 추가하는 방법에 대한 예제를 제공 할 수 있습니까?
해결법
-
==============================
1.단일 Configuration 클래스로는 그렇게 할 수없는 것처럼 보입니다. 이 질문을보십시오 : 보안 된 엔드 포인트에서만 스프링 보안 필터를 적용하는 방법.
단일 Configuration 클래스로는 그렇게 할 수없는 것처럼 보입니다. 이 질문을보십시오 : 보안 된 엔드 포인트에서만 스프링 보안 필터를 적용하는 방법.
이 경우 더 나은 솔루션은 여러 개의 HttpSecurity를 구성하는 것입니다. Spring IO 문서에서 :
설명서에는이를 수행하는 데 필요한 단계가 포함 된 전체 예제가 있습니다.
행운을 빕니다!
from https://stackoverflow.com/questions/45820372/how-to-add-a-filter-only-for-one-special-path-websecurityconfigureradapter by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] JPA / 큰 컬렉션을 최대 절전 모드로 전환 (0) | 2019.04.01 |
---|---|
[SPRING] 내가 얻은 오류에 따라 SPRING_SECURITY_LAST_EXCEPTION.message를 사용자 정의하는 방법 (0) | 2019.04.01 |
[SPRING] 스프링 배치 항목 판독기가 한 번만 실행됩니다. (0) | 2019.04.01 |
[SPRING] 스프링에서 JSON 응답을 래핑하는 방법은 무엇입니까? (0) | 2019.04.01 |
[SPRING] Spring applicationContext.xml에서 데이터 소스로 P6Spy 사용 (0) | 2019.04.01 |