inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Cuộc chinh phục hoàn toàn bảo mật mùa xuân [Phiên bản sửa đổi 6.x]

Nhà cung cấp xác thực - Nhà cung cấp xác thực - 2

authenticationManagerBuilder 주입받은거 vs 만든 거

106

kkkkkk

42 câu hỏi đã được viết

0

 

HttpSecurity에서 가져오는 AuthenticationManagerBuilder와

주입받는 AuthenticationManagerBuilder가 사로 다르지만 타입이 같아 메서드는 똑같을텐데

 

managerBuilder.authenticationProvider(new DaoAuthenticationProvider());
 builder.authenticationProvider(new DaoAuthenticationProvider());

후자일경우 수업 내용처럼
부모 프로파이더에는

DaoAuthenticationProvider() 가 들어가고

providers 에는 커스텀과 익명 프로바이더 2개가 들어가는데요


전자 즉 직접 참조하는 AuthenticationManagerBuilder는
부모 프로바이더는 null 인데 반해

기존 providers 에 생겨서 총 3개가되고있습니다
물론 실제 실행할때에는 똑같은 결과지만

 

함수authenticationProvider 은
public AuthenticationManagerBuilder authenticationProvider(AuthenticationProvider authenticationProvider) { this.authenticationProviders.add(authenticationProvider); return this; }
인데 왜 각각의 작동이 다른지 궁금합니다












 



 

spring spring-boot spring-security security web-security

Câu trả lời 1

0

communityai8509

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

ckstj8027님의 질문은 HttpSecurity와 주입받는 AuthenticationManagerBuilder 간의 차이에 관한 내용입니다. 기본적으로 두 객체 모두 AuthenticationManagerBuilder 타입을 가지며, 동일한 메서드 authenticationProvider()를 사용할 수 있습니다. 하지만, 이들이 생성되고 관리되는 방식에 따라 커스텀 AuthenticationProvider가 등록되는 과정에서 차이가 발생할 수 있습니다.

HttpSecurityAuthenticationManagerBuilder의 역할

  1. HttpSecurity에서 얻은 AuthenticationManagerBuilder: 이 객체는 스프링 시큐리티가 관리하는 전체 보안 설정을 정의하는 데 사용됩니다. HttpSecurity 설정을 통해 추가한 AuthenticationProvider는 스프링 시큐리티가 요청을 처리할 때 기본적인 인증 방식 중 하나로 사용됩니다.

  2. 직접 주입받은 AuthenticationManagerBuilder: 이 경우, 스프링이 여러 AuthenticationManagerBuilder 인스턴스를 관리할 수 있으며, 특정 운영 방식이나 커스텀 필터 적용과 같은 독립적 상황에서 사용될 수 있습니다.

행동의 차이점

두 인스턴스가 동일한 타입과 메서드를 가지지만, 내부적으로 추가된 제공자가 저장되는 컬렉션이나 그 용도가 다를 수 있습니다. 이는 특정 타입의 주입 방식이 해당 객체의 다른 Spring Context 내에서 실행되는 방식에서 기인할 수 있습니다.

  • HttpSecurity를 통한 설정에서는 일반적으로 전체 글로벌 설정에 영향을 미치는 구조로 동작하며, 모든 필터나 프로바이더와 조화롭게 작동할 수 있도록 설계됩니다.

  • 직접 주입된 AuthenticationManagerBuilder의 사용에서는 독립적으로 특정 인증 시나리오나 환경 구성에 필요한 별도의 설정으로 사용될 수 있습니다.

이로 인해 제공자가 동일하게 추가된다 하더라도, 그 동작적인 맥락이나 우선순위가 Spring Context의 작동 구조에 따라 달라질 수 있습니다.

혹시 위 내용으로 해결되지 않는 부분이 있으시면, 아래 유사한 질문 링크를 참고하시면 더 깊이 있는 이해를 얻으실 수 있습니다:

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

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

0

21

2

단원별 소스코드

0

55

2

CustomAuthenticationProvider 추가 관련 문의

0

63

2

AOP 의존성 명칭 변경

0

59

1

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

0

61

1

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

0

84

2

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

0

69

1

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

0

65

1

@EnableWebSecurity

0

142

1

트랜잭션과 롤백

0

96

1

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

0

84

2

AuthenticationManager 사용 방법

0

143

2

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

0

97

2

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

0

186

1

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

0

101

2

메타 주석 질문

0

64

1

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

0

140

3

로그인 후, redirect 에서 error

0

136

3

Session 생성 타이밍에 대한 질문

0

78

2

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

0

129

2

customAuthentication 관련

0

123

2

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

0

95

1

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

0

153

2

Bean UserDetailsService

0

85

2