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 설정 확인
- Google Cloud Console에 접속합니다. Google Cloud Console 링크를 통해 로그인하세요.
- 왼쪽 메뉴에서 API 및 서비스 > 사용자 인증 정보로 이동합니다.
- OAuth 2.0 클라이언트 ID를 클릭하여 세부 설정 페이지로 이동합니다.
- 승인된 리디렉션 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를 설정하고, 환경 설정 파일을 적용하여 문제가 해결되었는지 확인하세요.
'프로그래밍 > AWS' 카테고리의 다른 글
Nginx와 Spring Boot 연동: 설정 파일의 역할과 구조 (1) | 2024.11.18 |
---|---|
application-private.properties 파일 내용 서버에 적용하기 (1) | 2024.11.09 |
start.sh 실행되지 않는 오류 (0) | 2024.10.31 |
[Java springboot] 프로젝트 배포하기 - 우분투(Ubuntu) 서버 접속하기 (2) | 2024.10.31 |
[Java springboot] 프로젝트 배포하기 - EC2 인스턴스 만들기 (0) | 2024.10.31 |