SpringbootSecurity

SpringbootSecurity/Springboot로 구글로그인 해보기(2)/구글 회원 프로필 정보

25G 2021. 8. 29. 10:53

저번 포스팅에서 이어갑니다.

이제 구글 로그인까지는 완료했는데 후처리가 필요하다.

 

구글 로그인 후처리

일반적으로 구글이 구글을 완료하면 어떻게 처리가 되는지 알아야 한다.

일단 로그인을 하게 되면 

1. 코드 받기(인증)

2. 액세스 토큰(권한)

3. 권한을 통해서 사용자 프로필 정보를 가져온다.

4-1. 그 정보를 토대로 회원가입을 자동으로 진행시키기도 한다.

4-2. 예를 들어 쇼핑몰을 한다고 하면 기본적인 USER정보와 더해서 추가적인 집주소, 백화점몰->(VIP 등급, 일반등급)이 필요하다.

 

TIP

구글 로그인이 완료가 되면 코드를 받는 것이 아니다. 무엇을 받냐면 액세스 토큰+사용자 프로필 정보까지 한 번에 다 받을 수 있다. Oauth2 clinet라이브러리에서 제공해주는 기능

 

일단 config에 아래와 같이 파일을 생성하고

DefaultOAuth2UserService상속받아서 메모리에 띄운다.

위와 같이 Security설정하는 클래스에서 위 클래스를 di를 시켜서 Security설정을 추가시켜준다.

이렇게 하면 PrincipalOauth2UserService에서 loadUser함수를 사용해서 후처리를 하게 할 수 있다.

위 함수의 매개변수인 userRequest라는 객채를 sysout으로 찍어보면 아래와 같은 값이 나오는데 이 값이 바로 userRequest데이터에 대한 후처리 함수인 것이다.

 

그래서 후처리를 하기 전에 userReuqest가 뭘 들고 있는지 알아보기 위해서 값을 좀 찍어보겠다.

그리고 회원의 프로필 정보도 받아본다.

위 말한 대로 코드를 응답받는 게 아닌 액세스 코드와 회원의 프로필까지 주는 것을 볼 수 있다.

그리고 getAttribute에서 받은 저 값이 결국 회원정보를 받아올 수 있는 매게 변수 값이 담겨있다 결국 이 정보로 회원가입을 시켜야 한다.

 

회원가입을 위한 정보

getAttributes

{sub=105617652356040885552,
 name=, given_name=, family_name=
, picture=https://lh3.googleusercontent.com/a/AATXAJzvxBp9CVwqOqPeThYDMDJvNPxhuYdJ5fX4wX8J=s96-c
, email=@gmail.com
, email_verified=true
, locale=ko}

 

위 정보는 로그인을 완료하면 받는 프로필 정보다.

그래서 위정보를 아래와 같이 사용했다.

username= google_105617652356040885552

password = "암호화(25g)"

email = "ssar@gmail.com"

role = "ROLE_USER"

위와 같이 정보를 저장을 할 것인데 이렇게 하면 이 사용자가 oauth로그인으로 가입한 사용자인지 일반 가입한 사용자인지 구분이 안 가기 때문에 구분을 해주기 위해서 user도메인에 필드를 하나 더 추가시킨다.

를 추가해서 provider에는 구글을 넣고 providerId에는 구글 아이디{sub=105617652356040885552,를 넣을 것이다.

이렇게 받을 수 있는 정보를 가지고 강제적으로 우리서버에 회원가입을 시켜 보겠다.

 

https://github.com/fj2008/SpringbootSecurity