Authentication 내의 정보
principal
credentials
Authorities
Authentication(인증)
비밀번호를 안전하게 저장할 수 있도록 단방향 변환을 수행
PasswordEncoder 를 사용해서 저장하는 비밀번호는 인증 시점에 사용자가 입력하는 비밀번호와 비교하는 용도로 사용
서블릿 인증에서 사용하는 스프링 시큐리티의 주요 아키텍처 컴포넌트
SecurityContextHolder
SecurityContext
GrantedAuthority
AuthenticationManager
ProviderManager
AuthenticationManager 구현체
ProviderManager는 동작을 AuthenticationProvider List에 위임함
AuthenticationProvider
AuthenticationProvier는 각 구현체의 authenticate() 메서드에서 정의된 특정 유형에 따른 인증을 수행
ProviderManager에 AuthenticationProvider를 여러 개 주입 가능
각 AuthenticationProvider는 인증 성공, 실패 및 결정 할 수 없음을 나타낼 수 있고, 나머지 AuthenticationProvider가 결정할 수 있도록 전달한다.
AuthenticationProvider 마다 담당하는 인증 유형이 다름
예시
사용자 이름과 암호를 통해 올바른 이름 및 암호인지 확인하기 위한 UserDetailService가 호출되고, 사용자가 인증되면 SecurityContext가 세션에 저장된다.