카테고리 없음
jwt refresh 토큰 설계
흰색남자
2022. 6. 30. 12:01
로그인 시 username과 password를 db의 정보와 비교해서 정상적인 유저이면, jwt를 발급해줌,
1. 일반 access 토큰을 발급해서 헤더에 넣어준다.
2. refresh 토큰을 발급받아 헤더에 같이 넣어준다.
2-1 refresh 토큰은 다른 db에 담아두2-3어야함. << { value : refresh 토큰 + key : 유저 이름 }으로 레디스에 담아둬야함.
이후 토큰으로 인증 함 >> SecurityContextHolder에 인증된 정보를 담아주고 AuthenticationSuccessHandle 실행해줌.
시간이 지나 jwt가 만료되면 refresh 토큰으로 다시 토큰을 발급받아야함.
토큰을 발급받는 과정은 다음과 같다.
1. 클라이언트가 만료된 jwt토큰을 서버에 전송하여 인증 요청을 한다.
2. 서버는 토큰이 만료되었고, 거절한다.
3. 클라이언트는 refresh 토큰을 예전에 header를 통해 넘겨받았으므로, refresh토큰으로 토큰을 재발급 받아야함.
4. 클라이언트는 특정 url을 통해 토큰 재발급을 요청한다.
5. 클라이언트는 서버에 { refresh token, username } 을 특정 url로 전송하여 토큰을 재발급 받는다.
6. 재발급된 토큰을 가지고 데이터를 다시 요청한다.