로그인 구조
스프링 프레임워크에서 로그인을 한다는 것은 authenticated가 true인 authentication 객체를 SecurityContext에 갖고 있는 상태를 뜻함
- 단, Authentication이 AnoymouseAuthenticationToken만 아니면 됨 → 인증X

스프링 시큐리티는 필터를 거치며 인증처리를 하게 되는데 필터 중간에 DelegatingFilterProxy 라는 필터를 만들어 메인 필터체인에 끼워넣고, 그 아래 다시 SecurityFilterChain 그룹을 등록하는 구조
인증(Authentication)
- SecurityContext 안에 있는 Authentication에 인증과 인가에 대한 정보가 들어가 있음
- Authentication은 인증된 결과만 저장하는 것이 아닌 인증을 하기 위한 정보와 인증을 받기 위한 정보가 하나의 객체에 동시에 존재함
- 인증을 제공해줄 제공자(AuthenticationProvider)가 어떤 인증에 대해서 허가를 내줄 것인지 판단하기 위해서는 직접 입력된 인증을 보고 허가된 인증을 내주는 방식

- Credentials : 인증을 받기 위해 필요한 정보, 비번등 (input)
- Principal : 인증된 결과. 인증 대상 (output)
- Details : 기타 정보, 인증에 관여된 된 주변 정보들
- Authorities : 권한 정보들,
인증 제공자(AuthenticationProvider)

인증 제공자는 기본적으로 Authentication을 받아서 인증을 하고 인증된 결과를 다시 Authentication 객체로 전달함