accesstoken(6)
-
Netflix Clone Project 를 시작하며
프로젝트 개요 프로젝트를 시작하게 된 이유는 React와 Tailwind css로 된 clone 사이트를 찾다가 아래 강좌를 보고 UI는 구성하게 되었습니다. https://www.youtube.com/watch?v=ATz8wg6sg30 하지만 Backend는 Spring Security 와 JWT 를 사용하여서 자체 구축 하였습니다.다른 예제에는 Refresh Token 갱신까지 다루었지만 본 프로젝트에서는 서버에서는 지정한 토큰만료시간에 맞춰 로그아웃 처리하도록 하였다. Requirements [TMDB]: https://www.themoviedb.org/?language=ko 사이트 인증키 발급을 받아야 합니다. 본 예제에서 사용되는 영화 정보 및 이미지 정보는 TMDB API를 통하여서 구현이 되..
2022.12.26 -
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 -
AccessToken 재발급 테스트
앞에서 작성한 AcceeToken 재발급 코드에 대한 테스트 결과입니다. 테스트는 Postman을 이용하여 진행합니다. ※ Check Point AccessToken 재발급 테스트에서 아래의 4가지 사항을 확인 해야합니다. 1. 신규 AccessToken 발급 여부 확인 AccessToken 재발급 테스트는 사용자가 사이트에 접속해서 사용중이라고 가정하고 Postman에서 임의의 페이지를 호출하여서 재발급 테스트를 진행한다. 아래의 그림을 보면 /api/user 라는 페이지를 호출 하게 되면 필터에서 앞에서 작성한 코드 로직대로 AccessToken 재발급 프로세스를 거쳐서 토큰을 재발급 하게 된다.
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