-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
soojinleed
committed
Jul 11, 2024
1 parent
f11b19a
commit 701bb20
Showing
1 changed file
with
49 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# 240711 Refresh Token RTR 방식 | ||
|
||
## Issue | ||
|
||
창을 계속 띄워두는 경우가 많은 서비스에서, Refresh Token이 만료되면, 매번 새로 로그인을 해야함 | ||
|
||
## 기본 Refresh Token 방식 | ||
|
||
- Refresh Token(RT)을 사용하여 새로운 Access Token(AT)만 발급 | ||
- 따라서 /oauth/token?grant_type=refresh_token 발급 시 access_token만 reissue 해주고 refresh_token은 reissue/renew X | ||
- Spring Security 에서는 기본 Refresh Token 방식 사용 | ||
|
||
``` | ||
- 장점 | ||
- RT가 탈취되어도 expire 되면 다시는 AT 발급 못 받음 | ||
- 단점 | ||
- RT가 만료될 때마다 다시 로그인 해야함 | ||
``` | ||
|
||
## RTR 방식 | ||
|
||
RT로 AT와 RT 모두 재발급 | ||
|
||
``` | ||
- 장점 | ||
- RT를 계속 재발급 받아 로그인 상태를 유지할 수 있음 | ||
- 단점 | ||
- RT 탈취 시 계속!! AT를 재발급 받을 수 있음 | ||
``` | ||
|
||
## RTR 방식에서 Refresh Token 탈취 Case | ||
|
||
### Case 1 | ||
|
||
1. 도둑이 RT 탈취 | ||
2. 주인이 AT 만료로 (RT로 AT 재발급 or 로그인으로 AT 재발급) | ||
3. 도둑 RT 무효화 | ||
|
||
### Case 2 ⭐️ | ||
|
||
1. 도둑이 RT 탈취 | ||
2. 도둑이 먼저 RT로 AT 발급 (→ RT도 Reissue) | ||
3. 주인 RT 무효화로 RT 사용 불가 | ||
ㄴ 이 때 주인이 다시 로그인으로 RT Reissue | ||
4. 도둑 RT 무효화 | ||
|
||
## 구현 | ||
|
||
Spring Security에서는 기본 Refresh Token 방식을 지원하기 때문에 Custom 해서 사용 필요! |