인기 글
-
사용자 요청부터 스프링 시큐리티까지 feat)OAuth2
목차 스프링 시큐리티 6 기준! 실제 스프링 시큐리티를 만지면서 너무 어렵고 깊이있게 파고들고 싶어서 좀 더 알아보는 흐름을 갖고 싶어서 써보겠다 실제 유저가 스프링에 요청을 보내는 순간으로 부터 시작해서 스프링 시큐리티 작동 원리를 찾아보고일반적인 form 로그인과 Oauth의 경우까지 알아보자 1. http 요청 시 흐름 Client가 API 요청을 하면Web Application server(Java에서는 Tomcat) → Servlet(Java에서는 Dispatcher Servlet ) → Controller 순서로 요청이 전달되는데, 그 중 Filter chain은 Web Application server와 Servlet 사이에서 작동한다. // 흐름HTTP 요청 → WAS ..
2025.04.14
-
My Record - OAuth2 카카오 도전기! 리팩토링2
이전 글My Record - OAuth2 카카오 도전기! 리팩토링 1편트러블 슈팅My Record - OAuth2 카카오 도전기 중 트러플 슈팅 원리는 다 설명했고 이제 차근 차근 코드를 따라가보자 1. yml 설정spring: jpa: show-sql: true properties: hibernate: format_sql: true defer-datasource-initialization: true h2: console: enabled: true security: oauth2: client: registration: google: client-id: ${GOOGLE_CLIENT_ID..
2025.04.16
-
My Record - 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.04.01
-
TOGEDOG프로젝트 - 이미지 presignedURL 도입기와 에러해결
https://github.com/E24I/TOGEDOG GitHub - E24I/TOGEDOG: 🐕내 반려동물과 추억을 쌓을 수 있는 곳. TOGEDOG🐕내 반려동물과 추억을 쌓을 수 있는 곳. TOGEDOG. Contribute to E24I/TOGEDOG development by creating an account on GitHub.github.com S3 presignedURL 도입기 진행 중인 프로젝트는 반려견, 반려묘에 관한 웹 어플리케이션이라작성자의 피드에 사진, 동영상 등을 많이 올릴 것으로 예상되었다. 그래서 우리 팀은 이미지 업로드의 기능을 구현하기로 했다. 먼저 방법들을 알아봤는데 총 3가지 방법이 눈에 띄였다. 이미지 업로드 방법 1. 서버 경유 업로드 클라이언트에서..
2023.12.23
-
삐삐 프로젝트 - jwt를 더 안전하게! RTR도입기
https://215-coding.tistory.com/42 [JWT] 토큰 인가 및 토큰 재발급 관련 트러블슈팅📝 배경 본 프로젝트 (삐삐:Best Interior)에서는 서버가 클라이언트를 인증하는 방식 중 하나인 JWT를 이용하여 로그인 기능을 구현하기로 함 또한, 토큰은 로컬스토리지에 저장하는 방식을 택했으215-coding.tistory.com=먼저 프론트 분 담당자가 쓰신 글- Refresh Token은 Access Token을 재발급할 때 사용하는 키이다 Access Token이 긴 만료 시간을 가지게 되면 탈취당했을 때 악의적인 공격에 속수무책일 수가 있다 그래서 Refresh Token을 많이들 도입한다. 그러면 Access Token의 만료 기간을 짧게 유지하고, 상대적으로 긴 만..
2023.10.10
-
BBiBBi - 세션이냐 JWT이냐 그것이 문제로다
(궁금하면 눌러보자 JWT하며 업그레이드임)삐삐 프로젝트 - jwt를 더 안전하게! RTR도입기 삐삐 프로젝트 - jwt를 더 안전하게! RTR도입기https://215-coding.tistory.com/42 [JWT] 토큰 인가 및 토큰 재발급 관련 트러블슈팅📝 배경 본 프로젝트 (삐삐:Best Interior)에서는 서버가 클라이언트를 인증하는 방식 중 하나인 JWT를 이용하여 로그인 기ernest45.tistory.com BBiBBi 프로젝트를 할 당시 나는 인증과 인가 업무를 위주로 했다. Spring security 로그인에서의 프론트 담당자와의 많은 이야기가 나왔다..로그인 정보를 jwt로 구현할 것인가 ? session으로 구현할 것인가? 이야기 나온 과정에서 익숙한 session이..
2024.01.25
-
내가 무슨 OAuth로 로그인 했더라?
--기능 추가중 고민들-- 목차 요새 들어 거의 모든 걸 oauth로 로그인하기 시작했다. 한국인의 경우 카카오, 네이버, 구글 등 다양하게 쓰기 때문에 사실 아무거나 oauth로 만들어도 상관 없을 것이다. 근데 막상 특정 OAuth로 로그인을 선택하는 이유는 각 회사에서 만든 OAuth의 버튼 위치가 가장 주된 이유일 것이다.(나만 그래?) 예를 들어 설명하자면, 원티드의 경우 바로 위에 있는 카카오로 누를 가능성이 높고,잡코리아의 경우 네이버로 OAuth2를 로그인할 경우가 제일 많을 것이다. 근데 이걸 규칙화해서 생각하지 않아서 항상이 사이트에 내가 아이디가 있었나? -> 무슨 OAuth2로 로그인을 했지?고민하게 되다가 하나 씩 다 눌러서 로그인 해보는 경우가 잦을 때 마다 불편하다.....
2025.04.22
-
2024년 회고 -꾸준함을 믿자
정말로 힘든 년도가 지나갔다.개발을 처음 배울 때만 하더라도, 나는 빠르게 취업할 수 있을줄 알았고흥미도 있고 자신도 있고 상황도 어느 정도 여유가 있을 것이라고 생각했다.. 채용 시장이 얼어붙고 수 많은 지원에 대한 불합격 통보..당연한 결과다 나는 그저 이제 갓 시작한 비전공자 개발자일뿐이니까전공자의 4년 + 알파를 고작 6개월과 열정으로 커버가 가능하다면 누가 컴공과를 가겠는가? -- 지금은 비빌만해졌다고 자만중이다-- 1. 새로운 프로젝트 우연히 부트캠프를 다니면서 알고 지내던 분의 프로젝트 제의가 들어왔다. 사실 막막하게 그저 공부와 지원이 반복이였던 나에게 팀 프로젝트는 다시 한 번의 열정과개발자로 성장이 좀 더 다가오는 듯 했다.. 디자이너와 백엔드, 프론트엔드와의 협업 경험은 다시 ..
2024.12.11
-
My Record - 다중 SecurityFilterChain 우선 순위 : 트러블 슈팅
블로그 프로젝트 중 filterChain을 요청에 따라 각 각의 filterChain을 활용하고 싶었다.두 개의 필터체인을 등록하고 받는 requestMatcher만 잘 활용해 url만 따로 지정한다면 내가 원하는 동작으로이루어질 줄 알았으나, 403이 떠서 아예 원하는 체인 자체는 인증을 통과하지 못하는 이슈! 1. 요청마다 filterChain을 다르게 타고 싶다면? 기본적으로 하나의 filterChain으로 사용해왔는데,이번 프로젝트의 경우나는 OAuth2는 custom된 filterChain을 통해 일반 로그인의 필터를 거치지 않았으면 했다. 즉 일반로그인필터와 oauth로그인 필터를 구분해서 사용하고 싶다! 도입 이유 -그 이유는 요청마다 filter를 다르게 이용한다면보안 정책의..
2025.04.18
-
My Record - OAuth2 handler가 동작하지 않는 에러
google로 OAuth2 로그인을 구현했으나, 로그인 시 문제 상황은 기대 : 인증 후 /articles?token=로 리다이렉트되길 원했지만, 실제 : 리다이렉트가 이루어지지 않고, 기본 경로(/)로 이동 내가 지정해놓은 handler를 타지 않았다. 일반적인 실패라면 failureHandler라도 탔을텐데 타지 않고 redirect 주소도 무시했다.. OAuth2 로그인 흐름 개요 총 크게 3번의 흐름으로 http 요청 및 응답 사이클이 돌아간다. 1. 클라이언트 → 서버 (OAuth2 로그인 요청)주요 흐름:1️⃣ 사용자가 /login 페이지에 접근2️⃣ Spring Security가 /oauth2/authorization/google로 리다이렉트3️⃣ 구..
2025.04.03
-
Refresh Token을 Redis로 관리해보자! feat.리팩토링
목차 1. 도입 이유 사실 이전 refresh Token은 DB에 저장해서 인증 시에 반환하는 용도로 썼다. 여기서 드는 의문이 우리가 세션 로그인 대신 JWT를 도입하는 이유는 무상태성 + 서버의 부담을 줄이고 싶다는 이유이다.그런데 refresh Token을 DB에 저장하게 된다면 이러한 장점이 없어지지 않을까?.. 찾아 본 결과 1. 무상태성 유지DB에 저장하는건 사실 무상태성이 깨지는 것은 아니다.무상태성이 깨지는 경우는 클라이언트에 대한 상태를 유지하는 경우이다. 즉 db 자체에 refresh Token을 저장한다고 깨지지 않음!즉 무상태성을 유지할 수 있음 2.서버의 부담db에 접근 하는 것이이 서버쪽 부담이 될 것이라고 생각하지만 리프레시라는 동작은 굉장히 드물게 일어나..
2025.05.16
-
My Record - OAuth2 카카오 도전기 중 트러블 슈팅
블로그 - OAuth2 카카오 도전기! 리팩토링 1편블로그 - OAuth2 카카오 도전기! 리팩토링21.map.get.kakaoProfile이 NPE가 찍히는 거 같다. 내가 동의한 것 중에 필수 동의 항목 중 Profile_nickname을 받아와야 하는데 당연히 내가 정해놓은 kakaoUserInfo 부분을 확인해보니 prfile.. 단순한 오타였다. 2.UnsupportedOperationException 에러 로그는 어디선가 잡혀서 예외가 던져있고 있다.. UnsupportedOperationException를 찾아보니 지원하지 않는 작업을 요청 했을 때 나타난다고 한다.. 이것만 봐서는 어디서 난 지 알기 힘들었지만,구글링한 결과 list나 map 등의 컬렉션에서 수정할 수..
2025.04.21
-
My Record - OAuth2 카카오 도전기! 리팩토링 1편
블로그 만들기 -Oauth2구글에 요청이 자동으로 간다고? 블로그 만들기 -Oauth2구글에 요청이 자동으로 간다고?예전에 팀 프로젝트를 할 당시 로그인을 맡아서 했었는데 완전 햇병아리에다가 처음 코딩을 접할 시기라security가 진짜 너무 어려웠다.. 특히 Oauth는 계속 실패해서 원인조차 찾지 못할 시기가 있ernest45.tistory.com 사용자 요청부터 스프링 시큐리티까지 feat)OAuth2 사용자 요청부터 스프링 시큐리티까지 feat)OAuth2스프링 시큐리티 6 기준! 실제 스프링 시큐리티를 만지면서 너무 어렵고 깊이있게 파고들고 싶어서 좀 더 알아보는 흐름을 갖고 싶어서 써보겠다 실제 유저가 스프링에 요청을 보내는 순간으로ernest45.tistory.com 전체적인 흐름이 이해가 ..
2025.04.14
-
My Record 만들기 -에러 처리 가이드
여러 전략 1.Errorattributes DefaultErrorattrtibutes 단점 예외 이름만 보고는 왜 발생한 예외인지 파악이 어렵다.예외 메시지가 여러 곳에 퍼져 있기 때문에 관리하기가 어렵다. 2.ErrorCode enum 에러메세지용 객체, 한 눈에 보기 좋다. 구조 바꾸기 용이 에러 코드를 한 곳에 모아 관리하기 위한 enum class 에러가 발생 했을 때 3가지 정의어떤 HTTP 상태 값으로 응답하는지어떤 기본 메세지를 가지고 있는지어떤 고유한 에러코드를 가지는 지 이러면 예외를 한 곳에서 관리 가능! 2-1 errorResponse 아까 만든 ErrorAttributes를 대체할용도를 가진 에레 메세지용 객체 메세지 필드와 에러코드를 String으..
2025.04.09
-
개인 프로젝트 MyRecord - 시작은 contentType에 대해서
⬇️ 프로젝트 총 포스팅 목록 더보기사용자 요청부터 스프링 시큐리티까지 feat)OAuth2블로그 - OAuth2 카카오 도전기! 리팩토링1블로그 - 다중 SecurityFilterChain 우선 순위 : 트러플 슈팅블로그 만들기 - 환경변수 dotenv으로 관리블로그 만들기 -Oauth2구글에 요청이 자동으로 간다고?블로그 만들기 - controller test (ObjectMapper)블로그 만들기 - jwt인증 필터 흐름과 config 뜯어보기블로그 만들기 - OAuth2 handler가 동작하지 않는 에러블로그 만들기 - 배포 후 Oauth2 500 에러?블로그 - OAuth2 카카오 도전기! 리팩토링2토큰 만료 시 401 처리블로그 만들기 -에러 처리 가이드블로그 - OAuth2 카카오 도전기..
2025.03.01
-
My Record - 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.04.08