React/React graduation project 기록

Refresh Token 유무 JWT 인증 과정 비교&차이점

stylish-code 2023. 11. 21. 19:25
refresh token 없을 때의 기본 JWT 인증 과정

● 프로세스 설명

1. 사용자 로그인 : 사용자가 React 앱에서 로그인을 시도합니다.
2. 서버 응답 : Spring 서버는 사용자를 인증하고, 유효한 경우 JWT 토큰을 발급하여 응답합니다.
3. React에서 토큰 저장 : React앱은 받은 JWT 토큰을 안전하게 저장합니다. 일반적으로 브라우저의 로컬 스토리지 또는 쿠키를 활용합니다.
4. API 요청과 토큰 전달 : 사용자가 보호된 리소스에 접근하려면, React 앱은 API 요청 시 저장한 토큰을 함께 서버에 전달합니다.
5. 서버에서 토큰 검증 : Spring 서버는 받은 토큰을 검증하고, 유효하다면 요청에 응답합니다.
6. 토큰 디코딩 및 화면 표시 : React 앱에서는 받은 토큰을 디코딩하여 사용자 정보를 추출하고, 화면에 표시합니다.
refresh token & access token 과 함께
JWT 인증 과정
1. 사용자 로그인 

● 사용자가 로그인을 시도하면, 서버는 사용자를 인증하고, Refresh Token과 함께 Access Token을 발급합니다.

2. 토큰 저장

React 앱은 받은 Refresh Token을 안전하게 저장합니다. 일반적으로 브라우저의 로컬 스토리지 또는 쿠키를 활용합니다.

3. Access Token을 사용한 API 요청

● React 앱이 보호된 리소스에 접근하려면, 저장한 Access Token을 함께 서버에 전달합니다.

4. Access Token 검증

Spring 서버는 받은 Access Token을 검증하고, 유효하다면 요청에 응답합니다. 이때, Access Token이 만료되었다면 새로운 Access Token을 발급하는 대신, Refresh Token을 사용하여 새로운 Access Token을 발급하는 과정이 이루어집니다.

5. 만료된 Access Token 처리

● Access Token이 만료되면, 클라이언트는 새로운 Access Token을 요청하지 않고는 계속해서 보호된 리소스에 접근할 수 없습니다.

6. Refresh Token을 사용한 Access Token 갱신

클라이언트는 저장한 Refresh Token을 사용하여 새로운 Access Token을 요청합니다.

● 만료된 Access Token으로 보호된 리소스에 접근하려 할 때, Spring 서버는 클라이언트에게 Access Token이 만료되었음을 알려줍니다.

7. 새로운 Access Token 발급

  Spring 서버는 유효한 Refresh Token을 받으면, 새로운 Access Token을 발급하고 이를 클라이언트에게 응답합니다.

8. 새로운 Access Token으로 API 요청

클라이언트는 받은 새로운 Access Token을 사용하여 다시 보호된 리소스에 접근합니다.

 

이렇게 함으로써, Access Token이 만료되어도 Refresh Token을 사용하여 새로운 Access Token을 발급받아 지속적으로 보호된 리소스에 접근할 수 있습니다. 이러한 과정은 보안 및 사용자 경험을 고려한 JWT 기반의 인증 시스템에서 매우 일반적으로 사용되는 방식 중 하나입니다.