본문 바로가기
스파르타 내배캠

[TIL] #40. AccessToken vs. RefreshToken

by saemsaem 2024. 6. 20.


 

 [ JWT ] 

: User의 신원이나 권한을 결정하는 정보를 담고 있는 데이터 조각
  - 비밀키로 토큰을 암호화하여 인증하는 방식을 사용하기 때문에, 클라이언트와 서버는 토큰을 사용해서 안전하게 통신할 수 있다. 

그러나 토큰을 탈취 당했을 경우, 탈취한 사람이 토큰을 이용하여 인증을 통과할 수 있기 때문에
토큰의 유효기간이 필요하다.

유효기간을 너무 짧게 설정하면 사용자가 로그인을 자주 해야 하므로 불편하고,
유효기간을 길게 설정하면 보안 위험이 있기 때문에
유효기간이 다른 2개의 토큰(Access Token과 Refresh Token)을 두는 방법으로 문제를 해결할 수 있다. 

 

Access Token

: 특정 API에 접근할 수 있도록 임시로 권한을 부여하는 토큰

Refresh Token

: Access Token이 만료되었을 때, 새로운 토큰을 발급받기 위해 사용 (토큰 교환)

 


 

 [ Token의 흐름 ] 

1. 로그인 > Access Token과 Refresh Token을 발급 / 클라리언트는 이 두 토큰을 로컬에 저장한다.
2. API 요청 시 > Access Token을 함께 전달한다.
3. Access Token이 만료되면 > 사용자는 권한이 사라지고, 서버는 401에러를 통해 토큰이 만료되었음을 알 수 있다.
    > 토큰 교환 API에 Refresh Token을 전달하여 요청하고 (헤더에 Refresh Token을 넣어 API 재요청)
    > 새로운 Access Token을 발급한다.
4. Refresh Token도 만료되었다면 > 재로그인을 유도한다. 



'스파르타 내배캠' 카테고리의 다른 글

내일배움캠프 Java 5기 마무-리  (4) 2024.09.05
[TIL] #41. H2 데이터베이스  (0) 2024.07.01
[TIL] #39. 회원가입 구현  (0) 2024.06.20
[TIL] #38. Validation  (0) 2024.06.18
[TIL] #37. MockMvc  (0) 2024.06.18