인증(Authentication)
과 권한 부여(Authorization - 인가)
에 대한 이해이다. 인증(Authentication)
은 쉽게 말해서 '자신을 증명하는 것'이다.권한 부여(Authorization - 인가)
는 권한부여남에 의해서 자격이 부여된다.인가
혹은 권한 부여(Authorization)
라고 볼 수 있다.AuthenticationManager(인증 매니저)
라는 존재이다.AuthenticationManager
는 다양한 방식의 인증을 처리할 수 있도록 아래와 같은 구조로 설계되어 있다.ProviderManager
는 인증에 대한 처리를 AuthenricationProvider
라는 타입의 객체를 이용해서 처리를 위임한다.AuthenricationProvider(인증 제공자)
는 실제 인증 작업을 진행한다.UserDetailsService
라는 존재와 관련이 있다.UserDetailsService
인터페이스 구현체는 실제로 사용자의 정보와 사용자가 가진 권한의 정보를 처리해서 반환하게 된다.개발자가 스프링 시큐리티를 커스터마이징 하는 방식은 크게 AuthenricationProvider
를 직접 구현하는 방식과 실제 처리를 담당하는 UserDetailsService
를 구현하는 방식으로 나누어진다.
대부분의 경우에는 UserDetailsService
를 구현하는 형태를 사용하는 것만으로도 충분하지만, 새로운 프로토콜이나 인증 구현 방식을 직접 구현하는 경우에는 AuthenticationProvider
인터페이스를 직접 구현해서 사용한다.