Redis(5)
-
Spring Data CrudRespository 이용한 CRUD 예제
Redis 에 사용자 정보를 저장, 조회, 수정, 삭제하는 예제입니다. 프로젝트 구조는 아래와 같습니다. User.java import java.io.Serializable; @RedisHash("user") @Data @Builder @AllArgsConstructor @NoArgsConstructor public class User implements Serializable { private static final long serialVersionUID = 664865927712847110L; @Id private Long id; @Indexed private String userId; private String password; private String email; public User(Strin..
2021.07.04 -
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 -
프로젝트 소개 및 설정
프로젝트 설정은 메이븐 모듈로 api-server, auth-server로 생성합니다. api-server는 쇼핑몰로 예를 들면 쇼핑몰 구현을 위한 API 연동을 위한 프로젝트라고 생가하면 됩니다. api-server에서는 Token의 발급, 재발급, 폐기 기능을 구현하지 않습니다. auth-server는 사용자 등록, 토큰의 발급, 재발급, 토큰 폐기를 관리합니다. 위와 같이 나눈 이유는 보안적인 측면과 MSA 서비스 구현시 기능의 중복을 피할 수 있기 때문입니다. 아래 그림은 프로젝트 구조입니다. 프로젝트 설정 완료 후 auth-server 실행 후 테이블 생성 및 데이터 확인을 합니다. 테이블은 Entity Class 기반으로 자동 생성되게 되어 있습니다. H2DB 접속 브라우저에서 http://l..
2021.06.27 -
Token Life Cycle And Cookie
예제를 시작하기 앞서 토큰의 생명주기와 쿠키에 대한 설명을 하려고 한다. 토큰은 사용자가 로그인을 하고 사이트 접속 유무에 따라서 토큰의 발급, 재발급, 만료를 관리하게 된다. 토큰을 관리하는 방식은 여러 가지가 있지만 예제에서는 쿠키를 이용하여서 토큰의 정보를 관리하게 된다. 01. Token AcessToken AccessToken은 JWT를 이용하여 발급하게 된다. 아래 그림을 보면 Token의 구조에 대해 알 수 있을 것이다. 위의 그림에서 볼 수 있는지 AccessToken에는 사용자의 데이터도 포함되어 있다. 보통은 AccessToken은 만료 시간 설정을 짜게 한다. 이유는 암호화가 되어있긴 하지만 Token을 탈취당할 수도 있기 때문에 짧게 설정한다. 대신에 다음에 설명할 RefreshTo..
2021.06.27