Post

구글 OAuth 2.0 구현하기

OAuth 2.0

  • loadUser 메서드:
    • OAuth2UserRequest 객체를 받아, OAuth2 프로바이더인 Google로부터 사용자 정보를 가져온다.
    • DefaultReactiveOAuth2UserService().loadUser(userRequest)를 호출하여 사용자의 기본 정보를 로드한다.
    • user.getAttributes() 메서드를 사용해 사용자 정보를 가져온다.
  • 클라이언트 이름과 등록된 OAuth2 클라이언트 매핑:
    • userRequest.getClientRegistration().getClientName()으로 클라이언트 이름(Google)을 가져온다.
    • Registration.valueOf(clientId.toUpperCase())를 통해 클라이언트 이름을 enum 값으로 매핑한다.
  • OAuth2UserDTO 생성 및 사용자 정보 전송:
    • OAuth2UserDTO.of(registration, attributes)로 사용자 정보를 DTO(Data Transfer Object)로 변환한다.
    • webClient.post()를 사용해 “lb://user-service/auth/oauth2/{registration}” URL로 사용자의 정보를 POST 요청으로 전송한다. 이때, PrincipalUserDetails 객체로 응답을 받는다.

사용자들은 구글 계정으로 간편하게 인증을 받을 수 있으며, OAuth 2.0의 표준 보안 프로토콜 덕분에 안전한 인증 및 권한 부여가 가능합니다. Google로부터 받은 acesstoken과 refreshToken은 서버로 전송되어 클라이언트에 발급되며, redis에 저장된다. 또한, 개인화된 마이페이지를 제공하여 사용자의 정보를 관리할 수 있다.

This post is licensed under CC BY 4.0 by the author.