쥬리리리리리리
20
2021-04-02 10:39:44 작성 2021-04-02 15:50:23 수정됨
4
258

oauth2 인증 질문드립니다


spring boot + security + oauth2 를 이용하여 
구글, 네이버, 페이스북, 네이버 sns 로그인을 개발 중입니다.

security configure에 아래 구문을 추가하였으며

.and()
.oauth2Login()
    .userInfoEndpoint()
        .userService(customOauth2UserService)


@Service
public class CustomOauth2UserService implements OAuth2UserService<OAuth2UserRequest, OAuth2User>{
    @Override
    public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {

        OAuth2UserService delegate = new DefaultOAuth2UserService();
        OAuth2User oAuth2User = delegate.loadUser(userRequest);

        Map<String, Object> userMap = new HashMap<>();
        String registrationId = userRequest.getClientRegistration().getRegistrationId();

        return oAuth2User;
    }
}

 인증 완료 후에는 security에서override 되어있는 loaduser 클래스로 들어오는걸로 알고 있습니다.
디버깅 해보면 네이버, 페이스북, 네이버는 해당 클래스로 들어오는데 구글만 해당 클래스를 들어오지 않습니다.

인증 후에 security에서 리턴해주는 Authentication 객체에는 구글도 모든 값이 들어가 있긴 합니다
구글도 loadUser에 클래스에 들어오게 하려면 따로 작업 해줘야하는게 있을까요?




* 이메일이 인증이 되지않아 댓글 쓸 수 없으므로 게시글만 수정했습니다
1
  • 답변 4

  • devncore-james
    73
    2021-04-02 11:06:14 작성 2021-04-02 11:14:51 수정됨

    안녕하세요.

    질문자님 질문을 조금만 더 정리해서 보기 좋게 올려주시면 좋을 것 같습니다.

    좋은 질문인 것 같네요.


  • kenu
    56k
    2021-04-02 11:35:53
    해당 게시물은 관리자에 의해 사는얘기에서 Tech Q&A로 이동 되었습니다.
  • Dierslair
    4k
    2021-04-02 12:20:24
    CommonOAuth2Provider.GOOGLE 안의 기본 설정을 보면 scope에 openid가 기본적으로 포함되어 있습니다. 이런 경우 OidcUserService 를 통하여 인증이 진행됩니다. OidcUserService를 사용하기 싫으신 경우, openid를 제외한 scope를 오버라이딩하시면 됩니다.
  • 쥬리리리리리리
    20
    2021-04-02 13:08:23 작성 2021-04-02 13:27:14 수정됨

    감사합니다 

    구글이랑 페이스북은 제공되는 기본 설정을 사용하고, 네이버랑 카카오는 따로 ouath2 client에서 제공을 안해서 provider 만들어 사용중이었는데 구글도 scope에 openid 제거하고 사용하니 잘 들어오네요!

  • 로그인을 하시면 답변을 등록할 수 있습니다.