Spring security OAuth2 카카오 로그인 401 [no body] 에러 질문드립니다

안녕하세요 Spring security OAuth2 라이브러리에 카카오 로그인을 연동하면서 다음과 같은 에러가 나와서 질문 드립니다.

[invalid_token_response] An error occurred while attempting to retrieve the OAuth 2.0 Access Token Response: 401 Unauthorized: [no body]

해당 오류는 Client Secret을 활성화 하지 않으면 발생하지 않고 정상적으로 처리되지만
Client Secret을 활성화 하면 발생합니다.

App ID : 784732
Spring boot 버전 : 3.0.1

먼저, application.yml에 다음과 같이 설정했습니다.

spring:
  security:
    oauth2:
      client:
        registration:
          kakao:
            client-id: client-id-code
            client-secret: client-secret-code
            authorization-grant-type: authorization_code
            client-authentication-method: POST
            redirect-uri: http://localhost/v2/oauth2/code/kakao  # redircet uri 커스텀
            scope:
              - profile_nickname
              - phone_number
            client-name: Kakao
          kakao:
            authorization-uri: https://kauth.kakao.com/oauth/authorize
            token-uri: https://kauth.kakao.com/oauth/token
            user-info-uri: https://kapi.kakao.com/v2/user/me
            user-name-attribute: id

후에 redirect uri 커스텀을 위해 SecurityConfiguration에 다음과 같이 설정했습니다.

http.oauth2Login()
	.authorizationEndpoint().baseUri("/v2/oauth2/login/**")
	.and()
	.redirectionEndpoint().baseUri("/v2/oauth2/code/**")

Client Secret 키도 재차 확인했지만 계속 오류가 나고 있는 상황입니다.

안녕하세요.

Client Secret 옵션이 활성화 되어 있지만, client_secret 파라미터가 누락되어 KOE010 오류가 발생하였습니다.
현재는 서비스측에서 해당 옵션을 비활성화 하여 오류가 발생하지 않고 있습니다.

application.yml 중 client-secret에 secret 값을 지정해주면 작동되는 것이 아닐까요?
제 질문의 의도는 client-secret에 값을 지정해주었는데도 에러가 나서 질문 드렸습니다.

client_secret 파라미터가 누락되어 발생한 오류 입니다.
해당 파라미터가 정상 설정 되셨는지 확인 부탁드립니다.

자문자답입니다. 디버깅 모드로 따라가다가 해결했습니다…

스프링 버전이 올라가면서 변경된건지는 모르겠지만,
client-authentication-method 값을 POST가 아니라 client_secret_post로 변경하면 해결됩니다.

spring:
  security:
    oauth2:
      client:
        registration:
          kakao:
            client-id: {clinet-id}
            client-secret: {client-secret}
            authorization-grant-type: authorization_code
            client-authentication-method: client_secret_post
4개의 좋아요

좀더 빨리 찾았으면 좋았을텐데 다 해결하고 찾았네요. Spring security 5.6 이후로 변경되었나 봅니다. (POST → client_secret_post) 로 변경됐네요.

https://docs.spring.io/spring-security/reference/5.6.0-RC1/servlet/oauth2/oauth2-client.html

여기에서 찾았습니다. ㅠ.ㅠ

3개의 좋아요