본문 바로가기

프로젝트14

블로그 - 다중 SecurityFilterChain 우선 순위 : 트러플 슈팅 블로그 프로젝트 중 filterChain을 요청에 따라 각 각의 filterChain을 활용하고 싶었다.두 개의 필터체인을 등록하고 받는 requestMatcher만 잘 활용해 url만 따로 지정한다면 내가 원하는 동작으로이루어질 줄 알았으나, 403이 떠서 아예 원하는 체인 자체는 인증을 통과하지 못하는 이슈! 1. 요청마다 filterChain을 다르게 타고 싶다면? 기본적으로 하나의 filterChain으로 사용해왔는데,이번 프로젝트의 경우나는 OAuth2는 custom된 filterChain을 통해 일반 로그인의 필터를 거치지 않았으면 했다. 즉 일반로그인필터와 oauth로그인 필터를 구분해서 사용하고 싶다! 도입 이유 -그 이유는 요청마다 filter를 다르게 이용한다면보안 정책의.. 2025. 4. 18.
블로그 만들기 -에러 처리 가이드 여러 전략 1.Errorattributes  DefaultErrorattrtibutes       단점 예외 이름만 보고는 왜 발생한 예외인지 파악이 어렵다.예외 메시지가 여러 곳에 퍼져 있기 때문에 관리하기가 어렵다.  2.ErrorCode enum 에러메세지용 객체, 한 눈에 보기 좋다. 구조 바꾸기 용이   에러 코드를 한 곳에 모아 관리하기 위한 enum class 에러가 발생 했을 때 3가지 정의어떤 HTTP 상태 값으로 응답하는지어떤 기본 메세지를 가지고 있는지어떤 고유한 에러코드를 가지는 지 이러면 예외를 한 곳에서 관리 가능!         2-1 errorResponse  아까 만든 ErrorAttributes를 대체할용도를 가진 에레 메세지용 객체 메세지 필드와 에러코드를 String으.. 2025. 4. 9.
블로그 - 토큰 만료 시 401 처리 http.exceptionHandling() .defaultAuthenticationEntryPointFor(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED), new AntPathRequestMatcher("/api/**")); 2025. 4. 8.
블로그 만들기 - AWS Elastic Beanstalk 배포 중 build 실패 대처 배포 흐름github Repo에 푸시 -> github Actions -> aws s3 jar 파일 저장 -> AWS Elastic Beanstalk (ec2 실행) 코드 변경이 main 브랜치에 푸시되면, GitHub Actions가 자동으로 빌드 및 배포 파이프라인을 실행빌드된 JAR 파일은 S3에 저장되고, Elastic Beanstalk가 해당 파일로 새 버전을 배포하여EC2 인스턴스에서 Spring Boot 앱이 실행 AWS 일래스틱 빈스토크는 EC2, S3, 단순 알림 서비스, 클라우드워치, 오토스케일링, 일래스틱 로드 밸런서를 포함한 다양한 AWS 서비스들을 오케스트레이트하는 애플리케이션들을 배포하기 위해 아마존 웹 서비스가 제공하는 오케스트레이션 서비스 즉 종합 선물세트이다.. ./.. 2025. 4. 8.
블로그 만들기 - OAuth2 handler가 동작하지 않는 에러 google로 OAuth2 로그인을 구현했으나, 로그인 시 문제 상황은 기대 : 인증 후 /articles?token=로 리다이렉트되길 원했지만, 실제 : 리다이렉트가 이루어지지 않고, 기본 경로(/)로 이동 내가 지정해놓은 handler를 타지 않았다. 일반적인 실패라면 failureHandler라도 탔을텐데 타지 않고 redirect 주소도 무시했다.. OAuth2 로그인 흐름 개요 총 크게 3번의 흐름으로 http 요청 및 응답 사이클이 돌아간다. 1. 클라이언트 → 서버 (OAuth2 로그인 요청)주요 흐름:1️⃣ 사용자가 /login 페이지에 접근2️⃣ Spring Security가 /oauth2/authorization/google로 리다이렉트3️⃣ 구.. 2025. 4. 3.
블로그 만들기 - jwt인증 필터 흐름과 config 뜯어보기 cofig 설정들package me.hanjun.config;import lombok.RequiredArgsConstructor;import me.hanjun.config.oauth.Oauth2UserCustomService;import me.hanjun.repository.RefreshTokenRepository;import me.hanjun.service.UserService;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.HttpStatus;import org.springframework.sec.. 2025. 4. 1.