Spring Security
JWT
stophyeon
2024. 1. 29. 19:47
728x90
JWT 로그인 흐름
JWT로 로그인을 구현했을 때 과정을 알아보겠습니다.
처음으로 로그인 요청을 한 사용자는 DB에서 요청 정보가 맞는지 UsernamePasswordAuthentcationFilter를 통해 검증을 한 뒤에 JWT Token을 생성합니다. JWT Token 내부에는 accessToken과 refreshToken이 있습니다.
accessToken은 사용자가 요청을 보낼 때 Header에 담아서 보낸뒤 사용자의 인증에 사용하는 Token입니다.
refreshToken은 accessToken이 만료되었을 때 새로운 accessToken을 생성할 때 사용하는 Token입니다.
이 두개의 Token을 생성한 뒤에 정의한 JWTToken에 담아서 사용자에게 보내주는 방식으로 로그인을 처리합니다.
JWT 사용 클래스
JWT를 사용해서 로그인 처리를 하기 위해서는 만들어야 하는 Class들에 대해 알아보겠습니다.
1. Token Provider
2. JWT Filter
3. JWT DTO
JWT Provider
JWT Provider는 accessToken과 refreshToken을 생성하고, Token의 유효성을 검증하고,요청에 포함된 Token을 추출하고 Token에서 사용자의 정보를 추출하는 메서드 3개를 정의합니다.
사용자의 로그인 요청이 들어오면 JWT Provider를 통해서 accessToken,refreshToken 생성하는 코드는 아래와 같습니다
아래의 코드는 사용자 요청의 accessToken을 추출한뒤 Authentication객체를 반환하는 메서드입니다
다음 코드는 Token의 유효성을 검사하는 코드로 예외 케이스로는 토큰이 만료되었을 때, 다른 종류의 토큰이 들어왔을 때,JWT의 암호화 알고리즘이 다를 때, JWT가 담고있는 사용자 정보가 다를 때가 있습니다.
JWT Filter
JWT Filter에서는 사용자의 요청에서 JWT를 추출하는 메서드가 있어야합니다
JWT DTO
JWT DTO는 accessToken과 refreshToken,Token의 type을 저장할 객체입니다.