🛠 로컬 환경에서 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 |