Proj (38) 썸네일형 리스트형 스프링 시큐리티에서 발생하는 예외 처리하기 1. 개요해당 프로젝트에서는 ApiExceptionHandler 클래스를 가지고 예외를 처리한다. 해당 클래스에는 @RestControllerAdvice가 있는데 스프링 시큐리티 필터에서 발생하는 오류는 대상이 아니기 때문에 커스텀 예외를 응답으로 보내지 못했다. 이를 해결해보고자 한다.2. 필터 추가해당 프로젝트는 JWT 방식을 사용하여 인증 및 인가를 처리한다. 만약 유효하지 않은 JWT가 들어오게 된다면 이를 처리할 필요가 있다.@Slf4j@RequiredArgsConstructorpublic class JwtValidExceptionHandlerFilter extends OncePerRequestFilter { private final JwtUtil jwtUtil; protected v.. Trouble Shooting: @Value에 값이 불러와지지 않는 문제 1. 개요카카오 로그인을 구현하다 발생한 문제이다. 프론트 측에서 코드를 받아 서버에 보내면, 서버에서 이를 Auth 서버와 Resource 서버를 통해 사용자 정보를 받아오고, 로그인을 진행하는 과정을 거치게 된다. 이렇게 개발하여 배포했을 때 카카오 측에서 401 에러를 발생시켰다. 그 원인과 해결책을 알아보고자 한다.2. 원인?로깅 레벨을 debug로 보고 관련 로그를 확인해보았다. 진행 로직에서 다음의 URL로 Auth Server에 요청을 보내는 것을 확인할 수 있었다.https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id&code=인증 코드&client_secret이걸 보고 client_id와 secret key가.. Spring OAuth2를 사용하여 소셜 로그인 구현하기 (feat.추가 정보 입력) 1. 개요Tripot 프로젝트에서는 소셜 로그인만을 사용하여 회원의 정보를 받고자 한다. 이에 따른 구현 과정을 작성한다.2. 개발 과정2-1 추가 정보 입력 로직해당 로직을 어떻게 구현해야 하는지 떠올리는 데 생각보다 오래 걸렸다. 만약 어떤 회원이 추가정보 입력 화면에서 앱을 종료해버릴 경우 이를 확인할 방법이 없기 때문이다. 그러다 프론트 분과 대화해 본 결과 응답 바디 값에 따라 서로 다른 페이지로 이동하는 것이 가능하다고 했다. 이에 따라 다음과 같이 로직을 작성했다. 이후 개발을 하다보니 소셜 로그인 진행중에 회원 가입 처리가 되어야 한다는 것을 알고 이를 조금씩 다듬었다.2-2 로그인 진행 과정: 설정우선 카카오 로그인에 관련된 주소 및 정보를 yml 파일에 저장한다. security: .. 프로젝트 DB 보안 간단히나마 관리하기 1. 개요Tripot 프로젝트를 진행하던 중 스프링부트 프로젝트와 DB가 연결되지 않는 문제가 발생했다. DB 상태를 확인하니 다음의 결과가 나왔다.systemctl status mysql mysql이 죽어버린 것이다. 이 글에서는 이의 원인을 찾고 해결하는 과정을 작성한다.2. 원인이와 관련하여 구글링해본 결과 처음에는 외부에서 접속을 많이 시도하여 발생한 문제인 케이스가 많았다. 이에 따라 에러 로그를 확인해봤다. mysql의 에러 로그는 다음의 경로에 위치한다./var/log/mysql/error.log 하지만 프로젝트에서 사용하는 PC는 어떤 로그도 찍히지 않았고, 다른 원인이라고 생각하여 찾아보던 중 mysql에 RECOVER_YOUR_DATA라는 DB가 있어 들어가 찍어보았다. 옛날에 컴퓨터 .. Trouble Shooting: 멀티 모듈 CI/CD, 환경 변수 설정 문제와 AWS Parameter Store을 이용한 해결 0. 이전 Tripot은 멀티 모듈 프로젝트이다. 처음에 루트 경로의 jar 파일을 실행했다. 하지만 루트 경로에는 Main mehtod를 넘어 소스코드가 존재하지 않으므로 현재 실행 파일이 존재하는 api 모듈을 실행해야 한다. 따라서 start.sh를 다음과 같이 작성하였다.#!/bin/bashROOT_PATH="/home/ubuntu/tripot_cicd"API_JAR="$ROOT_PATH/api_application.jar"API_APP_LOG="$ROOT_PATH/api_application.log"API_ERR_LOG="$ROOT_PATH/api_error.log"API_START_LOG="$ROOT_PATH/api_start.log"NOW=$(date +%c)echo "[$NOW] $API_.. Trouble Shooting: 무한 리다이렉트 현상 1. 개요해당 프로젝트에서 소셜 로그인 파트를 맡고 개발을 하던 중이었다. 카카오 로그인 후 같은 페이지를 계속 리디렉션하는 현상이 발생하여 이를 해결하고자 하는 과정이다.2. 해결로깅 레벨을 debug로 바꾸고 이를 확인해보았다. 위 사진 이후 OAuth2UserService.loadUser가 실행되고, 다시 /로 리다이렉트되는 것을 확인할 수 있었다.2-1. uri 권한 확인위 사진에서 다음의 순서대로 동작하는 것을 확인할 수 있었다./oauth2/authorization/kakao로 리다이렉트kauth.kakao.com/oauth/authorize으로 리다이렉트를 걸어서 인가 코드를 받아옴kauth.kakao.com/oauth/token으로 가서 토큰을 받아옴kapi.kakao.com/v2/user.. Git Action을 활용한 CI/CD 1. 개요이번에는 CI/CD를 해당 프로젝트에 적용시켜 보기로 했다. 구구모에 적용되어 있으나 다른 팀원 분이 해주셔서 직접 익혀보고자 이 프로젝트에 적용하게 되었다.2. 아키텍처CI/CD에서 주로 사용하는 배포 절차는 다음과 같다.각 요소가 어떤 역할을 하는 지 간단히 살펴보자Github Action: 깃허브에서 빌드, 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼AWS S3(Amazon Simple Storage Service): 업계 최고의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스AWS CodeDeploy: CodeDeploy Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 또는 Amazon ECS 서비스로의 애플리케이션 배포를 자.. 서브모듈 적용 1. 개요2. Git Submodule이란?3. 서브모듈 생성4. 배포 시 적용5. 주의사항1. 개요해당 프로젝트를 진행하는 동안 application.properties와 FCM 알림을 위해 service key를 관리해야 했다. 그 당시에는 메신저를 통해 백엔드 팀원들이 이를 공유받고, gitignore에 추가하는 방식으로 관리했다. 그러나 이렇게 관리할 경우 만약 이 어플을 운영해야 한다면 내용이 변경될 때 마다 서버에 파일을 올려야 한다. 이를 해결하기 위해 구구모 프로젝트에서는 git submodule을 사용했다. 이를 꿈나무 한입 프로젝트에도 적용시켜보도록 하자.2. Git Submodule이란? Github에서 서브모듈이란 main repository의 내부에 다른 서브 저장소를 디렉토리로 .. 이전 1 2 3 4 5 다음