refreshtoken(6)
-
Axios Interceptor 를 이용한 토큰 갱신 및 권한 처리
토큰의 갱신 및 권한의 체크는 Axios Interceptor를 이용하여서 처리한다. 토큰 갱신 로그인을 하게 되면 서버에서는 AccessToken과 RefreshToken을 발급하게 됩니다. 프로젝트에서는 테스트를 위해서 AccessToken의 만료 시간은 2분 RefrshToken의 만료 시간을 5분으로 설정하였습니다. 토큰 업데이트 프로세스 1. Reqeust Header AccessToken, 사용자 이름을 설정하여서 Back-end API를 호출한다. 2. Back-end의 JwtFilter에서는 AccessToken의 유효성 체크 후 Token이 만료된 경우 새로 발급된 AccessToken을 Response Header에 포함하여서 결과 메시지와 함께 전송한다. 3. Axios Interce..
2021.12.12 -
RefreshToken 재발급 테스트
앞에서 작성한 로그인 코드에 대한 테스트 결과입니다. 테스트는 Postman을 이용하여 진행합니다. AccessToken 재발급 테스트와 마찬가지로 사용자가 사이트에서 활동 하고 있다는 가정하에 임의의 컨테츠 페이지를 호출 합니다. ※ Check Point 로그인 테스트에서 아래의 4가지 사항을 확인 해야합니다. 1. RefreshToken 재발급 확인 2. Redis 서버 재발급 Refresh Token 정보 생성 확인 01. 페이지호출 02. Redis 서버 재발급 Refresh Token 정보 생성 확인
2021.07.03 -
RefreshToken 재발급 프로세스
RefreshToken의 역할은 AccessToken이 만료되었을 때 AccessToken 재발급 역할을 하게 된다. RefreshToken의 키 정보는 쿠키, h2db, Redis Server에 저장이 된다. 아래 그림은 RefreshToken 재발급 프로세스 이다. JwtFilter // RefreshToken 재발급인 경우 if (isValidAccessToken && !isValidRefreshToken) { // RefreshToken 재발급 refreshToken = reIssueRefreshToken(accessToken); // RefreshToken 쿠키 생성 CookieUtil refreshTokenCookieUtil = new CookieUtil(); httpServletRespons..
2021.07.02 -
AccessToken 재발급 프로세스
AccessToken 재발급은 앞에서 설명한 대로 만료시간을 짧게 설정하기 때문에 로그인을 자주 요청할 수 있게 된다. 이를 보완하기 위하여 AccessToken 이 만료되고, RefreshToken 이 유효하다면 사용자가 사이트를 이용하는 동안에 서버에서 자동으로 AccessToken을 재발급 함으로써 로그인 없이 사이트를 이용할 수 있도록 한다. 아래 그림은 AccessToken 재발급의 시퀀스다이어그램 입니다. JwtFilter // AccessToken 재발급인 경우 if (!isValidAccessToken && isValidRefreshToken) { // AccessToken 재발급 accessToken = reIssueAccessToken(refreshToken); // 쿠키 생성 Cook..
2021.06.28 -
로그인 테스트
앞에서 작성한 로그인 코드에 대한 테스트 결과입니다. 테스트는 Postman을 이용하여 진행합니다. 로그인 테스트 진행 전에 User권한을 가진 사용자를 생성합니다. ※ Check Point 로그인 테스트에서 아래의 4가지 사항을 확인 해야합니다. 1. AccessToken, Refresh Token 정상 생성 확인 2. userCookie, accessTokenCookie, refreshTokenCookie 정상 생성확인 3. USER 테이블에 token 컬럼 업데이트 확인 4. Redis 서버에 Refresh Token 정보 생성 확인 01. 사용자 생성 사용자 생성이 정상적으로 되었는지는 DB정보를 확인합니다. 위의 그림에서 보면 username이 roopy인 사용자가 생성된 것을 확인할 수 있습니..
2021.06.27 -
로그인 프로세스
사용자 로그인에 대한 로직을 살펴보도록 하겠습니다. 아래 시퀀스 다이어그램을 통해서 전체적인 로직을 확인 해보도록 하겠습니다. JwtFilter 로그인시 발급된 토큰 및 쿠키 정보가 없기 때문에 로직 수행없이 LoginController 의 POST /signin 을 수행하게 됩니다. LoginController.signin package com.roopy.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.roopy.crypto.AES256Cipher; import com.roopy.jwt.JwtFilter; import com.roopy.security.jwt.payload.request.LoginRequest; imp..
2021.06.27