inflearn logo
강의

講義

知識共有

チャネルトークの面接官が直接教えるCS面接対策 - ネットワーク&ウェブ編

JWTはどのような構造で、なぜアクセストークンとリフレッシュトークンを分けるのでしょうか? ⭐️⭐️⭐️

리프레시 토큰

解決済みの質問

12

Cola

投稿した質問数 43

1

리프레시 토큰이 jwt방식이 아닌 Opaque방식도 한다고 들었는데
실무에서 둘의 선택 기준이 어떻게 되는지 알 수 있을까요?

어떤 방식을 더 선호하는지 궁금합니다.

네트워크 websocket https dns computer-science

回答 1

1

jayon0927

안녕하세요, Cola님!


네, Refresh Token은 꼭 JWT로 만들 필요는 없습니다. 오히려 실무에서는 Refresh Token을 Opaque Token으로 두는 경우도 꽤 많습니다.


둘의 선택 기준은 결국 Refresh Token을 얼마나 서버에서 통제하고 싶은가에 가깝습니다.

JWT로 만들면 서버가 별도 저장소를 조회하지 않고도 토큰 자체를 검증할 수 있다는 장점이 있습니다. 다만 Refresh Token은 Access Token과 달리 매 요청마다 사용하는 토큰이 아니고, Access Token을 재발급할 때만 사용합니다.

그래서 Refresh Token에서는 JWT의 stateless한 장점이 생각보다 크지 않은 경우가 많습니다.


반대로 Opaque Token을 사용하면 서버에 해당 토큰과 세션 정보를 저장해두고, 로그아웃이나 강제 만료가 필요할 때 바로 폐기할 수 있습니다. Refresh Token Rotation이나 탈취된 토큰의 재사용 여부를 관리하기도 조금 더 편하고요 ㅎㅎ


그래서 저는 특별한 이유가 없다면 보통

  • Access Token: JWT

  • Refresh Token: Opaque Token

조합을 먼저 생각하는 편입니다.


물론 Refresh Token도 JWT로 사용하는 서비스는 많고, 잘못된 방식은 아닙니다. 다만 "토큰이니까 둘 다 JWT로 만든다"기보다는, Refresh Token까지 stateless하게 가져가야 할 이유가 있는지를 보고 결정하는 게 좋습니다.


결국 JWT와 Opaque 중 어떤 게 더 좋은가보다는, 토큰을 서버에서 즉시 폐기하거나 세션 단위로 관리해야 하는 요구사항이 있는지를 기준으로 선택하시면 좋을 것 같습니다!!

1

Cola

명확하게 이해했습니다 답변 감사합니다!

강의에서 진행한 프로젝트

0

15

2

localhost : 3000 클릭하면 페이지를 로드하지 못함

0

31

2

클로드코드에서 진행할때 계속적인 질문이 뜹니다.

0

27

2

"도커 이미지 생성" 18:59부분에 텍스트 파일로 정리 된거는 어디서 볼수 있나요?

0

30

1

aws기출문제 파트 문제 자료가 안보여서 질문드립니다

0

22

2

git 설치

0

39

1

링크 관리 기능 구현 실패

0

39

1

LAN, WAN, Braodcast

0

40

2

문제점

0

42

2

진도율 관련

0

34

1

IocpObject가 없어질 수 있는 이유에 대한 질문입니다.

0

54

2

npm 설치가 잘 안됐습니다. 보안 이슈인 것 같은데, 어떻게 해야 하나요?

0

52

2

VS CODE 설치 시 관리자 권한으로 해야하는지

0

34

1

Git 버젼 상이

0

41

2

코드 줄바꿈

0

52

2

수동으로 계산하기 부분에서 질문

0

38

1

vs code 프로그램 동기화 가능여부

0

50

1

ALU 강의에서 질문

0

41

2

클로드 회원가입 전인데 perplexity 프로

0

59

2

supabase 설정하기 관련 문의사항이 있습니다.

0

63

2

비관적 락과 낙관적 락에서 임계 영역 질문 있습니다.

0

47

2

Git 설치 문의

0

57

2

권한 부여하기 accept edit on 모드 질문

0

66

2

파이프라이닝

1

80

1