[ STUDY ]/Spring Boot

[ JWT를 활용한 Spring Security ] Refresh Token?Access Token?

김강니 2024. 9. 20. 22:21

Refresh Token?

  • 유효기간이 길다
  • Access Token이 만료되어 갱신될 때만 사용한다.
  • 재발급에 관여하는 토큰

 

Access Token?

  • 유효기간이 짧다
  • API 통신에 사용된다.
  • 접근에 관여하는 토큰

 

왜 이렇게 토큰을 두개로 나눌까?
JWT는 탈취의 위험성이 있다!!
토큰을 탈취당하면 탈취한 사람이 특정 권한에 대한 인증을 통과할 수도 있다....서버는 실제 주인과 탈취한 사람을 구분 못함

그래서 토큰의 유효기간을 짧게 두는게 보안상 좋은데 유효기간이 짧으면 유효시간마다 로그인을 다시해야한다.
이런 문제를 해결하기 위해 Access Token과 Refresh Token을 나눠두는 것!

 

 

토큰 발급과 인증 방식

1. 로그인시에 서버가 Access Token과 Refresh Token을 동시에 발급

2. 서버는 Refresh Token은 DB에 저장

3. 클라이언트는 Refresh Token과 Access Token 모두를 쿠키나 웹 스토리지에 저장

4. 인증이 필요한 API요청을 하고자 할때 토큰을 검사

case 1: Access Token과 Refresh Token 모두 만료 -> Error(재로그인 필요)

case 2: Access Token만 만료 -> Refresh Token을 검증하고 Access Token 재발급
* 클라이언트로부터 받은 Refresh Token과 DB에 저장된 Refresh Token이 일치하는지 확인 후 Access Token 발급

case 3: Refresh Token만 만료 -> Access Token을 검증하고 Refresh Token 재발급
* Access Token이 유효하다는 것은 이미 인증된 것이므로 바로 Refresh Token 재발급

case 4: 둘 다 유효 -> 정상

 

5. 로그아웃시에는 Access Token과 Refresh Token 모두 만료시킴

 

참고했음⬇️⬇️

https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-Access-Token-Refresh-Token-%EC%9B%90%EB%A6%AC-feat-JWT

 

 

앞으로 구현할 JWT인증방식 흐름

좌: 기존에 구현한 JWT인증방식 / 우: 이제 구현할 JWT인증방식

 

 

진짜 처음해보는 거라 Zㅣwhs 막막하고 무서운디....

일단 한다는 마인드