Token Life Cycle And Cookie

2021. 6. 27. 00:27Spring Security/Spring Boot Jwt with JPA and Redis

반응형

예제를 시작하기 앞서 토큰의 생명주기와 쿠키에 대한 설명을 하려고 한다.

토큰은 사용자가 로그인을 하고 사이트 접속 유무에 따라서 토큰의 발급, 재발급, 만료를 관리하게 된다.

토큰을 관리하는 방식은 여러 가지가 있지만 예제에서는 쿠키를 이용하여서 토큰의 정보를 관리하게 된다.

01. Token

AcessToken

AccessToken은 JWT를 이용하여 발급하게 된다. 

아래 그림을 보면 Token의 구조에 대해 알 수 있을 것이다.

 

AccessToken구조

 

위의 그림에서 볼 수 있는지 AccessToken에는 사용자의 데이터도 포함되어 있다. 보통은 AccessToken은 만료 시간 설정을 짜게 한다. 이유는 암호화가 되어있긴 하지만 Token을 탈취당할 수도 있기 때문에 짧게 설정한다. 대신에 다음에 설명할 RefreshToken의 만료 시간을 길게 두어서 AccessToken의 재발급을 통하여서 보안의 안정을 가져간다.

 

RefreshToken

RefreshToken은 Redis 서버에 사용자 ID, 패스워드, 토큰 ID, 만료시간 정보를 생성하여서 저장하게 된다. RefreshToken의 사용용도는 AccessToken 재발급에 활용된다.

 

02. Token Life Cycle

한 가지를 예를 통하여 토큰의 생명주기에 대해 알아보도록 하자.

쇼핑몰 사용자가 23:00 최초로 로그인하고 23:05:20초까지 사이트에 머무른 후 사이트 활동을 하지 않고 23:12에 활동을 다시 시작하였다고 가정했을 때 토큰들이 어떻게 처리되는지 아래 그림을 통해 설명을 하도록 하겠습니다.

그리고 테스트를 위해서 AccessToken의 만료시간은 2분, RefreshToken 만료시간은 5분으로 설정하였습니다.

 

Token Life Cycle

① Log in 

사용자가 23:00 사이트에 로그인을 합니다.

로그인이 정상적으로 이루어지면 AccessToken, RefreshToken, userCookie, accessTokenCookie, refreshTokenCookie를 생성합니다.

 

② AccessToken 재발급

RefreshToken은 유효한 상태라면 2분 간격으로 AccessToken은 사용자의 로그인 없이 자동으로 AccessToken이 재발급되면서 로그인 상태를 유지하게 됩니다.

 

③ RefreshToken 만료시간

 

④ RefreshToken 재발급

AccessToken이 유효한 상태라면 사용자의 로그인 없이 자동으로 RefreshToken이 재발급되면서 로그인 상태를 유지하게 됩니다.

 

⑤ Token Expire

AccessToken과 RefreshToken이 만료되었기 때문에 사용자는 로그인을 해야 한다.

 

예제를 만들면서 많은 강좌와 블로그를 참고하였습니다.

다음에는 소스를 살펴보도록 하겠습니다.

 

그전에 Spring Security와 JWT의 기본개념에 대한 강좌 및 블로그를 아래 정리하였습니다.

Spring Security와 JWT의 자세한 내용을 알고 싶다면 아래 사이트를 참고하면 많은 도움이 될 거 같습니다.

 

[참고사이트]

Java Brains Spring Security 강의로서 15개 동영상이 있습니다.

https://www.youtube.com/watch?v=sm-8qfMWEV8&list=PLqq-6Pq4lTTYTEooakHchTGglSvkZAjnE 

Java Brains Spring Security

SilverNine 님의 Inflearn 무료 강좌 및 GitHub입니다.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-jwt/dashboard

 

[무료] Spring Boot JWT Tutorial - 인프런 | 강의

Spring Boot, Spring Security, JWT를 이용한 튜토리얼을 통해 인증과 인가에 대한 기초 지식을 쉽고 빠르게 학습할 수 있습니다., [사진] 본 강의는 Spring Boot, Spring Security를 이용해서 JWT 인증과 인가를 쉽

www.inflearn.com

https://github.com/SilverNine/spring-boot-jwt-tutorial/pulse

 

SilverNine/spring-boot-jwt-tutorial

Contribute to SilverNine/spring-boot-jwt-tutorial development by creating an account on GitHub.

github.com

  https://github.com/bezkoder/spring-boot-refresh-token-jwt

 

bezkoder/spring-boot-refresh-token-jwt

Spring Boot Refresh Token using JWT example - Expire and Renew JWT Token - bezkoder/spring-boot-refresh-token-jwt

github.com

 

 

반응형

'Spring Security > Spring Boot Jwt with JPA and Redis' 카테고리의 다른 글

AccessToken 재발급 테스트  (0) 2021.07.02
AccessToken 재발급 프로세스  (0) 2021.06.28
로그인 테스트  (0) 2021.06.27
로그인 프로세스  (0) 2021.06.27
프로젝트 소개 및 설정  (0) 2021.06.27