쇼하지마십쇼
50
2021-10-01 22:16:35
2
236

springboot oauth2 google 로그인 연동 질문


제가 springboot Oauth2 라이브러리를 사용해서 구글 로그인 연동을 하려고 합니다.

사용자가 초기에 구글 로그인 시, 구글 계정 이메일과 비밀번호를 입력하면 데이터베이스에 자동으로 

user테이블에 저장되도록 하고 싶습니다.

@Log4j2
@RequiredArgsConstructor
@Service
public class OAuth2UserDetailsService extends DefaultOAuth2UserService {
private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;

@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
log.info("userRequest: " + userRequest);
String clientName = userRequest.getClientRegistration().getClientName();

log.info("clientName : "+clientName);
log.info(userRequest.getAdditionalParameters());

OAuth2User oAuth2User = super.loadUser(userRequest);

log.info("==============================");
oAuth2User.getAttributes().forEach((k,v) -> {
log.info(k+" : "+v);
});

String email = null;

if(clientName.equals("Google")){ // 구글을 이용하는 경우
email = oAuth2User.getAttribute("email");
}

이 코드는 구글 로그인시 수행되는데,

변수 oAuth2User의 getAttributes() 메서드를 통해 출력하면 로그인한 사용자에 대한 정보가 출력이 됩니다. 여러가지 정보중에 사용자 email 정보가 있어 email을 user 객체에 넘겨주어 db에 저장하면 되지만

로그인 시 사용한 비밀번호 정보가 없어서 어떻게 비밀번호를 얻어와  db에 저장을 해야할지 모르겠습니다. 

답변해주시면 정말 감사하겠습니다.....

0
  • 답변 2

  • Mambo
    8k
    2021-10-01 22:22:47

    OAuth 로그인은 인증을 외부에서 수행할 뿐 비밀번호를 제공받기 위함이 아니에요.

    반대로 생각해보시면 OKKY에서 구글 로그인을 통해 가입을 했다고 비밀번호를 알게되면 사이트 담당자는 본인의 이메일에 접근할 수 있는 상황과 같습니다.

  • 쇼하지마십쇼
    50
    2021-10-01 22:35:48 작성 2021-10-01 22:40:50 수정됨

    @Mambo 

    아 생각해보니 그렇군요... 이제 좀 이해했습니다

    답변해주셔서 정말 감사합니다!!


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