전체 글

코딩하는 뱁새 보셨어요?
Web/HTTP

[HTTP] Spring에서 Cookie 설정 시 Headers에 Set-Cookie가 생기지 않는 문제

사실은 문제가 아니라 HTTP와 Cookie에 대해 잘 알지 못해 발생한 나의 문제였다... 문제 상황 세션 로그인 API를 개발한 후, Postman을 통해 쿠키가 잘 생성된 것을 확인했다. 하지만 어느날 클라이언트에서 세션에 대한 쿠키가 Response Header에 담겨있지 않다는 문제가 발생한다고 했다... 그래서 Postman을 통해 다시 확인해보니 API를 처음 실행했을 때는 헤더에 쿠키가 잘 담겨있지만, 2회 이상 실행하는 경우 담겨있지 않았다. 나는 이 부분이 이상하다고 생각하고 API에서 매번 직접 헤더에 세션을 넣어주도록 코드를 변경해주었다. 문제 해결 사실은 무지로 인한 문제가 발생한 것이었다. 나는 로그인 API를 2회 이상 실행할 때 헤더에 쿠키 정보가 사라지는 것을 이상하게 생각..

Java/Spring

[Spring] server.servlet.session.timeout과 spring.session.timeout의 차이

문제 상황 현재 앱 개발을 위해 로그인 개발을 진행 중이며, 사용자 로그인 유지를 위해 세션을 이용하고 있다. 세션에는 다양한 설정 값이 있는데, 로그인 유지 시간을 바꾸기 위해 spring_session 테이블에서의 max_inactive_interval을 변경하고자 했다. 하지만 spring에서의 session의 유지 시간을 변경하는 코드가 2개가 있었으며, 어떤 코드를 application.yml 파일에 작성해야 할지 감이 잡히지 않아 공부하는 계기가 됐다. 차이점 두 코드 모두 세션 타임아웃을 설정하는 속성이라는 공통점이 있지만, 사용되는 목적이 다르다. server.servlet.session.timeout(내장 서버의 세션) 내장 톰캣, 제티, 언더토우 등의 서블릿 컨테이너의 세션 타임아웃을..

Java/Spring

[Spring] OAuth2 소셜 로그인 후 Postman에서 Session 설정하기

프로젝트에서 인증(Authentication), 인가(Authorization)를 구현한 이후에는 Postman에서 아무런 설정 없이 API를 호출할 수 없을 것이다. 로그인 구현에 따른 세션 및 토큰 설정이 별도로 필요하기 때문이다. 필자는 Session을 이용한 소셜 로그인을 구현하여, 해당 방식에서 API를 호출하기 위해 Postman 설정 방법을 알아보고자 한다. 1️⃣ 소셜 로그인 진행 먼저 소셜 로그인 페이지에 들어가 로그인을 진행한다. 2️⃣ 발급된 Session 확인 이후 F12를 클릭하여, 발급받은 Session의 Value를 확인하자. 3️⃣ Postman에 Cookies 등록하기 우상단에 있는 Cookies를 클릭하자. 이후 위에서 확인한 Session의 Value를 아래와 같이 등록..

Java/Spring

[Spring] Spring Security에서 발생한 403 Forbidden 에러 처리

개발을 하면서 Postman으로 Post method를 테스트 하려고 하는 중에 있었다. 하지만 Get method는 잘 호출되는 반면, Post method의 경우 다음과 같은 에러가 발생했다. 문제가 일어난 이유는 다음과 같았다. Spring Security는 기본적으로 CSRF 보호를 활성화합니다. CSRF 토큰이 요청에 포함되지 않은 경우 "403 Forbidden" 오류가 발생합니다. Postman에서 요청을 보낼 때 CSRF 토큰을 포함했는지 확인해야 합니다. 하지만 현재 프로젝트에서 CSRF 토큰을 사용하고 있지 않기 때문에, disable로 해당 문제를 해결해줬다. 변경 전 @Bean public SecurityFilterChain filterChain(HttpSecurity http) t..

당찬 뱁새
코딩하는 뱁새