Skip to content

feat : 프론트 주소를 여러 개 허용, OAuth 결과를 로그인을 시작한 출처로 리다이렉트 - #44

Merged
zwo-n merged 1 commit into
mainfrom
yuyeol3/feat/multi-frontend-origin
Nov 2, 2026
Merged

zwo-n merged 1 commit into
mainfrom
yuyeol3/feat/multi-frontend-origin

Conversation

@yuyeol3

@yuyeol3 yuyeol3 commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

변경점 👍

  • 목적: dev 서버(test-fin.duckdns.org)를 로컬 프론트(localhost:5173)와 Vercel 배포본(fin-fe-test-phi.vercel.app)이 함께 사용
  • 기존 문제
    • FRONTEND_URL 하나가 CORS 허용 출처이자 OAuth 리다이렉트 주소
    • Vercel에서 호출 시 CORS preflight 403, 로그인 후 localhost로 이동
  • app.frontend.url → app.frontend.urls(목록)
    • FRONTEND_URL에 쉼표로 여러 주소 지정
    • 주소 하나면 기존과 동일 동작(운영 포함)
  • CORS: 목록의 주소 모두 허용
  • OAuth 리다이렉트(FrontendOrigins)
    • /oauth2/authorization/* 요청의 Referer 출처가 목록에 있으면 세션에 저장
    • 성공·실패 핸들러가 저장된 출처로 리다이렉트
    • Referer 없음 또는 목록 밖이면 첫 주소로 리다이렉트
    • 프론트는 window.location 이동이라 Referer 자동 포함, 프론트 수정 불필요
    • OAuth 인가 요청이 이미 같은 세션에 저장되는 구조라 추가 저장소 불필요
  • open redirect 방지: 스킴·호스트·포트 완전 일치만 허용(fe.example.com.evil.com 같은 접두사, 다른 포트·스킴 거부)
  • 문서: auth-and-access.md, deployment.md의 FRONTEND_URL 설명 갱신

테스트 💻

  • FrontendOriginsTest(단위 13개)
    • 허용 출처 / 허용 안 된 출처 / Referer 없음
    • 형식 오류, 접두사·포트·스킴 불일치
    • 쿼리·프래그먼트 포함 Referer
    • 같은 세션 재로그인 시 이전 출처 미사용
  • FrontendOriginsIntegrationTest(통합 3개, 주소 2개 설정)
    • 두 번째 출처의 CORS preflight 허용
    • Referer 포함 로그인 시작 → OAuth 실패 시 시작 출처로 리다이렉트
    • Referer 없이 로그인 시작 → 첫 주소로 리다이렉트
    • CORS 허용을 첫 주소 하나로 되돌리면 실패하는 것 확인(변이 확인)
  • 전체 test 280개, integrationTest 118개 통과
  • 미검증: 성공 핸들러(실제 OAuth 제공자 필요). 실패 핸들러와 같은 redirectBase 사용, 머지 후 실제 로그인으로 확인 예정

머지 후 체크리스트

  • Environment dev의 FRONTEND_URL을 https://fin-fe-test-phi.vercel.app,http://localhost:5173로 변경 후 배포 재실행
    • 머지 전 변경 금지: 이전 코드가 쉼표 포함 문자열 하나를 출처로 사용해 CORS 깨짐
  • Vercel(Fin-FE-test) VITE_API_BASE_URL을 https://test-fin.duckdns.org로 변경 후 재배포
  • Vercel과 로컬 localhost:5173에서 /api/categories 호출, Google·Kakao 로그인 확인

@yuyeol3
yuyeol3 requested a review from zwo-n November 1, 2026 18:05
@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

Backend Code Health Report

Commit: 503f11a

Metric Current Base Change
Line Coverage 89.1% 88.8% +0.3 pp ✅
Branch Coverage 73.4% 73.2% +0.2 pp ✅
Code Health 92.8 (A) 92.8 (A) +0.0 ✅
Duplicated Lines 0.4% 0.4% -0.0 pp ✅
High-complexity Methods 10 10 0 ✅
PMD Issues 13 13 0 ✅

Attention

  • src/main/java/apptive/fin/search/service/ProductDetailService.java:113 — Cognitive Complexity 27 / Cyclomatic Complexity 25
  • src/main/java/apptive/fin/myfin/service/MyFinService.java:216 — Cognitive Complexity 19 / Cyclomatic Complexity 10
  • src/main/java/apptive/fin/myfin/service/MyFinService.java:250 — Cognitive Complexity 16 / Cyclomatic Complexity 10
  • Duplicated block (16 lines): src/main/java/apptive/fin/calculator/service/DepositRateCalculator.java:46 ↔ src/main/java/apptive/fin/calculator/service/SavingRateCalculator.java:60

Informational report only — these metrics do not block merging.

@yuyeol3 yuyeol3 changed the title feat : 프론트 주소를 여러 개 허용하고 OAuth 결과를 로그인을 시작한 출처로 리다이렉트 feat : 프론트 주소를 여러 개 허용, OAuth 결과를 로그인을 시작한 출처로 리다이렉트 Nov 1, 2026
@zwo-n

zwo-n commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

수고하셨습니다

@zwo-n
zwo-n merged commit c3d21f4 into main Nov 2, 2026
2 checks passed
@zwo-n
zwo-n deleted the yuyeol3/feat/multi-frontend-origin branch November 2, 2026 04:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants