현재 로그인한 사용자의 정보를 담고 있는 객체
Spring Security에서 로그인 인증 성공 후 Principal을 SecurityContextHolder에 저장
필요 시 @AuthenticationPrincipal을 통해 사용 가능
Spring Security에서 인증 처리 시 내부적으로 사용
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
UserDetails를 구현한 클래스
Spring Security에서 기본적으로 제공하는 인증 방식
인증 정보만 포함되어 있음 (비밀번호, 권한 등)
유저 정보를 별도로 다시 조회해야 함
보안 관련 제공 기능 사용 가능
보안과 비즈니스 로직 분리
높은 확장성과 재사용성: Spring Security 기능 연동
직접 만든 구현체
ex)WebtyUser
도메인에서 사용하는 유저 정보가 모두 담겨있음
추가적인 DB 조회 불필요
인증 후 매번 추가적인 DB 조회 방지 가능