전체 글

전체 글

    [Spring] OAuth2Service + 스프링 시큐리티 + JWT로 카카오 로그인 구현하기

    [Spring] OAuth2Service + 스프링 시큐리티 + JWT로 카카오 로그인 구현하기

    📌 OAuth "OpenID Authorization"의 약자 비밀번호를 제공하지 않으면서 웹사이트나 어플리케이션 접근 권한을 부여할 수 있는 로그인 방식 기존 아이디와 비밀번호를 통한 로그인 방식은 보안상 취약한 점이 아주 많다 그러나 OAuth 를 사용하면 특정 접근 권한만 부여할 수도 있고 강력한 보안을 제공하는 대기업에 사용자 인증과 인가를 위임하는 방식으로 안전하게 로그인할 수 있다 🏛 Dependency implementation group: 'org.springframework.security', name: 'spring-security-oauth2-client', version: '5.6.3' build.gradle 에 OAuth 관련 의존성을 추가해준다 🚀 Kakao Developers ..

    [Gosrock] 고스락 티켓 2.0 프로젝트 관련 글 정리

    [Gosrock] 고스락 티켓 2.0 프로젝트 관련 글 정리

    📚 사용 언어 / 프레임워크 Nodejs + Nestjs PostgreSQL Socket.io Redis Docker 📝 관련 포스팅 Socket.io 사용하여 실시간 공연 입장 시스템 구현하기 Guard 사용중인 Controller 내부 특정 메소드에 모든 접근 허가하기 (NoAuth) PageDto를 이용한 페이지네이션 구현하기 (Paging) ✨ 웹 사이트 주소 https://gosrock.band/ 고스락 티켓 22번째 정기공연 [We are GOSROCK, Invites you] gosrock.band

    [Gosrock/Nestjs] PageDto를 이용한 페이지네이션 구현하기 (Paging)

    [Gosrock/Nestjs] PageDto를 이용한 페이지네이션 구현하기 (Paging)

    고스락 티켓 예매 페이지 22th 프로젝트의 일부인 페이지네이션 / 페이징 구현에 대한 글입니다 어드민 페이지에서 내가 구현한 티켓 서비스의 티켓을 특정 조건에 맞게 N개 가져올 필요가 있었다 그래서 페이지네이션을 제네릭을 이용하여 구현하게 되었다 언제 들었는지 기억은 안나지만 이런 말이 문득 생각난다 개발자가 힘들수록 사용자는 편리해진다 페이지네이션도 그렇다 서버 개발자는 페이징 구현이 귀찮고 짜증나지만 그것을 사용하는 프론트 개발자는 편할지어니,,,,,, 🔨 PageOptionsDto 구현 📝 enum.ts enum PageOrder { ASC = 'ASC', DESC = 'DESC' } 오름차순 / 내림차순 옵션을 위한 Enum 이다 📝 page-options.dto.ts export class P..

    [Gosrock/Nestjs] Guard 사용중인 Controller 내부 특정 메소드에 모든 접근 허가하기 (NoAuth)

    [Gosrock/Nestjs] Guard 사용중인 Controller 내부 특정 메소드에 모든 접근 허가하기 (NoAuth)

    고스락 티켓 예매 페이지 22th 의 일부인 @NoAuth 데코레이터 구현에 관한 글입니다 우선 이 글은 Nestjs 에서 AuthGuard 등의 Custom Guard 구현에 대해 알고 있다고 가정하고 작성했습니다 📝 Reference Guards - https://jakekwak.gitbook.io/nestjs/overview/guards 🔍 문제 상황 우선 고스락 티켓 프로젝트에서는 AccessTokenGuard 라는 커스텀 가드를 구현했고 이는 Role 기반으로 엑세스 토큰에서 유저와 그 권한을 뽑아와서 해당 요청 메소드에 접근 권한이 있는지 확인하고 접근 인가 / 불가 처리를 하는 것이다 자세한 것은 고티켓 팀장님의 포스팅을 참고하십쇼 https://devnm.tistory.com/16?cate..

    [Spring] Swagger 연동 시 Unable to infer base url 접속 에러 (ResponseBodyAdvice)

    [Spring] Swagger 연동 시 Unable to infer base url 접속 에러 (ResponseBodyAdvice)

    Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the swagger resources are served. For e.g. if the api is available at http://example.org/api/v2/api-docs then the base url is http://example.org/api/. Please enter the location manually: 스웨거 사용 중인 스프링 부트 서버에서 기능 업그레이드 중 갑작스럽게 나타난 에러 원래는 ..

    [Spring] 스프링 시큐리티로 CORS와 preflight 설정하기

    [Spring] 스프링 시큐리티로 CORS와 preflight 설정하기

    스프링 시큐리티로 CORS 설정 삽질해서 해결한 과정을 올려본다 사실 결론부터 말하자면 설정은 몇 줄 빼고 아주 잘 되어있었고 도커 이미지 태그가 달라져서 갱신이 안됐던거였다 ^^^^^;;; 로컬 환경에서는 너무나도 잘 되다가 EC2에 띄웠을 때만 자꾸 계속 preflight 과정에서 CORS 이슈가 생겨서 무한 삽질을 하고 있었다 그러다가 도커 컴포즈 파일을 봤는데 도커 이미지 태그가 바뀐 걸 보고 아,,, 한숨밖에 안나왔다 그 과정에서 CORS 관련 공부는 된 거 같아서 긍정적으로 생각할란다 🔥 문제 상황 주니어 개발자들을 벌벌 떨게 만드는 무시무시한 CORS 에러 Access to XMLHttpRequest at '{SERVER}' from origin '{ANOTHER ORIGIN}' has be..

    [React] 로컬 환경에서 CORS 이슈 임시로 해결하기 + 스프링 CORS 설정

    [React] 로컬 환경에서 CORS 이슈 임시로 해결하기 + 스프링 CORS 설정

    백엔드와 프론트엔드를 동시에 만지는 중이라서 결국 손 놨던 리액트까지 다시 공부중이다 회원가입 + 로그인 로직을 건드리는 중인데 분명 백엔드 서버에서 CORS 설정을 해놨는데도 자꾸 팅기는 것이다 그래서 적어보는 프론트 단에서 CORS 이슈 해결하는 방법 ✨ 개발 환경 Spring Boot React 📌 CORS ? Cross Origin Resource Sharing 의 약자 하나의 도메인에서 다른 도메인의 리소스에 접근할 수 있게 해주는 보안 메커니즘 동일 출처 정책(SOP), 즉 프로토콜과 호스트명, 포트가 같은 출저의 리소스에만 접근할 수 있도록 제한하는 정책 때문에 등장했으며 현재는 다른 서버에서 제공하는 API를 사용하는 일이 많아 더욱 더 필요하게 되었다 보통 백엔드 서버 쪽에서 먼저 이 C..

    [AWS/Docker/Nginx] 단일 서버에서 도메인별 서비스 제공하기

    [AWS/Docker/Nginx] 단일 서버에서 도메인별 서비스 제공하기

    분명 세팅 잘 했는데도 서브도메인이 모두 같은 포트로 넘어가서 하루 종일 끙끙대다가 도움을 받아서 겨우 해결한 문제 사실 설정값 문제는 없었지만 docker-compose 로 이미지 빌드가 제대로 안되어서 이전 설정값으로 계속 사용중이었음 ^^;;; 아무튼 고쳤으니까 블로그 정리하는 김에 적어봅니다 📌 작업 환경 AWS EC2 + ELB Docker Nginx Spring boot React 📁 프로젝트 구조 🔨 도커 컴포즈 세팅 📝 docker-compose.yml version: "3.7" services: # redis 설정 redis: image: "redis:alpine" network_mode: "host" # 서버 설정 backend: image: gengminy/hifi-dev:dev co..