본문 바로가기

Projects

(5)
에러 표준화 과정 3 - 인증 과정에서 발생하는 Exception 처리 우리 프로젝트에서 처리되는 인증 방식은 세 가지이다. 이메일과 비밀번호 검증을 통한 로그인 타 소셜 플랫폼에서 대신 인증 JWT 토큰 검증을 통한 인증 타 소셜 플랫폼에서 발생하는 에러는 해당 플랫폼 서버에서 잘 처리되어 에러 응답을 보내주며 우리는 그것을 받아 SocialLoginFailedException으로 처리하고 있기 때문에 여기서는 따로 언급하지는 않겠다. 다만 Spring Security 기능을 사용하고 있는 이메일/비밀번호 검증과 JWT 토큰 검증 기능에서 발생하는 에러는 별도의 처리 방식이 필요했다. JWT 토큰 검증 과정에서 발생하는 에러 처리 원래는 유효하지 않은 토큰을 검증할 때에는 발생하는 jwt 검증 에러를 모두 catch하고 그냥 authentication을 SecurityCo..
에러 표준화 과정 2 - Custom Exception, Exception Handler Custom Exception Custom Exception에 대해서 구글링을 좀 해보니 사용 여부에 대해서 회의적인 사람들이 많아 보였다. 나의 프로젝트에 Custom Exception을 써야 할지에 대해서 고민하는 데에는 다음 글이 도움이 되었다. custom exception을 언제 써야 할까? custom exception을 언제 써야 할까? 우아한테크코스의 두 크루인 오렌지와 우가 싸우고 있다. 왜 싸우고 있는지 알아보러 가볼까? 오렌지 : 아니 굳이 사용자 정의 예외 안 써도 됩니다!! 우 : 아닙니다!! 써야 합니다!!! 사용자 정의 tecoble.techcourse.co.kr 다음 글을 보면서 Custom Exception을 써봐야 겠다고 생각했는데 그 이유들은 다음과 같다. 표준 Exce..
에러 표준화 과정 1 - Spring Validator 기능 구현에 급급하다보니 계속 신경이 쓰였던 부분 중에 하나였던 예외 처리를 리팩토링 해보려고 한다. 현재 상황 각각의 예외 처리가 일관적이지 못하고 일부 케이스는 그냥 서버 내부 에러 500으로 처리되고 있음 클라이언트의 잘못된 input 값에 대한 에러 처리에 일관성이 없음 컨트롤러와 서비스에 try/catch 문이 너무 많아 코드의 가독성을 떨어트림 Runtime Exception과 Exception 구별 없이 마구 사용되고 있음 컨트롤러 뿐만 아니라 dispatcher sevlet 전에 위치하는 security 관련 filter에서 발생하는 에러들도 일관적으로 처리되지 못하고 있음 목표 클라이언트 요청 처리에서 발생할 수 있는 예상가능한 예외들을 모두 표준화하여 일관적으로 처리하고, 예상할 수 없..
Spring Security를 이용한 JWT 로그인 2 - 구현 과정 목표 로그인 요청 시, 이메일과 비밀번호를 검증하여 JWT 발급 '/user/all/*'을 제외한 모든 요청에 대하여 JWT 인증/인가 처리 참고: https://bcp0109.tistory.com/301 Spring Security 와 JWT 겉핥기 Introduction 이 글에서는 Spring Boot + JWT + Security 를 사용해서 회원가입/로그인 로직을 구현했습니다. JWT 와 Spring Security 코드는 인프런 Spring Boot JWT Tutorial (정은구) 강의를 수강하면서 만들고.. bcp0109.tistory.com 필요한 설정 'spring-boot-starter-security' Dependency 추가 'io.jwonwebtoken' Dependency 추가..
Spring Security를 이용한 JWT 로그인 1 - JWT, Spring Security Monkey Penthouse라는 창업을 앞두고 있는 프로젝트의 백엔드를 맡게 되었고, 이 프로젝트의 메인 서비스가 될 어메니티/결제 기능 구현에 앞서 인증/인가 기능부터 구현하게 되었다. Monkey Penthouse의 인증/인가 기능 회원가입 로컬 로그인 소셜 로그인 (카카오, 네이버, 애플) 이메일 찾기 비밀번호 수정 이 글에서는 이 프로젝트에서 인증/인가 기능을 어떻게 구현하였는 지에 대한 로직을 정리해놓으려고 한다. JWT(JSON Web Token) 회원이 많아질수록 서버에 부하가 걸릴 수 있는 세션보다는 JWT을 사용하였다. JWT는 인증에 필요한 정보를 암호화한 토큰을 의미한다. JWT는 header와 payload, signature로 구성되어있고, 페이로드에 인증에 필요한 정보와 유효기..