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

정민교님의 프로필 이미지

작성한 질문수

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

인증 관리자 - AuthenticationManager - 1

AuthenticationManger - HttpSecurity 사용

24.06.23 18:12 작성

·

123

·

수정됨

0

customFilter 메소드에 http를 전달받는 부분은 무시하라고 하셨는데

강의 자료에도 http를 인수로 넘기는 부분이 그대로 있어서, 이건 수정이 필요한 부분인가요?

다른 질문이 또 있습니다.

HttpSecurity 사용과 직접 생성의 차이점이 궁금합니다.

직접 생성 방식

우리가 생성한 필터?(CustomAuthenticationFilter이게 맞는지는 모르겠지만)를 통해 인증을 진행할 때 ,직접 생성한 AuthenticationManger를 사용해서 인증을 진행하도록 한다고 이해했습니다. 이게 맞나요?

http.formLogin을 통해 FormLoginConfigurer를 설정하는 부분이 있던데,

UsernamePasswordAuthenticationFilter가 DaoAuthenticationProvider를 사용하지만,

우리가 만든 CustomAuthenticationFilter가 사용하는 AuthenticationManager에도 DaoAuthenticationProvider를 사용하니까 여기서 처리되도록 한 것인가요? 굳이 formLogin 부분이 추가된 이유를 명확하게 잘 모르겠습니다.

HttpSecurity 사용 방식

여기서는 AuthenticationManager를 AuthenticationManagerBuilder를 통해서 생성하는데,

이 authenticationManager는 그럼 기본적으로 AuthenticationProvider들을 갖고있는게 있나요? 생성 후 따로 넣어주는 authenticationProvider들이 없는 것 같아서 이해가 잘 안됩니다.

답변 2

0

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

2024. 06. 27. 17:09

강의 자료와 소스코드가 동기화 되어 있지 않을 수 있습니다.

강의에서 제공하는 소스코드를 중심으로 이해해 나가시면 됩니다.

 

직접 생성방식

formLogin 은 기본적으로 사용하는 것이고 추가적으로 CustomAuthenticationFilter 를 사용하고자 할 때를 설명하고 있는 것입니다.

여기서 중요한 것은 formLogin 에서 사용하고 있는 AuthenticationManager 가 아닌 직접 AuthenticationManager 를 생성해서 CustomAuthenticationFilter 로 부터 인증 지시를 받는 예를 든 것입니다.

 

"우리가 생성한 필터?(CustomAuthenticationFilter이게 맞는지는 모르겠지만)를 통해 인증을 진행할 때 ,직접 생성한 AuthenticationManger를 사용해서 인증을 진행하도록 한다고 이해했습니다. 이게 맞나요?"

 

네 그렇게 이해하시면 됩니다.

 

HttpSecurity 생성방식

네 기본적으로 AnonymousAuthenticationProvider 와 DaoAuthenctionProvider 를 가지고 있습니다.

AnonymousAuthenticationProvider 는 기본 ProviderManager 가 가지고 있고 DaoAuthenctionProvider 는 기본 ProviderManager 의 parent 속성에 저장된 또 다른 ProviderManager 가 가지고 있습니다.

 

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 25. 18:16

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

HttpSecurity 사용과 직접 생성의 차이점에 대한 질문에 답변 드리겠습니다.

먼저, HttpSecurity를 사용하는 방식이란 Spring Security에서 제공하는 HttpSecurity 객체를 이용해 보안 설정을 구성하는 것을 말합니다. 이 객체를 통해 사용자 인증 방식, 권한 설정, CSRF 보호 등 다양한 웹 보안 관련 설정을 할 수 있습니다.

직접 생성 방식에서는 사용자가 직접 AuthenticationManager를 생성하고 구성함으로써 인증 과정을 제어합니다. 이는 HttpSecurity를 사용해 자동으로 구성되는 컴포넌트에 대해 더 세밀한 설정이 필요하거나 특정 인증 로직을 커스텀하고 싶을 때 사용됩니다.

AuthenticationManagerBuilderAuthenticationManager를 쉽게 생성할 수 있도록 도와주는 빌더 클래스입니다. 이를 통해 생성된 AuthenticationManager는 다양한 AuthenticationProvider를 관리할 수 있으며, 스프링 시큐리티의 설정 과정에서 필요한 AuthenticationProvider들을 자동으로 등록합니다. 예를 들어, DaoAuthenticationProvider는 사용자 명세서비스(UserDetailsService)와 비밀번호 인코더(PasswordEncoder)를 이용해 사용자 인증을 처리하는 AuthenticationProvider의 한 예입니다.

CustomAuthenticationFilter와 함께 사용된 경우, FormLoginConfigurer (http.formLogin())를 사용하는 이유는 스프링 시큐리티가 제공하는 기본 로그인 폼, 로그인/로그아웃 처리 등의 기능을 쉽게 사용하고 구성하기 위해서입니다. CustomAuthenticationFilter를 사용하는 경우에도, 스프링 시큐리티의 다른 부분과의 연동을 위해 기본적인 설정을 유지하는 것이 일반적입니다.

결론적으로, HttpSecurity 사용 방식은 스프링 시큐리티가 제공하는 기능을 통해 비교적 쉽게 보안 설정을 구성하고자 할 때 주로 사용되며, 직접 생성 방식은 보다 커스텀한 보안 요구사항을 충족하기 위해 사용됩니다. 따라서, 각 프로젝트의 요구사항에 맞게 적절한 방식을 선택하는 것이 중요합니다.