Programming/Spring

Programming/Spring

WebSocket과 JWT 토큰 인증

Spring 프로젝트 주제로 웹소켓 기반의 타이핑 게임을 진행하던 중 웹소켓과 JWT 토큰 인증 관련 문제를 직면하고 정리하고자 글을 작성하게 되었습니다. JWT 인증 기반의 인증 제 프로젝트에서 JWT를 기반으로 하는 인증은 클라이언트에서 보내는 모든 요청에 JWT를 넣어 전송하고, 서버에서 이를 검증해 통신을 주고 받도록 되어 있습니다. 문제점 : 위의 개발 환경에서 실시간 게임방 관련 기능을 개발하던 중 소켓 연결 시 JWT 토큰이 인식되지 않아 401 UNAUTHORIZED 가 발생하여 인증 과정이 정상적으로 동작하지 않는 이슈가 발생했습니다. 왜 그런가 ? 라고 생각했을 때 가장 먼저 떠오른 것은 401 HTTP 응답 코드를 보고 인증이 제대로 처리가 되지 않은걸까? 였습니다. 그러나 기존의 다..

Programming/Spring

Spring에서 SSE(Server-Sent Events) 활용하기

2024.01월부터 웹소켓 기반의 타이핑 게임을 주제로 프로젝트를 진행하게 되었습니다. 프로젝트를 진행하면서 가장 먼저 구현하고자 했던 부분이 실시간으로 생성되고, 삭제되고, 누군가 입장하고, 퇴장하는 게임방을 실시간으로 사용자들에게 보여주는 기능이었고, 이를 어떻게 보여줄지 고민하게 되었습니다. 1. WebSocket 가장 먼저 떠올랐던 방법은 웹소켓입니다. 웹소켓은 실시간 양방향 데이터 전송을 가능하게 하는 통신 프로토콜로 일반적인 HTTP 프로토콜과는 달리 지속적인 연결을 유지하고 서버와 클라이언트 간의 데이터 전송이 빠르게 이루어지기 때문에 실시간 데이터를 받아야 하는 서비스에 어울린다고 생각하게 되었습니다. 2. SSE (Server-Sent Events) 두번째로 떠오른 방법은 SSE입니다. ..

Programming/Spring

필터가 2번 중복 적용되는 문제 해결하기

Intro JWT 토큰 값을 읽어서, 상황에 따라 인증하거나 만료되었다면 그에 따른 예외처리를 내려주는 JwtAuthenticationFilter를 만들어 SecurityConfig 설정 내에 등록해주었다. 시큐리티 필터체인에서 아래와 같이 등록하여 작동하도록 해두었는데, .addFilterAfter(jwtAuthenticationFilter, ExceptionTranslationFilter.class) 요청이 올 때마다 자꾸 해당 필터를 두 번씩 거치는 문제가 발생했다. Why ? 간편하게 Bean으로 등록해두고 사용하기 위해 클래스에 @Component 어노테이션을 붙여 사용했는데, 이게 바로 문제였다. 아래는 스프링 부트 도큐먼트에서 Filter에 관한 내용이다. 요약하자면, 스프링 빈으로 등록된 ..

Programming/Spring

Elasticsearch로 검색 성능 개선하기

0. OverView 2023.12.15 ~ 2024.01.12(4주) 동안 "인터파크 티켓" 사이트를 타겟으로 한 클론 코딩을 진행하게 되었습니다. 팀원 한명과 함께 "공연" 도메인을 맡게 되었고 핵심 기능으로 "검색 기능"을 선정하여 구현하고자 하였습니다. 클론 코딩을 진행한 "인터파크 티켓" 사이트는 찾고자 하는 키워드로 검색을 하면 빠른 속도로 검색기능을 제공하는 것을 확인할 수 있었고, 검색 기능을 어떤 방식으로 구현하면 좋을까를 고민하다가 엘라스틱서치를 도입하여 RDB만을 사용하여 구현했을 때 보다 성능적인 면에서 개선한 사례를 기록해보려고 합니다. 1. 검색 기능 분석 먼저 저와 팀원은 "인터파크 티켓"의 검색 기능을 분석하였습니다. - 키워드로 검색하면 공연의 제목 뿐만 아니라 내용, 장르..

엥재
'Programming/Spring' 카테고리의 글 목록