Authentication은 인증된 결과만 저장하는 것이 아니고, 인증을 하기 위한 정보와 인증을 받기 위한 정보가 하나의 객체에 동시에 들어 있다. 왜냐하면, 인증을 제공해줄 제공자(AuthenticationProvider)가 어떤 인증에 대해서 허가를 해줄 것인지 판단하기 위해서 직접 입력된 인증을 보고 허가된 인증을 내주는 방식이기 때문이다. 그래서 AuthenticationProvider는 처리 가능한 Authentication에 대해 알려주는 support 메소드를 지원하고, authenticate()에서 Authentication을 입력값과 동시에 출력값으로도 사용한다.
Authentication을 구현한 객체들은 일반적으로 Token(버스 토큰과 같은 통행권)이라는 이름의 객체로 구현된다. 그래서 Authentication의 구현체를 인증 토큰이라고 불러도 좋다.
Authentication 객체는 SecurityContextHolder를 통해서 세션이 있건 없건 언제든 접근할 수 있도록 필터체인에서 보장해준다.
참고