JWT 3

동일 계정의 타 환경 중복 로그인 제한하기(Jwt + Redis 그리고 다중 탭 고려)

동일한 계정으로 중복으로 로그인하는 상황을 제어해야 하는 요구사항이 있어 적용해봤다.일반적인 로그인 성공/실패 처리가 아니라, 이미 로그인된 계정이 다른 환경에서 다시 로그인할 경우 기존 로그인 상태를 어떻게 처리할 것인지를 결정해야 했다.동시 로그인 제어 기능을 붙이면서 마주한 JWT의 한계핵심은 단순 인증이 아니라 "현재 이 계정이 로그인 중인가?"를 서버가 판단할 수 있어야 했다.JWT 기반 인증은 일반적으로 AccessToken으로 매 API요청을 인증하고, 토큰의 서명과 만료 시간을 검증하는 구조이다. 그니까 원래 토큰 인증이라고 하면 Stateless라고 해서 "서버가 세션 상태를 안 들고도 인증을 할 수 있다"는 것이 장점이자 전제인 인증 방법인 것이다. 근데 동시 로그인을 금지해야 한다면,..

Backend 2026.01.02

로그인 이전에도 접근 허용했던 API가 인증 단계에서 막히는 문제 해결하기

내가 열심히 만든 코드도 1달만 지나도 기억이 나지 않음을 자책하면서 정리해놔야겠다는 생각이 드는 요즘..😣 인증 토큰 없이도 실행되어야 하는 일명 '공개 API'가 특정 상황에서 실행되지 않는 문제가 발생했다.Security 설정을 두 개의 SecurityFilterChain으로 나눠 사용하다가,문제 해결을 위해 단일 체인 구조로 변경했고,그 과정에서 예상하지 못했던 또 다른 문제를 겪게 되어, 그 원인과 해결 과정을 정리해 보려고 한다.SecurityFilterChain을 두 개로 나누어 사용했을 때의 문제점서비스는 인증 수단으로 JWT를 사용하고 있었고, 토큰 없이도 호출되어야 하는 "공개 API"와 인증을 거쳐야만 실행 가능한 "보호 API"가 공존하는 구조였다. 그래서 처음에는 보안 설정 자체..

Spring 2025.12.29

세션, 토큰, 쿠키, 캐시 비교 정리

세션(Session), 토큰(Token), 쿠키(Cookie), 캐시(Cache)에 대해 비교 정리해보겠습니다. 세션(Session)과 토큰(Token) 정리위 두 용어는 인증정보가 저장되는 위치에 따라 구분되는 용어이다.다시 말해, 인증 상태를 어디에 저장하느냐를 기준으로 '세션' 또는 '토큰' 기반의 인증 방식으로 나뉜다. 1. 세션(Session)인증 정보를 서버에 저장하는 방식이다. 로그인 등의 경우 서버는 세션이 없으면 자동으로 세션을 새로 생성하는데, 이와 함께 고유한 키 역할을 하는 Session ID도 생성한다. 그리고 Set-Cookie 헤더를 통해 JSESSIONID를 클라이언트에게 응답하게 된다.Set-Cookie: JSESSIONID=Session ID값※ Set-Cookie : 브..

Backend 2025.06.25
반응형