본문 바로가기
프로그래밍/AWS

redirect_uri_mismatch 오류 해결

by poeee 2024. 11. 10.

redirect_uri_mismatch 오류란?

OAuth2 인증을 구현할 때, 사용자가 Google에 인증을 요청하고 인증을 마치면 Google은 사용자에게 액세스 토큰을 전달하기 위해 미리 지정된 리디렉션 URI로 다시 리디렉션합니다.

이때 애플리케이션에서 설정한 redirect_uri가 Google에 등록된 값과 다르면 Google은 요청을 거부하고redirect_uri_mismatch 오류를 반환하게 됩니다.

 

오류 메시지 예시

 

오류 원인

이 오류는 redirect_uri가 다음과 같은 이유로 일치하지 않을 때 발생합니다:

  • 애플리케이션에 설정한 redirect_uri와 Google Cloud Console에 등록된 리디렉션 URI가 다를 때
  • Google Cloud Console에 등록되지 않은 redirect_uri를 사용하려 할 때

 

해결 방법

redirect_uri_mismatch 오류를 해결하기 위해 아래 단계를 따라 필요한 설정을 검토하고 수정합니다.

1단계: 애플리케이션 설정 파일에서 redirect_uri 확인

먼저 애플리케이션에서 사용하고 있는 redirect_uri 설정을 확인해야 합니다. 예를 들어, Spring Boot 애플리케이션의 application.properties 또는 application-prod.properties 파일에서 다음과 같은 설정이 올바르게 되어 있는지 확인합니다.

spring.security.oauth2.client.registration.google.redirect-uri=https://도메인/login/oauth2/code/google
 

redirect-uri는 프로덕션 환경에서 사용할 도메인 주소로 설정해야 합니다.

예를 들어, 운영 환경에서 https://example.fun을 사용한다면 https:// example .fun/login/oauth2/code/google로 설정해야 합니다.

 

2단계: Google Cloud Console에서 OAuth 2.0 클라이언트 ID 설정 확인

  1. Google Cloud Console에 접속합니다. Google Cloud Console 링크를 통해 로그인하세요.
  2. 왼쪽 메뉴에서 API 및 서비스 > 사용자 인증 정보로 이동합니다.
  3. OAuth 2.0 클라이언트 ID를 클릭하여 세부 설정 페이지로 이동합니다.
  4. 승인된 리디렉션 URI 항목에 애플리케이션 설정에서 사용한 redirect_uri가 정확히 일치하는지 확인합니다.

주의 사항

  • 리디렉션 URI는 정확히 일치해야 합니다. 일부 특수 문자나 URL 인코딩 문제로 오류가 발생할 수 있으므로 주의합니다.
  • http://localhost:9090/... 등 로컬 개발 환경에서 사용한 URI는 운영 환경에서는 사용할 수 없습니다. 운영 서버에 맞는 도메인을 지정해야 합니다.

 

3단계: 외부 환경 설정 파일을 사용하는 경우 서버 환경 확인

애플리케이션이 올바른 환경 설정 파일을 읽고 있는지 다시 한번 확인해 보세요. application-prod.properties와 같은 외부 설정 파일을 사용한다면, 서버 실행 스크립트 또는 배포 설정에서 이를 제대로 적용했는지 확인해야 합니다.

예를 들어, Spring Boot에서는 다음과 같이 외부 설정 파일을 지정할 수 있습니다.

 

java -jar -Dspring.config.additional-location=file:/home/ubuntu/config/application-prod.properties /path/to/your-app.jar
 

이 명령어를 사용하면 application-prod.properties의 redirect-uri 설정이 적용됩니다.

 

4단계: 브라우저 캐시 문제 해결

Google 인증 서버가 이전에 캐시된 잘못된 URI 정보를 사용하는 경우도 있습니다. 이 경우 브라우저의 캐시를 지우거나, 새로운 시크릿 모드(익명 모드) 창에서 다시 시도해보세요. 일부 캐시 문제는 브라우저의 세션에 저장되기 때문에, 다른 브라우저를 사용하거나 시크릿 모드에서 시도해 보면 캐시 문제를 해결할 수 있습니다.


결론

OAuth2 인증을 구현할 때 redirect_uri_mismatch 오류는 자주 발생하지만, 문제 원인은 비교적 명확합니다. 이 오류는 주로 애플리케이션에서 설정한 redirect_uri가 Google Cloud Console에 등록된 값과 일치하지 않을 때 발생합니다. 올바른 redirect_uri를 설정하고, 환경 설정 파일을 적용하여 문제가 해결되었는지 확인하세요.