인증된 사용자 정보인 Principal을 Authentication에서 관리하고
Authentication을 SecurityContext(Authentication 객체가 저장되는 보관소)가 관리하고
SecurityContext는 SecurityContextHolder(SecurityContext 저장을 위한 ThreadLocal 를 갖고 있는 객체)가 관리한다.

즉 SecurityContextHolder란 Authentication을 담고 있는 Holder라고 정의할 수 있다.
기본적으로 ThreadLocal을 사용한다.
ThreadLocal : 한 쓰레드 내에서 사용하는 공용 저장소
즉 ThreadLocal을 사용해서 Authentication을 한 쓰레드 내에서 공유가 가능
쓰레드가 달라지면 제대로 된 인증 정보를 가져올 수 없다.
