Skip to content

[Feature] 게이트웨이 서버 거치도록 변경 및 docker로 배포 방식 변경#60

Merged
imeasy99 merged 33 commits intodevfrom
feat/internal-server-api
Feb 23, 2026
Merged

[Feature] 게이트웨이 서버 거치도록 변경 및 docker로 배포 방식 변경#60
imeasy99 merged 33 commits intodevfrom
feat/internal-server-api

Conversation

@imeasy99
Copy link
Copy Markdown
Collaborator

📝 작업 내용

  • 소셜 로그인/연동 redirectUri 지원

    • Google/Kakao/Naver 로그인/연동 요청 DTO에 redirectUri: String? 필드 추가
    • SocialLoginRequest, SocialLinkRequest, OAuthAuthCodeRequestredirectUri 필드 추가
    • LoginProvider / LinkProvider에서 OAuthAuthCodeRequest 생성 시 redirectUri 전달
    • OAuthRedirectUriResolver에서 요청에 redirectUri가 있으면 그 값 사용, 없으면 env 기본 *_REDIRECT_URI 사용하도록 단순화
    • 각 OAuth 클라이언트(GoogleOAuthClient, KakaoOAuthClient, NaverOAuthClient)가 Resolver를 통해 최종 redirect_uri를 결정하도록 수정
  • 배포/운영 개선

    • 레포 루트에 docker-compose.yml 추가
      • env/auth-be.env, env/api-gateway.env 를 사용하는 상대 경로 구성
      • auth-be, api-gateway 두 서비스를 하나의 compose로 관리
    • .github/workflows/deploy.yml 수정
      • EC2에 docker-compose.yml 복사
      • EC2에서 docker compose pull auth-be && docker compose up -d auth-be 만 실행해 auth-be만 부분 재배포
    • .dockerignore 추가로 Docker 빌드 컨텍스트 축소
    • docs/ENV.md, docs/OAuth_redirect_URI_전략.md, CORS/API Gateway 관련 가이드 문서 추가 및 최신 로직(redirectUri 처리 방식)에 맞게 정리

💬 리뷰 요구사항

  • redirectUri 처리 로직
    • redirectUri가 null/빈 문자열일 때 항상 env 기본값(GOOGLE_REDIRECT_URI, KAKAO_REDIRECT_URI, NAVER_REDIRECT_URI)을 사용하도록 한 흐름이 자연스러운지,
    • 로그인/연동 모두에서 redirectUri 전달 경로(Controller DTO → 도메인 → Provider → OAuthClient)가 빠짐없이 연결되어 있는지 봐주시면 좋겠습니다.
  • 배포 플로우
    • .github/workflows/deploy.yml 에서 EC2 상의 docker-compose.yml 위치/경로 가정(~/docker-compose.yml, ~/env/auth-be.env)이 실제 운영 환경과 맞는지 확인 부탁드립니다.

