- Sign-JWT 모델은 세션 대신 JWT를 사용하여 회원 가입 및 로그인 기능을 구현하며, 향후 스프링 시큐리티 필터에 적용하기 위한 기반을 마련합니다. 🚀
- 모델 설계는 유스케이스, 클래스, 시퀀스 다이어그램을 활용하여 사용자 상호작용, 데이터 구조, 시스템 흐름을 체계적으로 정의했습니다. 📐
- 로그인 시퀀스는 사용자 인증 후 DB에서 권한을 조회하고, JWT 서비스에서 액세스 및 리프레시 토큰을 생성하여 프론트엔드로 전달하는 과정을 포함합니다. 🔑
- 토큰 만료 시 리프레시 토큰을 사용하여 새로운 액세스 토큰을 발급받는 플로우를 설계하여 보안과 사용자 경험을 동시에 유지합니다. 🔄
- 실무 보안 강화를 위해 토큰 해킹 방지를 위한 캐시 저장 및 무효화 로직(예: Redis)이 필요하지만, 현재 테스트 코드에서는 생략되었습니다. 🛡️
- JWT 토큰은 액세스(1시간)와 리프레시(7일)로 만료 시간을 다르게 설정하며, 테스트를 위해 즉시 만료되는
DENY 타입도 정의했습니다. ⏰
- 토큰 생성 시 사용자 이름은
Subject에, 권한 정보는 Claims에, 만료 시간은 Expiration에 담아 JWT 빌더를 통해 문자열 토큰을 생성합니다. ✍️
- 만료된 토큰은 파싱 시
ExpiredJwtException을 발생시켜 토큰의 유효 기간이 지났음을 명확히 알 수 있도록 처리합니다. 🚨
- 모든 서비스 로직과 인터페이스 구현은 하나의 테스트 파일 내에 포함되어 있어, 전체 흐름을 쉽게 파악하고 테스트할 수 있도록 구성되었습니다. 🧪
- 다음 영상에서는 현재 설계 및 구현된 Sign-JWT 모델을 스프링 시큐리티 필터에 실제로 적용하는 방법을 다룰 예정입니다. ➡️
데브허브 | DEVHUB | Sign-JWT 모델 설계와 구현