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