작성
·
173
·
수정됨
0
customFilter 메소드에 http를 전달받는 부분은 무시하라고 하셨는데
강의 자료에도 http를 인수로 넘기는 부분이 그대로 있어서, 이건 수정이 필요한 부분인가요?
다른 질문이 또 있습니다.
HttpSecurity 사용과 직접 생성의 차이점이 궁금합니다.
우리가 생성한 필터?(CustomAuthenticationFilter이게 맞는지는 모르겠지만)를 통해 인증을 진행할 때 ,직접 생성한 AuthenticationManger를 사용해서 인증을 진행하도록 한다고 이해했습니다. 이게 맞나요?
http.formLogin을 통해 FormLoginConfigurer를 설정하는 부분이 있던데,
UsernamePasswordAuthenticationFilter가 DaoAuthenticationProvider를 사용하지만,
우리가 만든 CustomAuthenticationFilter가 사용하는 AuthenticationManager에도 DaoAuthenticationProvider를 사용하니까 여기서 처리되도록 한 것인가요? 굳이 formLogin 부분이 추가된 이유를 명확하게 잘 모르겠습니다.
여기서는 AuthenticationManager를 AuthenticationManagerBuilder를 통해서 생성하는데,
이 authenticationManager는 그럼 기본적으로 AuthenticationProvider들을 갖고있는게 있나요? 생성 후 따로 넣어주는 authenticationProvider들이 없는 것 같아서 이해가 잘 안됩니다.
답변 2
0
강의 자료와 소스코드가 동기화 되어 있지 않을 수 있습니다.
강의에서 제공하는 소스코드를 중심으로 이해해 나가시면 됩니다.
직접 생성방식
formLogin 은 기본적으로 사용하는 것이고 추가적으로 CustomAuthenticationFilter 를 사용하고자 할 때를 설명하고 있는 것입니다.
여기서 중요한 것은 formLogin 에서 사용하고 있는 AuthenticationManager 가 아닌 직접 AuthenticationManager 를 생성해서 CustomAuthenticationFilter 로 부터 인증 지시를 받는 예를 든 것입니다.
"우리가 생성한 필터?(CustomAuthenticationFilter이게 맞는지는 모르겠지만)를 통해 인증을 진행할 때 ,직접 생성한 AuthenticationManger를 사용해서 인증을 진행하도록 한다고 이해했습니다. 이게 맞나요?"
네 그렇게 이해하시면 됩니다.
HttpSecurity 생성방식
네 기본적으로 AnonymousAuthenticationProvider 와 DaoAuthenctionProvider 를 가지고 있습니다.
AnonymousAuthenticationProvider 는 기본 ProviderManager 가 가지고 있고 DaoAuthenctionProvider 는 기본 ProviderManager 의 parent 속성에 저장된 또 다른 ProviderManager 가 가지고 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
HttpSecurity
사용과 직접 생성의 차이점에 대한 질문에 답변 드리겠습니다.
먼저, HttpSecurity
를 사용하는 방식이란 Spring Security에서 제공하는 HttpSecurity
객체를 이용해 보안 설정을 구성하는 것을 말합니다. 이 객체를 통해 사용자 인증 방식, 권한 설정, CSRF 보호 등 다양한 웹 보안 관련 설정을 할 수 있습니다.
직접 생성 방식에서는 사용자가 직접 AuthenticationManager
를 생성하고 구성함으로써 인증 과정을 제어합니다. 이는 HttpSecurity
를 사용해 자동으로 구성되는 컴포넌트에 대해 더 세밀한 설정이 필요하거나 특정 인증 로직을 커스텀하고 싶을 때 사용됩니다.
AuthenticationManagerBuilder
는 AuthenticationManager
를 쉽게 생성할 수 있도록 도와주는 빌더 클래스입니다. 이를 통해 생성된 AuthenticationManager
는 다양한 AuthenticationProvider
를 관리할 수 있으며, 스프링 시큐리티의 설정 과정에서 필요한 AuthenticationProvider
들을 자동으로 등록합니다. 예를 들어, DaoAuthenticationProvider
는 사용자 명세서비스(UserDetailsService
)와 비밀번호 인코더(PasswordEncoder
)를 이용해 사용자 인증을 처리하는 AuthenticationProvider
의 한 예입니다.
CustomAuthenticationFilter
와 함께 사용된 경우, FormLoginConfigurer (http.formLogin()
)를 사용하는 이유는 스프링 시큐리티가 제공하는 기본 로그인 폼, 로그인/로그아웃 처리 등의 기능을 쉽게 사용하고 구성하기 위해서입니다. CustomAuthenticationFilter
를 사용하는 경우에도, 스프링 시큐리티의 다른 부분과의 연동을 위해 기본적인 설정을 유지하는 것이 일반적입니다.
결론적으로, HttpSecurity
사용 방식은 스프링 시큐리티가 제공하는 기능을 통해 비교적 쉽게 보안 설정을 구성하고자 할 때 주로 사용되며, 직접 생성 방식은 보다 커스텀한 보안 요구사항을 충족하기 위해 사용됩니다. 따라서, 각 프로젝트의 요구사항에 맞게 적절한 방식을 선택하는 것이 중요합니다.