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

kyb1208tg님의 프로필 이미지

작성한 질문수

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

인증 관리자 - AuthenticationManager - 2

provider가 선택되는 정확한 기준을 잘 모르겠습니다

작성

·

53

·

수정됨

0

두번째 방식이 CustomProvider에 의해 처리가 되는 것이 이해가 되지 않습니다.
첫번째 방식과 단지 CustomProvider를 추가한 것만 다르다고 생각하는데 이로 인해 해당 CustomProvider가 선택된것인가요?
아니면 Dao방식은 parent에 존제하기 때문에 현재 list에 존제하는 custom방식이 채택된거라고 이해하면 될까요?

답변 2

0

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

기본 ProviderManger 에는 AnonymousAuthenticationProvider 와 CustomProvider 가 저장되어 있습니다.

여기서 AnonymousAuthenticationProvider 는 해당 인증의 요건에 부합하지 않아 스킵되고 그 다음 CustomProvider 가 선택되어 진행하게 됩니다.

만약 이 두개의 객체 모두 요건이 부합하지 않으면 parent 에 있는 DaoAuthenticaionProvider 가 실행됩니다.

0

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

스프링 시큐리티에서 다양한 AuthenticationProvider를 사용할 때 어떤 것이 먼저 선택되는지에 대한 질문이군요. 관련된 질문과 답변을 찾았습니다. 이를 통해 이해를 도울 수 있을 것 같아요.

  1. CustomAuthenticationProvider 질문입니다.

    • CustomAuthenticationProvider를 추가한 경우, DaoAuthenticationProvider는 더 이상 사용되지 않고 CustomAuthenticationProvider를 통해 사용자 인증이 진행됩니다.
    • 스프링 시큐리티에서 기본적으로 제공하는 DaoAuthenticationProvider를 사용해도 무방하지만, 특별한 인증 과정을 거쳐야 할 경우 CustomAuthenticationProvider를 구현해야 합니다.
  2. Provider 선택 문의

    • 기본적으로 스프링 시큐리티가 초기화될 때 DaoAuthenticationProvider가 등록됩니다.
    • AbstractJaasAuthenticationProvider 등 다른 AuthenticationProvider를 사용하려면, 해당 provider를 등록하도록 인증 방식을 설정해야 합니다.
    • 여러 인증 방식이 동시에 설정되어 있을 경우, 스프링 시큐리티가 조건을 검사한 뒤 적합한 인증 방식을 선택합니다.
  3. Security 듣는 중 드리는 질문

    • CustomAuthenticationProvider를 통해 사용자가 정의한 인증 로직을 사용할 수 있습니다.
    • Authentication 객체를 새로 생성하여 인증 후 정보를 저장합니다.
    • 인증 전, 후의 생성자가 다르기 때문에 새로운 Authentication 객체를 생성하는 것입니다.

위 내용을 참고하여 설명드리자면, 스프링 시큐리티는 등록된 AuthenticationProvider 리스트를 순회하면서 각 AuthenticationProvider의 supports 메서드를 호출해 처리할 수 있는지 확인합니다. 먼저 CustomAuthenticationProvider가 처리할 수 있다고 판단되면, 이후의 DaoAuthenticationProvider는 실행되지 않습니다.

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