inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 시큐리티 완전 정복 [6.x 개정판]

인증 관리자 - AuthenticationManager - 1

Security 에서 사용되는 Filter 의 @Bean 등록에 관하여 질문있습니다.

459

식빵

작성한 질문수 56

0

안녕하세요 선생님, 제가 읽은 spring security 문서와 제공해주신 ppt 의 내용에 약간 다른 점이 있어서 질문드립니다.

 

[인증 관리자 - AuthenticationManager - 1] 강의 20:54 에 나오는 ppt 에는 CustomAuthenticationFilter@Bean 으로 등록하라고 나옵니다.

 

그런데 제가 읽은 spring security 문서에서는 spring security 전용 Filter 는 단순히 @Bean 으로만 등록하면 servlet container 에 의해서 자동으로 Filter 로 등록되버리기 때문에 FilterRegistrationBean 까지 사용해서 이를 우회하라는 글을 본적이 있습니다.

 참고: Architecture :: Spring Security

 

혹시 ppt 오타일까요?

spring spring-boot spring-security security web-security

답변 2

1

정수원

아 네 이부분은

https://www.inflearn.com/questions/1027744/커스텀-필터-등록-시-applicationfilterchain-에-등록

을 참고해 주시면 됩니다

 

그리고 질문내용에 보면

그런데 제가 읽은 spring security 문서에서는 spring security 전용 Filter 는 단순히 @Bean 으로만 등록하면 servlet container 에 의해서 자동으로 Filter 로 등록되버리기 때문에 FilterRegistrationBean 까지 사용해서 이를 우회하라는 글을 본적이 있습니다”

라고 되어 있는데 이건 필터 생성시 스프링빈으로 할 것인가 아니면 일반 객체로 할 것인가의 문제인데 스프링빈으로 할 경우 발생할 수 있는 이슈입니다

즉 빈으로 생성할 경우 시큐리티 필터체인에도 등록되고 어플리케이션 필터체인에도 등록되기 때문에 이중 호출이 발생하기 때문에 이를 방지해야 한다는 의미입니다

강의 설명이 잘 못된 건 아니고 추가 이슈에 대한 부분에 해당한디고 보시면 됩니다

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

식빵님의 질문에 따르면, 스프링 시큐리티에서 사용하는 필터(CustomAuthenticationFilter 등)의 @Bean 등록에 대한 혼동이 있으신 것 같습니다. 스프링 시큐리티 필터를 @Bean으로 등록하면 서블릿 컨테이너에 의해 자동으로 필터로 등록되는 것을 막기 위해 FilterRegistrationBean을 사용하라는 이전 문서의 정보와 강의 내용이 서로 다른 것에 대한 혼란을 겪고 계신 듯합니다.

이와 관련해 유사한 상황에 대한 지식공유자님의 답변을 찾았습니다. 해당 답변에서는 커스텀 필터 등록 시, 스프링 시큐리티와 서블릿 컨테이너에 등록되는 방식과 관련된 문제를 설명하고 있습니다:

  • 커스텀 필터 등록 시, ApplicationFilterChain 에 등록에서 설명된 것처럼, 필터를 @Bean으로 등록할 경우 서블릿 컨테이너에 자동으로 등록되고, 이로 인해 예상치 못한 동작을 할 수 있습니다. 이를 해결하기 위해 필터를 SecurityFilterChain에만 등록하고 싶을 때 다른 접근 방법을 모색해야 할 수 있습니다.

답변에서는 서블릿 컨테이너에 필터가 등록되는 것을 원치 않을 때, 필터를 @Bean으로 선언하지 않고 SecurityFilterChain 내에 직접 추가하는 방식을 언급합니다. 다만, 이 과정에서 스프링의 다른 리소스나 빈들을 주입받지 못하는 문제가 발생할 수 있기 때문에, 필요한 리소스나 빈들을 필터에 주입하는 난점이 있습니다.

스프링 시큐리티 6로 업데이트 되면서 발생한 변화에 대한 구체적인 내용을 원하신다면, 공식 스프링 시큐리티 문서 또는 강의에서 제공하는 최신 정보를 참고하는 것이 좋습니다. 또한, 강의의 질문&답변 섹션에 질문을 올려 직접 지식공유자에게 확인하는 것도 하나의 방법이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.

0

28

2

단원별 소스코드

0

59

2

CustomAuthenticationProvider 추가 관련 문의

0

69

2

AOP 의존성 명칭 변경

0

65

1

빈 1개 등록 시 다른 해결 방법

0

65

1

@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?

0

85

2

OIDC의 id token에 담긴 데이터에 대해

0

74

1

loginPage("/loginPage") 질문드립니다.

0

69

1

@EnableWebSecurity

0

147

1

트랜잭션과 롤백

0

99

1

68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제

0

88

2

AuthenticationManager 사용 방법

0

148

2

HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문

0

104

2

spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??

0

190

1

init(B Builder), configure(B builder) 에 대하여 질문 드립니다.

0

106

2

메타 주석 질문

0

68

1

동시세션제어 기능에서 로그아웃하기

0

147

3

로그인 후, redirect 에서 error

0

138

3

Session 생성 타이밍에 대한 질문

0

84

2

강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.

0

133

2

customAuthentication 관련

0

127

2

authenticationManagerBuilder 주입받은거 vs 만든 거

0

110

1

UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?

0

101

1

9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.

0

159

2