

JwtAuthenticationFilter - OncePerRequestFilter
- Header에 토큰이 있는지 없는지 체크를 해서, 해당 토큰에 JWT토큰이 있다면 유효한지 검사후, UserNamePasswordAuthenticationToken을 Authentication에 담아서 반환을 해줍니다.
- 해당 유저가 맞는지 체크하는데 Extends를 OncePerRequestFilter를 사용했음으로, 필터가 중복으로 실행되어 리소스 낭비를 하는것을 막게된다.
public AuthenticationProvider authenticationProvider()
- DaoAuthenticationProvider에 UserDetailsService 타입 오브젝트로 위임.
- UserDetailsService는 UserDetails를 리턴합니다.
- UserDetails는 이름 이메일 전화번호같은 유저 프로필 정보를 저장하기 위한 용도입니다.
UserDetailsService && MangerDetailsService
- Database에서 식별키를 들고 해당 유저의 존재 여부를 파악합니다.
UsernamePasswordAuthenticationFilter ( AbstractAuthenticationProcessFilter )
- 사용자의 비밀번호와 ID(기록모아에서는 Email값)을 매칭 해서 Authenctication객체를 반환해준다.
JwtAccessDeniedHandler(accessDeniedHandler)
- 403 Forbidden handler
- 토큰은 정상이나, 해당 리소스 접근 권한이 없음
- 위 내용일때 핸들링 하는 CustomHandler
JwtAuthenticcationEntryPoint(authenticationEntryPoint)
- 401 Unauthorized
- 애플리케이션에 접근 권한자체가 없음
- 위 내용일때 핸들링하는 CustomHandler