반응형
📌 구글 회원 프로필 정보 받아오기
✔ 구글 로그인이 완료된 뒤의 후처리
1) 코드받기 (인증)
2) 액세스토큰 (권한)
- 액세스 토큰을 받으면 Security 서버가 구글에 로그인한 사용자의 정보에 접근할 수 있는 권한이 생긴다.
3) 사용자 프로필 정보를 가져옴
4) 회원가입
4-1) 그 정보를 토대로 회원가입을 자동으로 진행시킴
4-2) 이메일, 전화번호, 이름, 아이디, 집 주소 등의 추가적인 정보를 입력하는 창이 뜸
➕ 구글 로그인이 완료가 되면 코드를 받는 것이 아니라, 엑세스토큰 + 사용자 프로필 정보를 한 방에 받는다.
◽ SecurityConfig.java
SecurityConfig.java 에 위와 같이 추가해 준다. 아직 아무 것도 만들어지지 않았기 때문에 null을 임시로 넣어둔다.
◽ PrincipalOauth2UserService.java 생성
package com.cos.securityex01.config.oauth;
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
import org.springframework.streotype.Service;
@Service
public class PrincipalOauth2UserService extends DefaultOAuth2UserService {
// 구글로 부터 받은 userRequest 데이터에 대한 후처리되는 함수
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
return super.loadUser(userrequest);
}
}
PrincipalOauth2UserService를 이렇게 작성해주고,
.userService(principalOauth2UserService);
SecurityConfig 에 그에 대한 @Autowired를 생성한 뒤 userService 괄호 안에 넣어준다.
➕ PrincipalOauth2UserService의 loadUser에서
System.out.println(super.loadUser(userRequest).getAttributes());
위 코드를 출력해 보면
{
sub={구글에 회원가입한 아이디},
name=손흥민,
given_name=흥민,
family_name=손,
picture={사용자 프로필사진 주소},
email={사용자 이메일}
email_verified=true,
local=ko
}
이런 정보를 가지고 온다는 것을 알 수 있다.
sub는 구글에 회원가입한 아이디로,
private String Provider;
private String ProviderId;
데이터에 Provider와 ProviderId를 만든 다음,
Provider = "google", ProviderId = {구글에 회원가입한 아이디} 와 같이 넣어주면 된다.
참고 : 인프런 - 스프링부트 시큐리티 & JWT 강의 (최주호)
반응형
'Back > Spring' 카테고리의 다른 글
[Spring/Security] JWT (JSON Web Token) (10) | 2023.06.26 |
---|---|
[Spring/Security] Authentication 객체가 가질 수 있는 2가지 타입 (4) | 2023.06.23 |
[Spring/Security] 구글 로그인 준비 (6) | 2023.06.23 |
[Spring] 스프링 AOP - 포인트컷 / 포인트컷 지시자의 종류 / execution / @target / @within (0) | 2023.05.25 |
[Spring] 예제 프로젝트 만들기 - 상품 주문 프로세스 (2) | 2023.05.22 |