SpringSecurity + 소셜로그인이 로컬에서는 잘 되는데 배포만 하면 loadUser()가 호출이 되지 않습니다

localhost 환경에서는 loadUser()와 successHandler()가 잘 호출됩니다만 …

배포만 하면 loadUser()와 successHandler()가 호출 되지 않습니다.

    http
            .oauth2Login((oauth2) -> oauth2
                    .userInfoEndpoint((userInfoEndpointConfig) -> userInfoEndpointConfig
                            .userService(customOAuth2UserService))
                    .authorizationEndpoint(redirection -> redirection
                            .baseUri("/api/oauth2/"))
                    .successHandler(customSuccessHandler)
                    .redirectionEndpoint(redirectionEndpointConfig -> redirectionEndpointConfig
                            .baseUri("/"))
            );

와 같이 SecurityConfig를 설정해놓은 상태입니다.

안녕하세요.

확인을 위해 앱 ID 부탁드립니다.


앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다

ex) 123456

1067520 입니다.

카카오 로그인 이후, 브라우저 주소창에는 어떻게 표시되고 있을까요?

https://k10c102.p.ssafy.io/?code=0HRy_3KVc_i9IRe0yf9rbc97YgNaCztZhTLyoDgiVoMQWs3dko2xH8ompIIKPXUZAAABj1YC_Kmm1x-HnlkNwQ&state=Nh_LiKoZcBytMjyOSfl6kMr46EqcqtCEjgD3t3n8SGw%3D 로 되고 있습니다.

위의 답변해주신 내용과 같이 해당 엔드포인트를 서비스가 처리하지 못하는 것으로 보입니다.
spring의 redirect_uri 설정이 올바른지, 방화벽에 의해 접근 불가한건 아닌지 확인 부탁드립니다.

localhost 환경에서는 DefaultOAuth2UserService loadUser()와 SimpleUrlAuthenticationSuccessHandler의 onAuthenticationSuccess() 까지 잘 호출 하는데 배포만 하면 호출되지 않습니다… redirect_uri의 문제일까요?

  • application.yml, 카카오 디벨로퍼의 redirect_uri (https://k10c102.p.ssafy.io)는 같은 것을 확인했고 Security Config 파일에서도

      http
              .oauth2Login((oauth2) -> oauth2
                      .userInfoEndpoint((userInfoEndpointConfig) -> userInfoEndpointConfig
                              .userService(customOAuth2UserService))
                      .authorizationEndpoint(redirection -> redirection
                              .baseUri("/api/oauth2/ddib"))
                      .successHandler(customSuccessHandler)
                      .redirectionEndpoint(redirectionEndpointConfig -> redirectionEndpointConfig
                              .baseUri("/"))
              );
    

로 redirectionEndpoint를 제대로 설정해준 것을 확인한 바입니다 .

redirect_uri 말고 다른 엔드포인트에 접근 가능한지 확인 부탁드립니다.
배포된 서비스가 localhost 도메인 으로만 접근 가능한 상태인것 같습니다.

    //경로별 인가 작업
    http
            .authorizeHttpRequests((auth) -> auth
                    .requestMatchers("/**").permitAll()
                    .anyRequest().permitAll());

로 모든 도메인에 대해 security Config를 열어놓은 상태입니다 ㅠㅠ

redirect_uri 말고 다른 url에 접근 가능한가요?

넵 가능합니다.

Create Next App (ssafy.io)

https://k10c102.p.ssafy.io/search

가 접속이 되는 것을 확인했습니다.

baseUri를 지정하지 않고 기본 제공되는 주소로 사용해보시겠어요?

    http
            .oauth2Login((oauth2) -> oauth2
                    .userInfoEndpoint((userInfoEndpointConfig) -> userInfoEndpointConfig
                            .userService(customOAuth2UserService))
                    .successHandler(customSuccessHandler)
                    .redirectionEndpoint(redirectionEndpointConfig -> redirectionEndpointConfig
                            .baseUri("/"))
            );

Security Config에서 위 코드와 같이 말씀하시는 걸까요?

해당 코드가 불필요해 보이는데요 제거하고 시도해 보시겠어요?

    http
            .oauth2Login((oauth2) -> oauth2
                    .userInfoEndpoint((userInfoEndpointConfig) -> userInfoEndpointConfig
                            .userService(customOAuth2UserService))
                    .successHandler(customSuccessHandler)
            );

로 시도해도 똑같이 customSuccessHandler가 홏출되지 않습니다.

redirect_uri가 변경되지 않는 것으로 보아 변경사항이 배포 안된것으로 보입니다.
우선 / 사용하지 마시고 spring에서 기본 제공되는 방식의 엔드포인트를 사용 부탁드립니다.