HJunng and others added 30 commits February 9, 2026 18:14
- `Role` 사용 및 관련 로직 삭제
- `JwtProvider` 메서드 간소화 및 `UuidCreator`로 jti 생성 로직 변경
- `PrincipalDetails` 구조 단순화 (역할 제거)
- `AdminApi` 어노테이션 삭제
- `Role` 삭제 및 관련 애트리뷰트, 메서드 제거
- `UUID.randomUUID`를 `UuidCreator.getTimeOrdered`로 대체
- `JwtProvider` 호출 시 역할 매개변수 제거
- Gradle Wrapper 설정 파일 및 관련 JAR 파일 추가
- FailResponse, SuccessResponse, Responses 클래스 제거
- CommonResponse 추가로 성공 및 실패 응답 통합
- 공통 응답 코드 및 메시지 Companion Object에 정의
- GlobalExceptionHandler에서 FailResponse 대신 CommonResponse로 변경
- RateLimiterInterceptor의 실패 응답에 CommonResponse.fail 활용
- FailResponse 관련 로직 및 호출부 제거
- 모든 컨트롤러 및 핸들러에서 CommonResponse로 응답 통일
- SuccessResponse, FailResponse, Responses 클래스 삭제
- API 문서 응답 스키마를 CommonResponse 기반으로 수정
- MemberService에 getPrimaryProvider 메서드 추가
- application.yml에 서버 포트 설정 변경 (9000)
- 애플리케이션 빌드를 위한 멀티 스테이지 Dockerfile 추가
- Gradle 빌드 설정 및 결과 JAR 파일 컨테이너에 복사
- 애플리케이션 실행을 위한 기본 이미지 설정 (Eclipse Temurin 기반)
- 9000 포트 노출 및 실행 명령어 추가
- 비루트 사용자 생성 및 사용 설정
- README.md에 EC2 Docker 배포 섹션 추가
- GitHub Actions 빌드·푸시 및 컨테이너 갱신 흐름 설명
- 프로젝트 이름을 'auth-backend'로 수정 (settings.gradle.kts)
- Docker 이미지 빌드 및 푸시 단계 분리 (`docker/build-push-action`)
- EC2 환경 변수 관리 파일 처리 방식 변경 (로컬 생성 및 원격 전송)
- 컨테이너 배포 시 기존 컨테이너 정리 및 새 이미지 실행 추가
- 프로젝트에 필요한 환경 변수 `.env.sample` 파일 추가
- 프로필, 데이터베이스, JWT, 메일 설정 등 기본 값 포함
- Google, Kakao, Naver OAuth 클라이언트 설정 추가
- CORS 허용 도메인 및 기본 시간대 설정 포함 (Asia/Seoul)
- 프로젝트 이름을 'auth-backend'에서 'auth-be'로 변경
- `.env.sample`에 JWT 토큰 만료 시간 기본값 추가 (1h, 14d)
- CORS 허용 도메인에 `auth.easyappfactory.com` 추가
- GitHub Actions 워크플로의 환경 변수 파일명 수정
- README.md 및 Dockerfile 등 관련 문서 및 파일 수정
- POSIX 호환 Gradle 시작 스크립트 추가
- `gradlew`를 통해 프로젝트 빌드 및 관리 기능 제공
- 다양한 OS에서 유연한 빌드 환경 지원
- CommonResponse에 @JsonInclude(JsonInclude.Include.NON_NULL) 추가
- 실패 응답 타입을 `Nothing?`에서 `Unit`으로 변경
- 컨트롤러 응답에서 불필요한 `data = null` 제거
- 인증 이메일 요청 및 인증 로직 리팩토링으로 코드 간결화
- CommonResponse에 @JsonInclude(JsonInclude.Include.NON_NULL) 추가
- 실패 응답 타입을 `Nothing?`에서 `Unit`으로 변경
- 컨트롤러 응답에서 불필요한 `data = null` 제거
- 인증 이메일 요청 및 인증 로직 리팩토링으로 코드 간결화
- 워크플로의 ENV_FILE 환경 변수명을 AUTH_BE_ENV_FILE로 수정
- echo에서 printf로 변경하여 출력 포맷 안정성 확보
- 환경 변수 파일 경로를 `/env/auth-be.env`에서 `~/env/auth-be.env`로 변경
- README.md의 Docker 실행 명령어 반영
- GitHub Actions 워크플로에서 EC2 환경 변수 디렉토리 생성 방식 수정
- 배포 스크립트에 Docker 명령어 경로 명시 및 로깅 아웃 추가
- `.env.sample`의 `DB_USER`를 `DB_USERNAME`으로 변경
- `application-prod.yml`의 데이터베이스 username 키에 변경된 환경 변수 반영
- Spring Security 설정에서 CORS 비활성화 (`cors { it.disable() }`)
- WebConfig에서 CORS 관련 설정 및 빈 제거
- API Gateway에서만 CORS 처리하도록 구조 변경
- REST API 경로에서 빠진 '/' 누락 부분 수정
- Spring Security 설정에서 CORS 비활성화 (`cors { it.disable() }`)
- WebConfig에서 CORS 관련 설정 및 빈 제거
- API Gateway에서만 CORS 처리하도록 구조 변경
- REST API 경로에서 빠진 '/' 누락 부분 수정
- OAuth 인증 요청 시 redirectUri 파라미터 추가 및 검증 로직 구현
- Google, Kakao, Naver 클라이언트의 redirectUri 처리 로직 추가
- 요청 DTO 및 도메인 모델에 redirectUri 필드 추가
- 허용되지 않은 redirectUri 예외 처리 코드 정의 (INVALID_REDIRECT_URI)
- README.md의 OAuth 요청 예시에 redirectUri 관련 내용 추가
- OAuth 인증 요청 시 redirectUri 파라미터 추가 및 검증 로직 구현
- Google, Kakao, Naver 클라이언트의 redirectUri 처리 로직 추가
- 요청 DTO 및 도메인 모델에 redirectUri 필드 추가
- 허용되지 않은 redirectUri 예외 처리 코드 정의 (INVALID_REDIRECT_URI)
- README.md의 OAuth 요청 예시에 redirectUri 관련 내용 추가
Co-authored-by: Cursor <cursoragent@cursor.com>
- GitHub Actions 워크플로의 배포 대상 브랜치를 `feat/internal-server-api`에서 `dev`로 변경
[Feature] internal gateway 서버 거치는 방식으로 변경 및 Docker 배포 방식으로 변경
- GitHub Actions 워크플로의 배포 대상 브랜치에 `feat/internal-server-api` 추가
- `docker-compose.yml` 복사 단계 제거
- `docker compose up` 명령에 `--no-deps` 옵션 추가하여 의존성 컨테이너 재시작 방지
- `docker-compose.yml` 복사 단계 제거
- `docker compose up` 명령에 `--no-deps` 옵션 추가하여 의존성 컨테이너 재시작 방지
…eat/internal-server-api

