OAuth2UserService에 진입하지 못함

문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.


앱 ID 1003729OWNERWeb
개발환경 스프링부트 3.2.0

안녕하세요. Spring Security의 FilterChain을 이용하여 카카오 oauth 로그인을 구현하고 있습니다.

카카오 로그인을 시도할 경우 CustomOauth2UserService에 진입하지 못 합니다. 그런데 아래와 같은 redirect-uri까지는 도달합니다.
http://localhost:8080/auth/kakao?code=RK6k9YIf0DuDQLoUVOeusWGgdT7FsXM4m5q46XQ0GRE5e2IE-nVkSxxOU90KPXKYAAABjD0mRdgWphHJzwXJqw&state=gkYEDkB_SZn8jVXEqVy3ujVJL_qabeEn2vB4SVAtmY8%3D

다른 Provider를 통해 로그인 하는 경우, CustomOauth2UserService에 잘 접근하여 회원가입 및 로그인이 가능한 것으로 확인됩니다.

이전 질문 [OAuth2UserService 패싱(?)현상 문의 드립니다](https:// OAuth2UserService 패싱(?)현상 문의 드립니다) 을 참고해보았을 때, yml 파일이 문제될 수 있다는 점을 확인해서 yml 파일도 다시 확인해보았지만 잘못된 부분이 없어보입니다.

혹시 더 확인해보거나 추측할 수 있는 원인이 있을까요?

spring:
  security:
    oauth2:
      client:
        registration:
          kakao:
            client-id: {client-id}
            client-secret: {client-secret}
            redirect-uri: http://localhost:8080/auth/kakao
            client-authentication-method: POST
            authorization-grant-type: authorization_code
            scope: profile_nickname
            client-name: Kakao

        provider:
          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

Spring Security FiterChain

SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .formLogin(AbstractHttpConfigurer::disable)
                .httpBasic(AbstractHttpConfigurer::disable)
                .csrf(AbstractHttpConfigurer::disable)
                .headers(header -> header.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable))
                .sessionManagement(sessionManagement -> sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
                .authorizeHttpRequests(authorizationManagerRequestMatcherRegistry ->
                        authorizationManagerRequestMatcherRegistry.anyRequest().permitAll())
                .oauth2Login(oauth2 -> {
                    log.info("oauth2 configure");
                    oauth2
                            .failureHandler(oAuth2FailureHandler)
                            .successHandler(oAuth2LoginSuccessHandler)
                            .userInfoEndpoint(userInfoEndpointConfig -> userInfoEndpointConfig.userService(customOAuth2UserService));
                });


        return http.build();
    }

안녕하세요.
구현하신 환경에서 디버깅 하셔야 해결할 수 있고 제가 확인해드릴 수 있는 부분은 기재하신 내용으로 유추하는 정도 밖에 안될 것 같은데요.

(1) client-authentication-method: POST 는
client-authentication-method: client_secret_post 로 사용하셔야합니다.

https://docs.spring.io/spring-security/reference/servlet/appendix/namespace/http.html#nsa-client-registration-attributes

(2) http://localhost:8080/auth/kakao 리다이렉트가 정상적으로되는지 디버깅해보셔야합니다.

아래 내용은 제가 확인한 최소한의 설정이니 동일하게 테스트 해보시면 좋을 것 같습니다.

https://kakao-tam.tistory.com/54

도움 감사드립니다!

일단 왠지는 모르겠지만, 설정해주신 블로그글과 동일하게 Redirect uri를 http://localhost:8080/login/oauth2/code/kakao 로 변경하니까 잘 동작하게됐습니다:sob:

1개의 좋아요