SpringBoot 2

Spring Security + JWT + OAuth 활용한 인증/인가 및 궁금점 정리

기존 keycloak을 사용하며 인증 및 인가 처리를 맡기고 있었으나, 이번에 시큐리티와 JWT를 통해 스프링 내에서 자체적으로 인증 및 인가를 적용하는 작업을 하게 되었다. 인증이란?증명. 어느 자원에 대한 요청이 들어왔을때, 요청 대상이 누구인지 확인하는 것. 회원가입 및 로그인된 사용자인지를 확인하는거라 생각하면 된다. 인가란?허락. 어느 자원에 대한 요청이 들어왔을때, 요청 대상이 해당 자원에 대한 접근 권한을 가졌는지 확인하 일이다.예를들어 우리 서비스에서는 비회원(임시 회원) / 회원 / 사업자 회원 / 관리자 등 다양한 Role타입이 있는데, 각 권한별로 요청이 가능한 api 목록이 다르다. 일반 회원인 사용자가 관리자 api를 호출하면 안되듯이, 이러한 인가 작업이 필수적이다.   인증 방..

SpringBoot 2025.03.08

JWT 토큰 관리 방식에 대한 고민 / RTR 방식 도입

운영중인 한 서비스의 팀원이 되어 가장 먼저 회원 기능 로직을 갈아엎게 되었다.기존 Keycloak이라는 오픈소스를 이용해 인증 및 인가를 하고 있었는데 이를 Spring Security + JWT를 이용해 자체적으로 인증 및 인가 로직을 구성하게 되었다. 구상중 JWT 토큰 관리를 어떻게 할지에 대한 논의가 있었고, 즉각적인 로그아웃 처리가 가능하다는 점에서 Redis를 활용한 blacklist 관리 방식을 도입하자는 의견이 있었다.Blacklist에 대한 개념은 대략 다음과 같다.유저가 로그아웃할때, 클라이언트는 로컬/세션 스토리지에 저장되어있던 accessToken을 삭제할것이다.그러나 만약 이 accessToken을 누군가 탈취해서 요청을 보낸다면 서버쪽에서는 해당 토큰이 로그아웃된 사용자의 토큰..

SpringBoot 2025.03.03