안녕하세요. 오랜만에 트러블 슈팅을 하게 됐습니다.
오늘은 google의 OAuth2.0를 사용하면서 생긴 문제입니다.
헛소리 안하고 바로 시작하겠습니다.
+ 바쁘신 분들은 맨 밑으로 가셔서 방법만 보셔도 됩니다.(다소 서운함)
배경
- OAuth2.0 google을 배포하고 로그인을 시도했는데 아래와 같은 화면이 나왔습니다.
- 오류 세부 정보를 눌러보면 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까지 토큰을 가지고 잘 넘어오는 것도 확인했습니다!
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
결론
- 항상 메시지를 꼼꼼하게 읽어보자!
- 구글링을 잘 해보자!