Spring/Spring Security

[Spring Security] Google OAuth2.0 400 오류: redirect_uri_mismatch 해결

번잔중 2023. 3. 8. 13:36

안녕하세요. 오랜만에 트러블 슈팅을 하게 됐습니다.

오늘은 google의 OAuth2.0를 사용하면서 생긴 문제입니다.

헛소리 안하고 바로 시작하겠습니다.

 

+ 바쁘신 분들은 맨 밑으로 가셔서 방법만 보셔도 됩니다.(다소 서운함)

배경

  • OAuth2.0 google을 배포하고 로그인을 시도했는데 아래와 같은 화면이 나왔습니다.

400 오류: redirect_uri_mismatch

  • 오류 세부 정보를 눌러보면 redirect-uri가 설정되지 않았다고 나왔는데, https://developers.google.com/identity/protocols/oauth2/web-server?hl=ko#authorization-errors-redirect-uri-mismatch 주소로 접속하면 redirect_uri_mismatch 관련 에러를 설명해주고 방법도 알려줍니다. 그래서 따라해보았습니다.
  • https://console.cloud.google.com/apis 주소에 가서 사용자 인증 정보 > OAuth2.0 클라이언트 ID 클릭 > 승인된 리디렉션 URI에서 주소를 확인해봐도 제가 만든 도메인 주소(https://{도메인 주소}/login/oauth2/code/google)에 대한 경로는 잘 입력 돼있었습니다.
  • 그래서 구글링으로 방법을 찾아본 결과, 원인을 찾고 해결할 수 있었습니다.

해결

  • 원인은 google의 승인된 리디렉션 URI를 application.yml에 redirect-uri 설정을 해주지 않아서였습니다.
  • redirect-uri에 승인된 리디렉션 uri 주소를 넣고 시도해보니 spring boot에서 제가 설정한 redirect-uri까지 토큰을 가지고 잘 넘어오는 것도 확인했습니다!

해당 uri를 써야합니다!

 

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: <Google OAuth2 클라이언트 ID>
            client-secret: <Google OAuth2 클라이언트 시크릿>
            redirect-uri: https://{설정한 도메인 주소}/login/oauth2/code/google
            scope:
              - email
              - profile

결론

  • 항상 메시지를 꼼꼼하게 읽어보자!
  • 구글링을 잘 해보자!