인프런 커뮤니티 질문&답변

이상민님의 프로필 이미지

작성한 질문수

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

인증 관리자 - AuthenticationManager - 1

AuthenticationManager 사용방법에 대해 질문있습니다.

해결된 질문

작성

·

236

0

안녕하세요 강의 잘 보고 있습니다.

다름이 아니라 강의를 보며 궁금한 점이 생겨 이렇게 질문드립니다.

영상및 강의자료에서는 Authentication Manager를 사용할때 CustomFilter를 다루는 부분이 나옵니다.

이때 첫번째 방법(HttpSecurity 사용)은 필터를 Bean으로 등록하는 것이 아닌 직접 필터 객체를 생성하고 Authentication ManagerBuilder를 통해 직접 build한 Authentication Manager에 등록하고

 

두번째 방법(직접 생성)은 필터를 빈으로 등록하고 Authentication Manager관련 프로세스는 스프링 시큐리티에 위임한다는 느낌을 받았습니다.

 

  1. 이때 이 두가지 방법의 차이는 어떤 것이 있을까요? Authenticaion Manager를 직접 생성하기에 세밀한 설정이 가능하다는 차이가 있고 없고인가요?

  2. 스프링 시큐리티의 버전이 변경되면서 필터를 Bean으로 등록해 사용하도록 권장하고 있다고 알고 있습니다. 이러한 관점에서 보았을때는 두번째 방법이 스프링 시큐리티 측에서 권장하는 방법으로 이해해도 될까요?

답변 1

1

정수원님의 프로필 이미지
정수원
지식공유자

  1. 이때 이 두가지 방법의 차이는 어떤 것이 있을까요? Authenticaion Manager를 직접 생성하기에 세밀한 설

    정이 가능하다는 차이가 있고 없고인가요?

첫번째 방식은 필터를 빈으로 선언하게 되면 AuthenticaionManager 도 빈으로 주입이 되어야 하는데 AuthenticaionManager 는 빈으로 선언이 안되어 있기 때문에 오류를 발생합니다. 그래서 필터를 빈으로 선언하지 않는것이고 두번째는 필터를 빈으로 선언하더라도 AuthenticaionManager 를 빈으로 주입받지 않고 직접 생성하기 때문에 필터를 빈으로 선언하고 있는 것입니다.

 

  1. 스프링 시큐리티의 버전이 변경되면서 필터를 Bean으로 등록해 사용하도록 권장하고 있다고 알고 있습니다. 이러한 관점에서 보았을때는 두번째 방법이 스프링 시큐리티 측에서 권장하는 방법으로 이해해도 될까요?

     


    필터를 빈으로 사용함을 권장하는 것 여부는 잘 모르겠습니다. 어차피 필터는 초기화 시 한번 객체로 생성되기 때문에 싱글톤 빈으로 생성하는 것과 리소스 비용 측면에서는 크게 차이가 없습니다. 다만 빈으로 생성할 경우에는 스프링의 특화된 여러가지 기능들을 사용할 수 있기 때문에 필터를 빈으로 사용하는 것입니다.
    만약 스프링의 빈 관련 기능을 사용하지 않을 경우에는 일반 객체로 생성해서 사용하셔도 무방합니다.