본문 바로가기
프로젝트/SpringSecurity

[Spring Security] 5. OAuth 구글로그인(2)

by dantriss 2023. 7. 4.

유튜브에서 스프링시큐리티를 심화교육하면서 조금더 레벨업 하고자 한다.

IDE : IntelliJ

언어 : Java 8

스프링부트 버전 : 2.7.13

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


 

구글로부터 받은 회원의 정보를 받아서 사용하기 위해서 oauth 패키지에 PrincipalOauth2UserService를 생성해준다.

 

해당 클래스에 @Service 어노테이션을 추가해주고, DefaultOAuth2UserService를 상속받고 loadUser 함수를 생성해준다.

@Service
public class PrincipalOauth2UserService extends DefaultOAuth2UserService {

    
    @Override
    public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
        return super.loadUser(userRequest);
    }
}

 

SecurityConfig로 이동해서 PrincipalOauth2UserService를 autowired 해준다.

 

그리고 아래와 같이 추가해준다.

.userInfoEndpoint()
.userService(principalOauth2UserService)

 

이렇게 하면 구글로부터 access Token과 사용자의 프로필정보를 받을 수 있게된다.

어떠한 정보들을 가져오는지 확인해보기 위해서 PrincipalOAuth2UserService로 이동해서 출력해보면

System.out.println("getAccessToken : "+userRequest.getAccessToken());
System.out.println("getClientRegistration : "+userRequest.getClientRegistration());
System.out.println("getAttributes : "+super.loadUser(userRequest).getAttributes());

 

어떠한 정보들을 구글로부터 받아오는지 확인할 수 있다.

 

여기서 우리는 회원마다 권한을 부여하기 때문에 회원가입을 자동으로 진행하게 만들어주기 위해서

user 모델에서 아래와 같은 컬럼을 추가해준다.

provider는 어떤곳에서 회원정보를 받아왔는지 ex) google, facebook, kakao...

providerId는 유저들을 특정하기위해서 고유아이디를 만들어주기 위해서 추가했다.

private String provider;
private String providerId;

댓글