# Conflicts:
#	.github/workflows/deploy.yml
- auth-be 컨테이너 종료 및 강제 제거 명령 추가
@imeasy99 imeasy99 self-assigned this Feb 23, 2026
@imeasy99 imeasy99 added the 🍎 fix 기능 수정 label Feb 23, 2026
@imeasy99 imeasy99 merged commit e44efdf into dev Feb 23, 2026
2 checks passed
imeasy99 added a commit that referenced this pull request Apr 2, 2026
* feat: 서브도메인 통일위해 cors 설정 수정

* [Feature] 게이트웨이 서버 거치도록 변경 및 docker로 배포 방식 변경 (#60)

* chore: 추가 UUID 생성 라이브러리 의존성
* fix: 사용자 역할 관련 로직 제거 및 JwtProvider 리팩토링
- `Role` 사용 및 관련 로직 삭제
- `JwtProvider` 메서드 간소화 및 `UuidCreator`로 jti 생성 로직 변경
- `PrincipalDetails` 구조 단순화 (역할 제거)
- `AdminApi` 어노테이션 삭제
* fix: `Role` enum 및 관련 로직 제거
- `Role` 삭제 및 관련 애트리뷰트, 메서드 제거
- `UUID.randomUUID`를 `UuidCreator.getTimeOrdered`로 대체
- `JwtProvider` 호출 시 역할 매개변수 제거
* fix: 소셜 로그인 역할 제거

* feat: Gradle Wrapper 설정 추가
* feat: CommonResponse로 통합 및 불필요 클래스 제거

* feat: Dockerfile 추가 및 애플리케이션 컨테이너화
* feat: EC2 Docker 배포 문서 추가 및 프로젝트 이름 수정
* feat: EC2 배포 GitHub Actions 워크플로 개선
* feat: 프로젝트 이름 변경 및 환경 변수 수정
* feat: GitHub Actions 환경 변수 파일 처리 방식 개선
* feat: EC2 환경 변수 경로 및 배포 스크립트 개선
* feat: CORS 설정 제거 및 Gateway 위임 처리
* feat: redirectUri 지원 및 소셜 로그인 처리 개선
* feat: 배포 워크플로 브랜치 업데이트

* feat: 쿠키 기반 인증 기능 추가 및 기존 토큰 처리 방식 개선 (#61)

- `JwtAuthenticationFilter` 수정: HttpOnly 쿠키에서 accessToken 우선 추출하도록 개선
- CookieFactory 추가: AccessToken/RefreshToken 생성을 안전하게 관리
- CookieProperties 추가: 쿠키 설정값 분리 및 관리 용이성 향상
- 기존 ResponseCookie 생성 로직을 CookieFactory로 위임
- SocialLoginController 및 AuthController에서 토큰 처리 방식 리팩토링
- `application-dev.yml` 및 `application-prod.yml`에 쿠키 설정 값 추가

* [Fix] 토큰 재발급 로직 변경 (#62)

* fix: JWT 처리 방식 개선 및 인증 로직 확장

- `JwtAuthenticationFilter` 리팩토링: 토큰 추출 방식 통합 및 중복 제거
- `/api/v1/auth/introspect` 엔드포인트 인증 필요 없이 접근 가능하도록 변경
- 만료된 토큰에서도 클레임을 안전히 조회할 수 있도록 내부 로직 확장
- 토큰 관련 예외 처리 및 유효성 검사 코드 간소화

* feat: 토큰 introspect 엔드포인트 확장 및 사일런트 리프레시 지원

- Access Token 만료 시 Refresh Token 기반 자동 재발급
- 새 토큰을 Set-Cookie 헤더로 반환
- 요청 토큰 탐색 우선순위 정의 (HttpOnly 쿠키 > Authorization 헤더)
- AT·RT 쿠키 만료를 위한 `clearAuthCookies` 유틸리티 메서드 추가
- `jwtProvider` 사용하여 남은 토큰 유효 시간 및 클레임 처리 로직 개선
- 요청 인증 중 예외 발생 시 쿠키 정리 및 상태 코드 401 반환 처리

* feat: 배포 워크플로 브랜치 목록 수정

* feat: HttpOnly 쿠키 기반 인증 방식 리팩토링

- Authorization 헤더 방식 제거 및 HttpOnly 쿠키 적용
- AccessToken/RefreshToken 반환 방식을 HttpOnly 쿠키로 통일
- 클라이언트별 토큰 처리 순서 및 예외 로직 개선
- 불필요한 응답 헤더(X-Auth-Provider) 제거
- API 문서 수정: 새로운 토큰 처리 방식 반영
- SocialLoginController와 AuthController 코드 간소화 및 가독성 향상

* Revert "[Fix] 토큰 재발급 로직 변경 (#62)" (#63)

This reverts commit e388a92.

* [Fix] 토큰 재발급 로직 변경 및 로그인 시 토큰 쿠키에 담는 것으로 변경 (#64)

* fix: JWT 처리 방식 개선 및 인증 로직 확장

- `JwtAuthenticationFilter` 리팩토링: 토큰 추출 방식 통합 및 중복 제거
- `/api/v1/auth/introspect` 엔드포인트 인증 필요 없이 접근 가능하도록 변경
- 만료된 토큰에서도 클레임을 안전히 조회할 수 있도록 내부 로직 확장
- 토큰 관련 예외 처리 및 유효성 검사 코드 간소화

* feat: 토큰 introspect 엔드포인트 확장 및 사일런트 리프레시 지원

- Access Token 만료 시 Refresh Token 기반 자동 재발급
- 새 토큰을 Set-Cookie 헤더로 반환
- 요청 토큰 탐색 우선순위 정의 (HttpOnly 쿠키 > Authorization 헤더)
- AT·RT 쿠키 만료를 위한 `clearAuthCookies` 유틸리티 메서드 추가
- `jwtProvider` 사용하여 남은 토큰 유효 시간 및 클레임 처리 로직 개선
- 요청 인증 중 예외 발생 시 쿠키 정리 및 상태 코드 401 반환 처리

* feat: 배포 워크플로 브랜치 목록 수정

* feat: HttpOnly 쿠키 기반 인증 방식 리팩토링

- Authorization 헤더 방식 제거 및 HttpOnly 쿠키 적용
- AccessToken/RefreshToken 반환 방식을 HttpOnly 쿠키로 통일
- 클라이언트별 토큰 처리 순서 및 예외 로직 개선
- 불필요한 응답 헤더(X-Auth-Provider) 제거
- API 문서 수정: 새로운 토큰 처리 방식 반영
- SocialLoginController와 AuthController 코드 간소화 및 가독성 향상

* [Deploy] 알파 서버 분리 및 서버 이전 (#65)

* feat: 소셜 로그인 및 토큰 처리 로직 리팩토링

- OAuthClient 인터페이스 구현 정리 및 카카오/구글 OAuth 로직 통합
- id_token 파싱 추가로 사용자의 프로필 정보를 효율적으로 처리
- 사용자 로그인 응답 속도를 개선하기 위해 비동기적 로그인 시간 업데이트 도입
- RefreshToken 발행 및 관련 로직 간소화
- RestTemplate 구성 추가로 HTTP 통신 설정 통합
- 코드 가독성 및 유지보수성을 고려한 주요 메서드 리팩토링

* feat: 프로파일별 설정 분리 및 데이터베이스 설정 변경

* feat: PostgreSQL 전환 및 배포 프로세스 개선

- 프로젝트 데이터베이스를 MySQL에서 PostgreSQL로 전환
- Docker Compose 설정 삭제 및 환경 변수 샘플 파일 업데이트
- Gradle에 PostgreSQL 드라이버 및 HTTP 클라이언트 의존성 추가
- EC2 배포 워크플로 수정: 브랜치별 환경 변수 처리 및 Docker Run 방식 적용
- 기존 CORS 설정 초기화 및 Gateway를 통한 위임 구조 반영

* feat: 배포 워크플로 브랜치 리스트에 alpha 추가

* feat: 환경별 프로파일 설정 및 배포 워크플로 개선

- 운영, 알파, 로컬 환경별 Spring 프로파일 설정 추가
- SPRING_PROFILES_ACTIVE 기본값을 'local'로 변경
- GitHub Actions 배포 워크플로 환경 변수 처리 방식 간소화
- Docker Hub 및 EC2 관련 Secrets 활용으로 보안 강화
- PEM 키 처리 로직 개선 및 유효성 검증 추가

* feat: RestClient 구성 추가 및 기존 RestTemplate 제거

- Spring WebClient 기반 RestClientConfig 추가
- Kakao, Google, Naver OAuth 클라이언트에서 RestTemplate 제거 후 RestClient로 전환
- Spring Boot, Kotlin, HttpClient 등 주요 의존성 버전 업그레이드
- Gradle 설정 업데이트: Spring Boot 4 및 Kotlin 2.3 대응

* feat: Java 언어 버전 다운그레이드

* feat: JSON 데이터 처리 의존성 추가

- Spring Boot JSON Starter 의존성 추가
- JSON 처리 기능 개선 및 확장 준비 완료

* feat: `ObjectMapper`를 `JsonMapper`로 전환

* feat: EC2 배포 환경 설정 개선 및 워크플로 업데이트

- EC2 배포 기본 경로 설정(PROJECT_ROOT) 추가 및 환경변수 경로 명시

* feat: 배포 워크플로 환경 변수 설정 추가

* feat: 배포 워크플로 EC2 기본 경로 수정

- EC2 배포 경로를 명확히 설정하기 위해 PROJECT_ROOT 값을 절대 경로로 변경

* feat: GitHub Actions 배포 워크플로 운영 이미지 태그 변경

- IMAGE_TAG 값을 latest에서 prod로 수정
- 운영 환경(Spring 프로파일)과 이미지 태그 설정 일치하도록 개선

* feat: 배포 워크플로 docker-compose 명령어를 docker compose로 변경

- docker-compose 명령어를 최신 표준인 docker compose로 교체
- 배포 스크립트의 가독성 및 유지보수성 향상

* feat: 배포 워크플로 docker compose 명령어 업데이트

- docker stop 및 rm 명령어를 docker compose stop과 rm으로 변경
- `--force-recreate` 옵션 추가로 컨테이너 재생성 로직 개선

* feat: 소셜 로그인 응답 데이터 필드 기본값 추가

- GoogleUserInfoResponse의 `verifiedEmail` 필드 기본값을 `true`로 설정
- NaverUserInfoResponse의 `verifiedEmail` 필드 기본값을 `false`로 설정

* feat: Google OAuth `verifiedEmail` 필드 기본값 추가

- GoogleUserInfoResponse의 `verifiedEmail` 값이 null일 경우 기본값을 `true`로 설정하여 예외 방지

* feat: 프로젝트 환경 설정 및 의존성 업데이트

- Java 버전을 25로 업그레이드하고 관련 Gradle 설정 업데이트
- Gradle 및 Kotlin 플러그인 버전 업그레이드
- 로깅 설정 추가: Logback 구성(`logback-spring.xml`) 및 Spring 프로퍼티 적용

* feat: 로깅 및 Hibernate 설정 업데이트

- Hibernate `format_sql` 설정 값 false로 변경 (모든 환경)
- `org.hibernate.SQL` 로그 레벨을 warn에서 error로 변경 (prod 환경)
- Logback 설정 개선: 'service', 'env' 필드 자동 포함 처리
- local, alpha 환경에서 Hibernate SQL 로깅 추가 (JSON 형식)

* feat: 환경 설정 및 배포 워크플로 업데이트

- `application-prod.yml` 및 `application-alpha.yml` Hibernate 및 로깅 설정 조정
  - Hibernate `format_sql` 및 `use_sql_comments` 설정 추가
  - 로그 레벨 수정: prod 환경에서 `WARN` → `ERROR`, alpha 환경에서 `INFO` → `DEBUG`
- EC2 배포 워크플로 기본 경로(PROJECT_ROOT) 절대 경로에서 홈 디렉토리로 수정

---------

Co-authored-by: TwoMuchSilver <silver@easyappfactory.com>
Co-authored-by: Pokbab <xxxtintin@naver.com>
@imeasy99 imeasy99 deleted the feat/internal-server-api branch April 6, 2026 03:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🍎 fix 기능 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants