CustomOAuth2UserService 이어서 작성
@Service
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
//DefaultOAuth2UserService OAuth2UserService의 구현체
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
OAuth2User oAuth2User = super.loadUser(userRequest);
System.out.println(oAuth2User.getAttributes());
// Naver 또는 Google.. 어떤 인증 provide 인지에 대한 변수를 담아옴
String registrationId = userRequest.getClientRegistration().getRegistrationId();
OAuth2Response oAuth2Response = null;
if (registrationId.equals("naver")) {
oAuth2Response = new NaverResponse(oAuth2User.getAttributes());
} else if (registrationId.equals("google")) {
oAuth2Response = new GoogleResponse(oAuth2User.getAttributes());
} else {
return null;
}
String role = "ROLE_USER";
return new CustomOAuth2User(oAuth2Response, role);
}
}
CustomOAuth2User 생성
public class CustomOAuth2User implements OAuth2User {
private final OAuth2Response oAuth2Response;
private final String role;
public CustomOAuth2User(OAuth2Response oAuth2Response, String role) {
this.oAuth2Response = oAuth2Response;
this.role = role;
}
@Override
public Map<String, Object> getAttributes() {
return null;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
Collection<GrantedAuthority> collection = new ArrayList<>();
collection.add(new GrantedAuthority() {
@Override
public String getAuthority() {
return role;
}
});
return collection;
}
@Override
public String getName() {
return oAuth2Response.getName();
}
public String getUsername() {
return oAuth2Response.getProvider()+ " "+oAuth2Response.getProviderId();
}
}
실습
localhost:8080/my 에 접근하게 되면 로그인페이지로 리다이렉트 된다.
네이버 or 구글로 로그인하게 되면
my 페이지로 정상적으로 이동하게 되고 attribute에 로그인 정보가 담김.
출처
https://www.devyummi.com/page?id=66928bd4e9b780933343d3c2
'Spring Security > OAuth2' 카테고리의 다른 글
스프링 OAuth2 클라이언트 세션 : 로그인 및 DB 저장 테스트 (0) | 2025.01.09 |
---|---|
스프링 OAuth2 클라이언트 세션 10 : 유저 정보 DB 저장 (0) | 2025.01.09 |
스프링 OAuth2 클라이언트 세션 8 : OAuth2UserService 응답 받기 (0) | 2025.01.08 |
스프링 OAuth2 클라이언트 세션 7 : 구글 소셜 로그인 신청 (0) | 2025.01.08 |
스프링 OAuth2 클라이언트 세션 6 : 네이버 소셜 로그인 신청 (0) | 2025.01.08 |