👥🚨 배포 후 로컬 실행 시 OAuth2 승인 오류

2026. 2. 7. 00:53·프로젝트/스프링 부트 3 백엔드 개발자 되기 Blog + 선착순 강의 프로젝트

🛠 로컬 환경에서 Google OAuth2 로그인 401 오류 해결기

1️⃣ 문제 상황

AWS 배포 환경에서는 정상적으로 동작하던 Google 소셜 로그인이
로컬 환경(localhost)에서 실행하자 아래와 같은 오류와 함께 차단되는 문제가 발생했다.

  • 현상
    • 로컬 실행 시 Google 로그인 실패
    • 인증 단계에서 즉시 차단됨
  • 에러 메시지
401 Unauthorized (invalid_client)
The OAuth client was not found

👉 동일한 코드인데 환경에 따라 동작이 달라지는 상황이었다.


2️⃣ 원인 분석

원인을 추적한 결과, 환경 설정 누락으로 인한 문제였다.
문제의 원인은 크게 두 가지였다.

1. 로컬 환경 변수 미설정

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: ${SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_ID}
            client-secret: ${SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_SECRET}
  • AWS 서버에는 환경 변수가 등록되어 있었지만
  • 로컬 인텔리제이 실행 환경에는 해당 값이 설정되어 있지 않음
  • 결과적으로 빈 값이 Google 서버로 전달되어 invalid_client 오류 발생

2.  Google Cloud Console 리디렉션 URI 누락

Google OAuth 클라이언트 설정을 확인해 보니,

  • 승인된 리디렉션 URI에 AWS 서버 주소만 등록
  • 로컬 테스트용 주소(localhost)는 미등록 상태

👉 Google OAuth는 등록된 Redirect URI가 아니면 인증을 차단한다.


3️⃣ 해결 과정

Step 1. 인텔리제이 환경 변수 설정

경로

IntelliJ → Edit Run Configurations → Environment Variables

 

아래 환경 변수 3가지를 추가했다.

SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_ID
SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_SECRET
JWT_SECRET_KEY

⚠️ 주의 사항

  • 변수 구분은 반드시 세미콜론(;)
  • 앞뒤 공백 제거 필수

❓ 왜 다른 사람에게 보이지 않을까?

  • 인텔리제이 Edit Configurations에 설정한 환경 변수는
    내 로컬 컴퓨터 메모리에만 저장되는 값
  • 코드 파일이 아니기 때문에:
    • GitHub에 push해도 공유되지 않음
    • .yml이나 .java 파일에 남지 않음

👉 의도된 보안 설계

Step 2. Google Cloud Console 리디렉션 URI 추가

Google Cloud Console → OAuth 클라이언트 설정에서
승인된 리디렉션 URI에 로컬 주소를 추가했다.

http://localhost:8080/login/oauth2/code/google

저장 후 다시 로컬에서 로그인 테스트를 진행했다.

'프로젝트 > 스프링 부트 3 백엔드 개발자 되기 Blog + 선착순 강의 프로젝트' 카테고리의 다른 글

👥💡 Querydsl 페이징: fetchResults()가 비권장(Deprecated)된 이유와 실무 정석 패턴  (0) 2026.02.14
👥🚨 수정시간 및 수정하기 작성자 권한 변경  (0) 2026.02.14
👥🚨 수정은 됐는데 화면에는 “실패”라고 뜬다?  (1) 2026.02.07
👥💡 N+1 리팩토링 과정  (1) 2026.02.07
👥🚨 로컬로 실행 후 배포한 서버에도 DB가 적용되는 이유  (0) 2026.02.07
'프로젝트/스프링 부트 3 백엔드 개발자 되기 Blog + 선착순 강의 프로젝트' 카테고리의 다른 글
  • 👥🚨 수정시간 및 수정하기 작성자 권한 변경
  • 👥🚨 수정은 됐는데 화면에는 “실패”라고 뜬다?
  • 👥💡 N+1 리팩토링 과정
  • 👥🚨 로컬로 실행 후 배포한 서버에도 DB가 적용되는 이유
hak0622
hak0622
개발하면서 “이게 뭐지?”라는 순간마다 궁금한 점을 바탕으로 정리한 개발 블로그입니다.
  • hak0622
    궁금한 개발 이야기 Why?
    hak0622
  • 전체
    오늘
    어제
    • 분류 전체보기 (68)
      • 공부 (36)
        • 1. 자바 ORM 표준 JPA 프로그래밍 - 기본.. (35)
        • 시험 (1)
      • 프로젝트 (32)
        • 스프링 부트 3 백엔드 개발자 되기 Blog + .. (32)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
hak0622
👥🚨 배포 후 로컬 실행 시 OAuth2 승인 오류
상단으로

티스토리툴바