Social Login - 폼 인증 & 카카오 추가 및 리팩토링 - Converter

ProviderUserRequest
ProviderUserConverter
T타입 받아서R타입으로 변환 기능을 하는 인터페이스
DelegatingProviderUserConverter
스프링 빈으로 등록한다. 생성 되면서 각 컨터버들의 구현체를 가지게 되며, 이 클래스의 역할은 각 구현체에게 위임하는 역할이다.
OAuth2UserService 나 OidcUserService 에서 이 클래스를 주입 받고 각 서버에 맞는
ProviderUser를 반환 받는다.
Collections.unmodifiableList
전달된 List를 수정 불가능 하도록 만드는 메서드. (읽기 전용 리스트 생성)
SocialType
각 컨버터별로 이 클래스를 이용해 소셜 타입을 확인한다.
OAuth2Utils
구글, 네이버, 카카오 모두 응답의 JSON 형태가 다르다.
1단계에서 바로 얻을 수 있는 정보들이면
mainAttribute, 2단계에서 얻을 수 있는 정보들은subAttribute, 카카오 같은 경우 3단계까지 가야 얻을 수 있는 정보들이 있기 때문에otherAttribute까지 확인해야 한다.
OAuth2GoogleProviderUserConverter
registrationId가
구글은 1단계에서 정보를 바로 얻을 수 있기 때문에
mainAttribute를 생성한다.
OAuth2NaverProviderUserConverter
registrationId가
naver일 때 실행된다.
네이버는
response로 한 번 감싸져 있기 때문에subAttribute를 생성한다.참고(네이버 API 명세)
OAuth2KakaoProviderUserConverter & OAuth2KakaoOidcProviderUserConverter
registrationId가
kakao일 때 실행된다.카카오의 경우 OpenID를 지원하며 선택적으로 사용할 수 있기 때문에
OAuth인증과Oidc인증을 구분해야 한다. 그리고 이 둘은 응답 형태가 다르다.OAuth 인증의 경우 기본 정보가
kakao_account로 묶여 있으며 profile 정보는profile로 한 번 더 묶여 있는 것을 볼 수 있다.
참고(카카오 API 명세)
반면 OpenID 인증의 경우 구글처럼 1단계에서 바로 정보를 가져올 수 있는 것을 확인할 수 있다.
참고(카카오 API 명세)
UserDetailsProviderUserConverter
소셜 인증이 아닌 일반적인 폼 인증 방식일 때 사용되는 컨터버
Last updated






