강의

멘토링

커뮤니티

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

duckis-j님의 프로필 이미지
duckis-j

작성한 질문수

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

인증 제공자 - AuthenticationProvider - 1

CustomAuthenticationProvider 추가 관련 문의

작성

·

9

·

수정됨

0

캡처.PNG.webp

첨부한 사진의 소스 상으로 보면 @Bean으로 두개의 customAuthenticationProvider를 등록했습니다. 그러면 @Bean으로 등록했기 때문에 이 두 커스텀 프로바이더는 처음에 parent의 providers에 추가되고,
http build 하는 과정에서 빌더에 이 두 커스텀 프로바이더를 추가하니 child 쪽의 providers에도 다시 추가,
http.formLogin(Customizer.withDefaults());를 호출하기 때문에 child 쪽에 DaoAuthenticationProvider 추가.
최종적으로
child - CustomAuthenticationProvider, CustomAuthenticationProvider2, DaoAuthenticationProver

parent - CustomAuthenticationProvider, CustomAuthenticationProvider

이렇게 추가되어야 하지 않나요?


답변 2

0

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

스프링 시큐리티가 빈으로 등록했을 때 추가하는 원리는 빈이 한개일 경우, 빈이 두개일 경우에 따라 다르게 구성됩니다.

강의에서 여기에 대한 자세한 설명을 하고 있습니다.

다만 캡쳐하신 이미지처럼 시큐리티가 구성한 부분은 특정한 원칙을 이해하기 보다는 빈 등록에 따른 결과의 패턴을 그대로 이해하고 사용하시면 됩니다

저도 여러 경우의 상황을 테스트 해 보면 왜 프로바이더가 이런 식으로 구성이 되는지 이해가 잘 안되는 부분들이 있더군요

그래서 직접 빈을 등록하면서 어떻게 구성되는지 확인하고 적절하게 사용하시면 됩니다.

제가 강의에서는 몇가지 예를 들면서 설명을 하고 있지만 여전히 명확한 규칙, 원칙이 있다 라고 이해하기 보다는 이런 경우에는 이렇게 되고 저런 경우에는 저렇게 되는구나 라고 이해하는 정도입니다.
그러니 그 부분은 원리를 깊게 생각하지 않아도 될 것 같습니다.

duckis-j님의 프로필 이미지
duckis-j
질문자

빠른 답변 감사합니다.
말씀 잘 이해했습니다.
선생님의 이전버전 시큐리티 강의, OAuth2 강의, Batch 강의 모두 감사하게 잘 들었습니다.
오늘 하루도 마무리 잘 하세요
감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. duckis-j님.

첨부해 주신 내용과 관련하여, Spring Security에서 AuthenticationProvider를 설정하는 방법에 대해 설명해드리겠습니다. 스프링 시큐리티에서는 @Bean으로 등록된 AuthenticationProviderAuthenticationManager에 자동으로 추가되지 않을 수 있습니다. 따라서 명시적으로 추가하지 않으면 기대하는 구조가 생성되지 않을 수 있습니다.

핵심 요약:

  1. AuthenticationProvider 등록:

    • @Bean으로 등록된 객체는 스프링의 애플리케이션 컨텍스트에 들어가지만, 이것이 자동으로 ProviderManager의 리스트에 추가된다는 보장은 없습니다.
    • http.authenticationProvider() 메서드를 사용해 각 AuthenticationProvider를 명시적으로 추가할 필요가 있습니다.
  2. ProviderManager 구조:

    • AuthenticationManagerBuilder를 사용하여 AuthenticationProvider를 추가하면, 이들이 ProviderManager의 리스트에 포함됩니다.
    • ProviderManagerparentchild 구조를 가질 수 있으며, child는 특정 인증 시나리오별로 특별히 구성된 ProviderManager로 취급됩니다.
  3. 설정 방식 예시:

    • securityFilterChain 메서드 안에서 AuthenticationManagerBuilder를 사용해 각 AuthenticationProvider를 추가하여 명시적으로 관리하세요.

아래 링크에서 관련 내용을 확인할 수 있습니다:

  1. SecurityConfig.java 에서 AuthenticationManager 부분에 대한 질문입니다.

    • AuthenticationManagerAuthenticationProvider의 사용 방법에 관한 구체적인 설명과 설정 방법을 다룹니다.
  2. 커스텀 provider와 시큐리티의 provider 함께 사용하기

    • 여러 AuthenticationProvider를 한 번에 사용할 때 고려해야 할 사항들을 다룹니다.

이 설명을 통해 @Bean을 사용하는 방법과 Spring Security의 인증 프로세스에 대한 이해를 높일 수 있기를 바랍니다.

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

duckis-j님의 프로필 이미지
duckis-j

작성한 질문수

질문하기