JWT

현재 진행하고 있는 프로젝트에서 로그인 로직을 Spring security와 JWT로 구현했다. 구현 중에 인증 예외와 JWT 관련 예외 처리를 분리하기 위해 많은 노력을 했는데 이 과정을 공유하고자 한다. 우선 로그인하지 않은 사용자가 허용되지 않은 API에 접근할때 발생하는 인증 예외의 메커니즘에 대해 살펴보자. 기본 인증 예외 처리 방법 SpringConfig 클래스에는 위의 사진과 같이 권한 설정이 되어있다. /api 로 시작하는 API로는 비 로그인 사용자가 접근할 수 없다. API를 호출하면 위와 같은 응답이 반환되도록 설정했다. 응답은 AuthenticationEntryPoint에서 커스터마이징했다. AuthenticationEntryPoint의 코드를 살펴보자. public class Re..
@Authentication을 통한 인증 유저를 가져오는 과정에서 겪은 문제와 제가 해결한 방법에 대해 공유하고자 합니다. @AuthenticationPrincipal 어노테이션의 사용법을 구글에 검색했을때, 많은 블로그에서 UserDetailsService를 구현한 CustomUserDetailsService의 loadUserByUsername 메서드에서 반환해준 값을 파라미터로 직접 받아 사용할 수 있다고 알려줬습니다. loadUserByUsername 메서드에서 반환하는 UserPrincipal 객체입니다. UserDetails를 구현하는 방식으로 만들었습니다. 전체 코드 중 일부를 가져온 것이기 때문에 '이런 객체를 반환하도록 만들었구나' 정도만 생각해주면 감사하겠습니다. 이제 Controller..
· Network
jwt를 통한 로그인을 구현하면서 조금 더 자세히 정리를 해보고 싶어졌다. JWT JWT는 JSON Web Token의 약자로써 세션에 사용자 데이터를 저장하는 전통적인 쿠키 세션 방식과 다르게 json 객체에 사용자 정보의 일부를 담는다. 기존 쿠키 세션 동작 방식과 문제점 쿠키 세션 방식을 사용하는 이유를 이해하기 위해선 HTTP 프로토콜의 특성을 이해할 필요가 있다. Stateless HTTP 프로토콜은 클라이언트와 서버의 통신이 끝나자마자 상태 정보를 잊어버린다. 예를 들어 USER1이 방금 전까지 서버와 통신을 했더라도 연결이 끊기자마자 USER1이 누구인지 까먹어버리고 다시 클라이언트의 정보를 요구하는 것이다. 페이지를 이동할때마다 내가 누구인지 확인하는 로그인 창이 뜨면 매우 귀찮을 것이다...
Jemlog
'JWT' 태그의 글 목록