투케이2K

75. (TWOK/LOGIC) [HTTP] JWT (Json Web Token) AccessToken (액세스 토큰) 과 RefreshToken (리프래쉬 토큰) 갱신 및 업데이트 본문

투케이2K 로직정리

75. (TWOK/LOGIC) [HTTP] JWT (Json Web Token) AccessToken (액세스 토큰) 과 RefreshToken (리프래쉬 토큰) 갱신 및 업데이트

투케이2K 2024. 10. 2. 20:06

[로직 정리]

정리 로직 : HTTP

상태 : [HTTP] JWT (Json Web Token) AccessToken (액세스 토큰) 과 RefreshToken (리프래쉬 토큰) 갱신 및 업데이트

 

[설 명]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : NodeJs

- 개발 툴 : VsCode

- 개발 기술 : JWT (Json Web Token) 인증 토큰

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[사전) JWT 간략 설명]
// --------------------------------------------------------------------------------------

1. JWT 란 클라이언트와 서버 사이에서 통신을 수행할 때 권한을 인증 하기 위해 사용하는 토큰입니다

2. JWT 구성 요소 : 

  - 헤더 (header) : 알고리즘 , 토큰 사용에 대한 정보 (ex: 어떠한 토큰을 사용할 것 인지)

  - 페이로드 (payload) : 전달하려는 정보 (사용자 ID, 토큰 발급일, 토큰 만료일, 기타 데이터 등)

  - 서명 (signature) : 서버가 발급해준 비밀키로 헤더 , 페이로드 를 암호화시켜 토큰을 변조하기 어렵게 만듦

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 정리]
// --------------------------------------------------------------------------------------

1. [클라이언트] >> [서버] 액세스 토큰 발급 요청 API 호출 수행 실시

  >> 클라이언트에서는 파라미터로 사용자 정보 ID , 폰 번호 등을 넘겨줌


2. [서버] 는 [DB] 를 조회해 사용자 확인 실시


3. [서버] 는 사용자가 맞는 경우 액세스 토큰 및 리프래쉬 토큰 발급 실시

  >> 리프래쉬 토큰은 사용자 정보 DB 테이블에 저장 수행 (추후, 토큰 갱신 처리 위함)


​4. [서버] 는 [클라이언트] 에 응답 , 액세스 토큰 (JWT) 반환 실시


​5. [클라이언트] 는 [서버] 에 액세스 토큰 (JWT) 을 가지고 필요한 데이터 요청 실시

  >> 헤더에 Bearer token 추가


​6. [서버] 는 헤더에 포함 된 액세스 토큰 파싱 후 (Bearer 문자열 제거) 액세스 토큰 유효성 검증 수행

  >> 토큰 만료 상태 및 사용자 정보 인증 확인


​7. [서버] 는 액세스 토큰 (JWT) 가 유효한 경우 , [클라이언트] 가 요청한 데이터를 반환 (response) 실시


8. [서버] 는 액세스 토큰 (JWT) 이 유효하지 않은 경우 , 403 접근 권한 에러 리턴 또는 DB 에 저장 된 리프래쉬 토큰을 사용해 액세스 토큰 재발급 후 헤더에 포함해서 리턴 수행

  >> 사전 로직 협의 필요 : 403 을 반환하는 경우는 클라이언트가 다시 액세스 토큰 발급 요청을 수행

  >> 사전 로직 협의 필요 : 헤더에 다시 갱신 토큰 리턴하는 경우는 클라이언트는 지속적으로 Response 헤더 토큰 확인 후 로컬에 최신 상태 저장 필요

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[JWT 개념 학습 참고 사이트]

https://blog.naver.com/kkh0977/222934042760?trackingCode=blog_bloghome_searchlist


[NodeJs - JWT Access Token 과 Refresh Token 생성 방법]

https://blog.naver.com/kkh0977/223312598939?trackingCode=blog_bloghome_searchlist


[NodeJs - JWT 유효성 검증 방법]

https://blog.naver.com/kkh0977/223311615955?trackingCode=blog_bloghome_searchlist


[NodeJs - JWT Access Token 과 Refresh Token 갱신 방법]

https://blog.naver.com/kkh0977/223312630682?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments