inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

인증 관리자 - AuthenticationManager - 1

AuthenticationManger - HttpSecurity 사용

262

정민교

작성한 질문수 50

0

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

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

다른 질문이 또 있습니다.

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

직접 생성 방식

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

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

UsernamePasswordAuthenticationFilter가 DaoAuthenticationProvider를 사용하지만,

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

HttpSecurity 사용 방식

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

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

spring spring-boot spring-security security web-security

답변 2

0

정수원

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

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

 

직접 생성방식

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

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

 

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

 

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

 

HttpSecurity 생성방식

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

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

 

0

인프런 AI 인턴

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

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

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

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

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

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

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

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

0

35

2

단원별 소스코드

0

64

2

CustomAuthenticationProvider 추가 관련 문의

0

77

2

AOP 의존성 명칭 변경

0

76

1

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

0

70

1

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

0

87

2

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

0

78

1

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

0

69

1

@EnableWebSecurity

0

148

1

트랜잭션과 롤백

0

99

1

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

0

91

2

AuthenticationManager 사용 방법

0

153

2

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

0

108

2

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

0

192

1

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

0

109

2

메타 주석 질문

0

69

1

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

0

150

3

로그인 후, redirect 에서 error

0

140

3

Session 생성 타이밍에 대한 질문

0

86

2

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

0

135

2

customAuthentication 관련

0

132

2

authenticationManagerBuilder 주입받은거 vs 만든 거

0

114

1

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

0

101

1

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

0

162

2