EC2 배포후 구글 로그인 안됨

23.11.29 09:25 작성 조회수 422

0

스프링부트 REST + OAuth2 + JWT를 사용하고 있는 상황인데

로컬에서는 잘 돌아갑니다.

로컬에서 소셜로그인이 성공하면 OAuth2SuccessHandler에서 바로 JSON으로 반환해주는 형태입니다. 즉, 컨트롤러가 딱히 무슨 역할을 하지 않아도 바로 반환을 해줍니다.

하지만 EC2에 배포하고 구글 개발자 센터, yml에 EC2 퍼블릭을 제대로 입력해주고 제대로 일치하는 것을 확인했고

버튼을 클릭하면 아이디들이 제대로 뜹니다. 하지만 로그인한 결과 로그인할 아이디를 클릭을 하면

Whitelabel Error Page 404페이지가 뜹니다.

그래서 실패했을 때 JSON으로 반환시켜주는 로직을 추가해서 확인한 결과

"error 발생 : ": "[authorization_request_not_found] "

이러한 오류가 발생했습니다.

 

항상 체크해야하는요소

  1. yml 체크함

  2. 구글 개발자 센터 확인함

→ 1, 2번은 일치함

  1. EC2 인스턴스의 보안 그룹이 OAuth2 콜백 URL로 요청을 수신할 수 있도록 올바르게 설정되었는지 확인 → 이거는 어떻게 다른 설정법이 있을까요?

  2. application.yml 또는 application.properties에 설정된 값들이 프로덕션 환경에 맞게 정확히 설정

    이렇게 환경변수를 받아서 ec2 배포시 사용할 수 있도록 설정했는데 추가적으로 또 뭔가를 해줘야 하나요?

  3. 혹시 OAuth2 google을 테스터로 해놓고 http로 해놓으면 ec2 배포시에는 사용하지 못하나요?

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.11.29

안녕하세요, 인프런 AI 인턴입니다.

유요한님의 문제는 EC2 환경에서 구글 로그인이 정상적으로 동작하지 않는 상황으로 보입니다. 로컬 환경에서는 문제가 없으나 EC2에 배포 후 Whitelabel Error Page 404가 나타나고, 오류 메시지로 “error 발생 : “: “[authorization_request_not_found] “가 표시된다고 하셨습니다. 이를 해결하기 위해 다음 사항들을 확인해 보시는 것이 좋겠습니다.

  1. EC2 인스턴스의 보안 그룹 설정

    • OAuth2를 사용한 인증은 특정 포트로 들어오는 요청을 받아들여야 합니다. EC2 인스턴스의 보안 그룹 설정에서 OAuth 2.0 콜백 URL과 관련된 포트(대게 HTTP 80, HTTPS 443)가 열려 있는지 확인해야 합니다.
  2. 프로덕션 환경 설정

    • application.yml 또는 application.properties 파일에 설정된 값들이 프로덕션 환경, 특히 EC2 인스턴스에서 올바르게 사용될 수 있도록 환경변수가 정확하게 설정되어 있는지 확인해야 합니다.
  3. HTTPS와 OAuth2 구글 설정

    • 일반적으로 OAuth2는 안전한 연결을 요구합니다. 만약 구글 개발자 콘솔에서 테스터 설정을 http로 해놓았다면, 이는 문제를 일으킬 수 있습니다. EC2 환경에서는 HTTPS를 사용하여 안전한 연결을 구성해야 합니다. 따라서 콜백 URL을 HTTPS로 변경하고 SSL/TLS 설정을 완료해야 할 수도 있습니다.
  4. 클라이언트 ID와 시크릿 값의 확인

    • 클라이언트 ID와 클라이언트 시크릿 그리고 redirect URI가 EC2 환경에서도 정확히 구글 개발자 콘솔에 등록된 정보와 일치하는지 다시 한 번 검토해야 합니다.
  5. 로깅 및 디버깅

    • 추가적으로 상세 로깅을 활성화하여 오류가 발생하는 구체적인 지점과 원인을 파악해 볼 수 있습니다.

OAuth2 관련 설정에 대한 더 자세한 정보는 Spring Security - OAuth2 문서를 참조하시기 바랍니다. 이러한 검토 사항들을 통해 문제를 해결해 나갈 수 있을 것입니다.