inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 시큐리티

4) Form Login 인증 필터 : UsernamePasswordAuthenticationFilter

안녕하세요 강사님 강의에 나온 FilterChainProxy에 대해 질문이 있습니다.

391

hiroh2ro

작성한 질문수 6

2

추가 학습을 해 보았더니, 클라이언트로 부터 온 요청은 서블릿 필터가 받게 되고, 서블릿 필터가 처리할 수 없는? 요청은 DelegatingFilterProxy를 통해 스프링 Application Context에 등록된 필터 빈 으로 책임을 위임한다고 나와있는데요.

이때 FilterChainProxy가 서블릿 필터로 부터 DelegatingFilterProxy을 통해 역할을 위임받게 되는건가요?

그렇다면 FilterChainProxy가 위치한 곳은 Spring의 IoC컨테이너일텐데

어떻게 서블릿 컨테이너에 위치한 서블릿 필터가 스프링 컨테이너에 위치한 FilterChainProxy에 필터링 작업을 위임할 수 있게 되는지 궁금합니다.

spring-boot java Spring Security

답변 1

3

정수원

DelegatingFilterProxy 는 서블릿 필터이지만 이 필터안에서 FilterChainProxy 를 찾게 됩니다.

아래 코드를 보시면 DelegatingFilterProxy 에서 FilterChainProxy 를 찾는 구문이 나옵니다.

protected Filter initDelegate(WebApplicationContext wac) throws ServletException {
String targetBeanName = getTargetBeanName();
Assert.state(targetBeanName != null, "No target bean name set");
Filter delegate = wac.getBean(targetBeanName, Filter.class);
if (isTargetFilterLifecycle()) {
delegate.init(getFilterConfig());
}
return delegate;
}

위 코드중 

Filter delegate = wac.getBean(targetBeanName, Filter.class);

이 부분이 스프링 컨테이너인 wac(ApplicationContext) 에서 FilterChainProxy 를 찾아서 위임하는 구문입니다.

다시 풀어서 설명 드리면
서블릿컨테이너에서 DelegatingFilterProxy 이 로드되고 FilterChainProxy 도 스프링 컨테이너에서 로드된 후 DelegatingFilterProxy 가 wac 를 통해  springSecurityFilterChain 빈이름을 가진 필터인 FilterChainProxy 를 얻어서 위임한다고 보시면 됩니다.

DelegatingFilterProxy 가 빈이 아닐지라도 ApplicationContext 를 통해 특정한 빈 이름을 넘겨 주면 해당 빈을 참조가 가능합니다.

DelegatingFilterProxy  클래스의 내부 로직을 좀 더 확인해 보시면 이해하시는데 도움이 됩니다.

시큐리티 공부 버전 질문

0

175

1

[해결 방법] MethodSecurityConfig.customMethodSecurityMetadataSource() 호출하지 않는 이슈

0

186

1

AbstractSecurityInterceptor.class.beforeInvocation()를 2번 실행하는 경우

0

175

1

강의 코드가 왜이렇게 뒤죽박죽인가요...

0

250

1

메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..

0

236

1

파라미터값이 넘어가지 않습니다 ....

0

374

1

security filterChain 설정 질문이 있습니다.

0

332

1

소스 부분 질문 드립니다.

0

209

2

섹션4 7번 강의 문제가 있는거 같네요.

0

344

2

파일이 수시로 이름이 바껴있네요 ㄷㄷ

0

305

1

HttpSessionSecurityContextRepository를 사용안하는 문제

0

555

2

error , exception 이 잘 안됩니다.

0

283

2

thymeleaf tag 질문합니다.

0

197

2

버전업하면서 deprecated된 것들이 너무많아요

0

478

1

spring security 패치 관련

0

437

1

모바일을 사용할때 토큰말고 세션

0

846

2

DB 연동한 인가 부분에 대한 질문입니다!

0

264

1

Ajax방식도 똑같이 Session방식을 사용하는건가요?

0

307

1

Config 파일 생성 시 질문이 있습니다.

0

227

1

강사님 몇일동안 구글 검색만 100개 했는데도 이유를 모르겠습니다..

1

431

2

403 에러 뜹니다.

0

813

2

login_proc의 존재에 대한 간략한 설명입니다

0

276

1

top.html에 로그인 링크를 만들어서 로그인을 해봤습니다

0

285

2

안녕하세요. DB에 저장될 때 이해 안 가는 값이 있어서 질문드립니다!

0

189

1