Spring Security 4

Spring Security with JWT #4. Refresh token 관리 방안과 로그아웃

Spring Security with JWT #4 1. 의사결정 저번 포스트에서까지 Access token 과 Refresh token 의 구현에 대해서 알아 보았다. 이번 포스트에서는 Refresh token 에 대한 보안성 강화 전략과 로그아웃 시 서버에서 처리해주어야 할 것들에 대해 알아보려고 한다. Refresh token 관리 방안 및 보안성 강화 전략 Refresh token 은 Access token 의 만료 기간을 짧게 두고, Access token 이 만료될 때 마다 초기 로그인 시 발급한 Refresh token 으로 Access token 을 재발급 받아, Access token 이 탈취당했을 때를 보완하며, 또한 로그인 유지의 목적을 가진다. 하지만 Refresh token 이 탈취..

Spring Security 2021.11.04

Spring Security with JWT #3. Access token, Refresh token 구현

Spring Security with JWT #3 0. 들어가기 앞서 본격적으로 Spring boot + Spring Security + JWT library 를 이용한 access token 과 refresh token 을 구현해보도록 한다. 1. 환경 세팅 및 유저 엔티티 생성 프로젝트 구조 build.gradle plugins { id 'org.springframework.boot' version '2.5.3' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.dohyun' version = '0.0.1..

Spring Security 2021.11.04

Spring Security with JWT #2. Spring Security Architecture

Spring Security with JWT #2 0. 들어가기 앞서 본격적으로 auth0.com 에서 제공해주는 jwt implementation libarary 를 사용하여 jwt 를 구현하기 전에, 인프런의 백기선님의 강의를 참고하여 Spring Security Architecture 에 대해 divide-and-conquer 방식으로 이해를 돕고자 한다. 1. SecurityContextHolder 와 Authentication SecurityContextHolder : SecurityContext 제공, 기본적으로 ThreadLocal 을 사용한다. ThreadLocal 이란? Java.lang 패키지에서 제공하는 쓰레드 범위 변수, 즉, 쓰레드 수즌의 데이터 저장소이다. 같은 쓰레드 내에서만 ..

Spring Security 2021.11.04

Spring Security with JWT #1. 배경지식 및 의사결정

Spring Security with JWT #1 0. 들어가기 앞서 평소 세션에 기반한 인증과 토큰에 기반한 인증 모두 사용해보고, 구현해 보았지만 Spring Security 의 아키텍처 및 인증과 권한의 구조에 대하여 깊이 이해하고 사용한다는 느낌을 갖지 못하였다. 그러던 중, 회사의 새로운 프로젝트와 8월에 출전하는 공개SW 개발자 대회에서 JWT 를 이용한 인증 및 권한 시나리오가 필요하게 되었고, 이에 따라 전체적인 배경지식부터 의사결정, 그리고 설계 및 구현에 대하여 정리하고 문서화하고자 한다. 또한 이번 포스트 시리즈에서는 Spring Security 및 JWT 구현, Redis 를 이용한 Refresh token 구현 및 저장에 초점을 둘 것이기에, 인증 및 권한, 세션 기반 인증 및 토..

Spring Security 2021.11.04