• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

24.05.18 12:07 작성 24.05.18 12:12 수정 조회수 146

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 오타일까요?

답변 2

·

답변을 작성해보세요.

1

아 네 이부분은

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

을 참고해 주시면 됩니다

 

그리고 질문내용에 보면

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

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

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

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

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.18

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

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

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

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

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

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

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

채널톡 아이콘