Skip to content

Commit

Permalink
240711 Refresh Token RTR 방식
Browse files Browse the repository at this point in the history
  • Loading branch information
soojinleed committed Jul 11, 2024
1 parent f11b19a commit 701bb20
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions TIL/240711.md
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 해서 사용 필요!

0 comments on commit 701bb20

Please sign in to comment.