네이버 소셜 로그인 장애 - client-authentication-mtehod

jihunnit·2023년 4월 11일
1

소셜로그인

목록 보기
2/2

최근 대학교의 졸업 프로젝트 no18을 친한 동기들과 함께 개발중이다

이번 프로젝트도 어쩌다 보니 혼자 백엔드 개발을 담당하게 되었는데,
저번 프로젝트 당시 소셜 로그인 구현이 너무나 귀찮고 오래 걸려서
메인 비즈니스 로직이 오히려 부실해지는
소탐 대실을 크게 겪었던 경험이 있기에,
이번에는 빠르게 소셜 로그인을 구현하고, 엔티티의 형태를 어느정도 확정한 후에,
로직들을 진행할 생각이었다.

이번에 구현할 소셜 로그인은 구글, 카카오, 네이버였는데,
왠지 모르게 구글과 카카오가 잘 되는데도, 네이버만 잘 안됐다.

[invalid_token_response] An error occurred while attempting to retrieve the OAuth 2.0 Access Token Response: Error while extracting response for type [class org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse] and content type [application/json;charset=utf-8]

라는 오류가 계속 발생했다.

알고보니 문제는 여기에 있었다.

	naver:
     	  client-id: '{네이버 client-id}'
          client-secret: '{네이버 client-secret}'
          client-authentication-method: post
          authorization-grant-type: authorization_code
          redirectUri: "{baseUrl}/{action}/oauth2/code/{registrationId}"
          scope: nickname, email, profile_image

정도로 나는 작성을 했었는데
문제는 client-authentication-method에 있었다.
저걸 지우니까 말끔하게 실행이 잘 됐다!
이에 궁금해서 찾아봤다

client-authentication-method에는 세 종류가 있다.

  • basic : 클라이언트가 서버에게 clientId와 clientSecret를 인코딩하여 Authorization 헤더에 담아서 전송

  • post : 클라이언트가 서버에게 clientId와 clientSecret를 인코딩하여 Authorization 헤더에 담아서 전송

  • none: 클라이언트 인증을 하지 않음

구글링 했을 당시 대부분의 자료가 post로 되어 있기에 나도 그렇게 따라 하고 삽질을 했다. 실제로 kakao는 post 로 되어 있기에 더욱 헷갈렸다. 하지만 이번 기회에 Naver의 client_authentication_method는 client_secret_basic이다. 참고하자.

참고로 이거 기본값이다. 안적어주느니 못했다.

profile
인간은 노력하는 한 방황한다

0개의 댓글