[Spring Security] LogoutFilter 개념부터 사용법까지
·
Spring/Spring Security
Spring Security는 손쉽게 사용할 수 있는 기본 LogoutFilter를 제공한다. 기능을 기본 LogoutFilter 스펙에 맞춰서 구현했다면 아무런 문제가 없겠지만 그렇지 않을 경우(예를 들어 JWT로 인증/인가를 구현) 로그아웃을 했을 때 알 수 없는 오류가 터지기 시작한다. 이럴 땐 내가 원하는 기능에 맞춰 로그아웃 기능을 커스터마이징이 필요한데, 그 기능을 정확히 이해하지 않으면 또 다른 문제가 발생할 수 있다. 지금부터 LogoutFilter의 개념과 구현 과정 중 문제 어떻게 해결할 수 있는지 알아보자. Spring Securiry Logout스프링 시큐리티는 로그아웃 기능을 제공한다. Config 파일에서 아무런 설정을 하지 않아도 기본적으로 제공되는 로그아웃 기능이 동작한다. ..
스프링의 외부 API 호출, 그리고 RestClient
·
Spring/Spring Boot
애플리케이션 외부 API 호출현업에서 외부 API를 호출해야하는 일이 많다. 다른 회사의 서비스(휴대전화 인증, 결제시스템)를 이용할 때 필수적이다. 물론 클라이언트 단에서 외부 API를 호출한다면 스프링 서버에서 API를 호출할 일이 없겠지만, CORS 오류를 회피하기 위해 프록시 서버가 필요한 경우 스프링 서버가 프록시 서버의 역할을 해줘야 하기 때문에 스프링에서 외부 API를 대신 호출해줘야 한다.또한 서버를 서비스 단위로 나눠 배포하는 경우, 내부 서버 컨테이너끼리 데이터를 교환해야할 경우가 생기는데 이럴 때 RabbitMQ와 같은 메시지 브로커를 사용해 데이터를 전달할 수 있지만, 컨테이너끼리 API를 호출을 하는 방식을 사용할 수 있다. 자바나 스프링에서는 HTTP 요청을 보내기 위한 다양한 ..
Spring REST Docs 설정하기 (build.gradle & .kts)
·
Spring/Spring Boot
REST Docs Spring Rest Docs는 Spring MVC를 사용하는 REST API를 문서화할 때 사용하는 툴이다. 다양한 API 문서화 도구 문서툴 노션이나 깃허브 Wiki 등 문서 툴을 사용해 직접 API 문서를 작성하는 방식이다. 서비스 코드의 변경, 작성 실수 등의 이유로 인해 내가 작성한 API 스펙과 실제 코드의 API 스펙이 달라질 수 있다는 문제가 있다. Swagger 대중적인 API 문서화 툴이다. Swagger를 사용해서 API를 문서화하면 아래와 같이 서비스 코드에 Swagger 관련 어노테이션과 코드가 작성되어야 한다. 때문에 코드의 양이 방대해져 서비스 가독성이 떨어뜨릴 수 있는 문제점이 있다. @RestController @RequestMapping("/v1/cate..
Jacoco 설정하기 (build.gradle & .kts)
·
JAVA
Jacoco 자바코드의 커버리지를 체크할 때 사용하는 오픈소스 라이브러리이다. CI/CD와 연계해 테스트 커버리지를 충분히 채우지 못하면 배포가 되지 못하게 하는 등 구성원들에게 테스트 코드를 강제할 때 사용할 수 있다. 여기서 커버리지란 Test를 실행했을 때 Code가 얼마나 빈틈없이 실행됐는지 측정한 수치이다. Gradle 설정 Java 17 / Spring Boot 3.1.2 / Gradle 8.2.1 기준 build.gradle (groovy) plugins { id 'java' id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' // 1. Jacoco 플러그인 추가 id..
2023 Spring Camp 근데 이제 현업 경험을 곁들인
·
활동/컨퍼런스
스프링 캠프? 3월에 막 입사하여 신입 개발자로 근근이 살아던 중 인프런에 재직 중인 부스트캠프 동기 김00 군에게 연락이 왔다. 아래 링크를 던져주면서 참가할 생각이 있냐고 물어봤다. [오프라인] 스프링캠프 2023 - 인프런 | 강의 애플리케이션 서버 개발자들과 함께 가치있는 기술에 관한 정보과 경험을 '공유'하고, 참가한 사람들과 함께 '인연'을 만들고, 시끌벅적하게 즐길 수 있는 개발자들을 위한 '축제'를 목표로 하는 www.inflearn.com 현재 회사의 핵심 기술스택이 스프링이었음에도 스프링 알못인 나는 스프링에 대해서 하나라도 더 주워들어야 했기 때문에 그 친구와 함께 참가하기로 결정했다. 스프링 캠프는 한국 스프링 사용자 모임(KSUG)에서 매년 진행하는 비영리 컨퍼런스이다. 가격은 3..
[Spring Boot] HTTP Message Converter
·
Spring/Spring Boot
1. Message Converter란? Message Converter란 말그대로 메시지를 가공해주는 도구를 말한다. 전 세계의 공용어가 영어인 것처럼, Web에서의 공용어는 JSON(JavaScript Object Notation)이다. 자바 오브젝트를 파이썬 오브젝트를 사용하는 곳에 보낸다고 생각해보자. 만약 그냥 자바 언어로 보낸다면 파이썬 프로그램은 해당 언어를 전혀 이해하지 못할 것이다. 반대로 파이썬 측에서 파이썬 언어로 오브젝트를 전송한다면 자바 프로그램도 이해하지 못하는 건 똑같다. 그렇기 때문에 서로 통신할 때는 JSON 오브젝트를 사용해야한다. JSON은 자바스크립트 기반이지만, 통신의 공용어로 사용된다. 각각 프로그램에서 오브젝트를 JSON 데이터로 변경하거나 JSON 데이터를 해당..