Spring

스프링 프레임워크에 관한 내용을 기록합니다.
·Spring/Spring Boot
00. 서버에서 클라이언트로 이벤트를 보내야 하는 필요성서버에서 클라이언트에게 이벤트 처리를 해주어야 하는 경우는 생각보다 쉽게 떠올릴 수 있다. 예를 들어 네이버 카페에서의 채팅 기능을 생각해보자.클라이언트가 특정 유저에게 채팅을 보내면, 해당 정보는 상대방에게 바로 가지 않고 먼저 서버로 전송된다.이후 상대 유저가 채팅 내용을 얻기 위해서 서버에 해당 채팅 내용을 요청해야한다.여기서 한가지 쟁점은 상대 유저는 자신에게 채팅이 온 사실을 어떻게 인식하는가? 이다.이러한 상황에서는 서버에서 클라이언트에게 이벤트를 전송해야한다.서버가 채팅 전송 요청을 받으면, 상대 유저에게 채팅이 왔다는 이벤트 처리를 해주면 위의 문제가 해결된다.이 외에도 푸쉬알림, 메일, 공지사항 등 다양한 기능에서 서버의 이벤트 처리..
·Spring/Spring Boot
00. 문제 상황배포 전에는 멀쩡히 인식되던 이미지가, ec2 배포 후에는 계속 이미지 경로를 인식 못함01. 문제 원인윈도우 환경에서는 파일 절대 경로에서 디렉토리를 구분할 때 백슬래시()를 사용함그래서 기존 프로젝트에서는 이미지 경로를 백슬래시를 사용해서 지정해놨음하지만 Linux 등 Unix 환경에서는 백슬래시가 아닌 슬래시(/)를 사용하여 디렉토리 구분그래서 기존의 이미지 경로를 인식하지 못했음02. 해결슬래시(/)를 사용하여 경로 작성 이미지가 무사히 표시됨
00. 상황JWT 인증 방식에서 Access Token의 취약한 부분을 보완하기 위해 Refresh Token을 추가로 사용한다.이때 Refresh Token은 비교적 안전하지만, 긴 생명 주기를 가지기 때문에 한번 탈취될 경우를 대비하여 서버에서 직접 관리를 할 필요가 있다.이를 위해 내가 진행중인 프로젝트에서는 Refresh Entity를 정의하여, 토큰이 발급될 때마다 DB에 저장하는데, 이때 만료된 토큰이 제거되지 않고 계속 쌓이는 문제점을 발견했다.이를 해결하기 위해 스케줄러를 사용하여, 자동으로 만료된 Refresh Token을 제거하는 로직을 도입했다.01. 스케줄러 사용법스케줄러 사용법은 간단하다.1. Application.java@SpringBootApplication@EnableJpaA..
·Spring/Spring Boot
01. ORS란?기본적으로 동일 출처 정책(SOP, Same-origin policy) 웹 통신 시, 다른 도메인 주소끼리는 통신을 하지 못한다.이때, 다른 도메인 주소 끼리 통신을 하기 위해서는 CORS를 통해야한다.이때 CORS(Cross-origin Resource Sharing, 교차 출처 리소스 공류)는 서로 다른 도메인끼리 자원을 요청할 수 있도록 허락을 받는 체제를 의미한다.02. Spring boot에서 CORS 설정하기기본적으로 스프링부트에서 CORS를 설정하는 방법은 1. 전역적으로 설정하기, 2. 각 Controller에 직접 설정하기 가 있다.여기서는 전역적으로 설정하는 방법을 사용했다.@Configurationpublic class WebConfig implements WebMvc..
지난번 JWT를 구현한 과정에 이어서 Refresh Token을 사용하여 더욱 강화된 JWT를 구현해보고자 한다.만약 JWT에 대한 기본 구현 방법을 모른다면 해당 글을 읽기 이전에 이전에 작성한 글을 먼저 읽어보길 추천한다.아래에 작성된 예제 코드도 위 링크의 코드를 기반으로 작성했음을 유의하자.먼저 Refresh Token이 왜 필요한지를 먼저 알아보자01. Refresh Token의 필요성과 장단점기존 Access Token만을 사용한 인증 방식의 문제점물론 지난번에 구현한 기초적인 jwt만으로도 간편하게 클라이언트의 요청에 다한 인가 작업을 처리할 수 있다.하지만 jwt 방식에는 큰 문제가 하나 있다.그것은 바로 jwt 토큰이 탈취되었을 경우 어떻게 대처할 것인가?에 관련된 문제이다.다들 알다시피..
이번에는 스프링부트에서 JWT를 활용한 인증 방식을 구현해보고자 한다.이때 Spring Security의 필터단에 JWT를 사용하는 커스텀 필터를 끼워넣어 구현하고자 한다.JWT의 구조에 관한 글은 이전에 작성한 글을 참고하자.그럼 바로 시작하겠다.01. 전체 동작 과정JWT를 구현하는 코드를 설명하기 전에 먼저 Spring Security를 활용하여 JWT를 동작시키는 과정을 살펴보고자 한다.하나씩 살펴보자회원가입 과정회원가입은 기존 회원가입과 다르지 않게, DTO로 회원가입 정보를 전달받으면 Controller가 이를 Service에 전달 이후 비즈니스 로직을 실행한다.위 그림에는 나오지 않지만 회원 정보를 저장할때 비밀번호를 암호화 하여 저장하는 부분만 유의하자.최초인증(로그인) 과정원래 스프링 시..
Im_Hayden
'Spring' 카테고리의 글 목록