이번엔 AccessToken을 가지고 사용자의 정보를 가져오는 부분
저번 내용에서 보면 OAuth2UserService
가 User정보를 가져온다고 한다.
인가서버로 부터 사용자의 속성을 가져와 OAuth2User
객체를 가져온다.
OidcUserService
, DefaultOAuth2UserService
가 제공된다.
OidcUserService
OpenID Coneect 를 지원하는 구현체로 OidcUserRequest
에 있는 ID Token을 이용해서 인증을 하며 필요시 DefaultOAuth2UserService
를 사용해 사용자 속성을 요청하여 OidcUser
타입 객체를 반환한다.
DefaultOAuth2UserService
OAuth2.0을 지원하는 구현체로, OAuth2UserRequest
를 이용하여 속성을 가져와 OAuth2User
객체를 반환한다
표준 OAuth2.0
accessToken을 받은 뒤
DefaultOAuth2UserService
에게 요청하면 인가서버에서 데이터를 받은 뒤 이걸 OAuth2User
로 받는다.
Openid 방식
scope에 openid가 들어가게 보내 id_token을 받는다
이때.
1. OidcUserService
에서 인가서버와 통신하지 않고 인증처리(id_token정보만 이용)
2. OidcUserService
가 추가 정보를 요청하기 위해 DefaultOAuth2UserService
를 이용하여 추가 정보를 받아 OidcUserInfo
를 받아와 OidcUser
를 받는다.
OidcUserRequest
의 AccessToken에 포함되어 있는 scope값이 accessibleScopes의 값들 중 하나 이상 포함되어 있을때 요청이 일어난다.
크게 OAuth2User
,OidcUser
가 있고.
OAuth2User
의 경우 최종 사용자의 인증에 대한 정보인 attributes
를 포함한다.DefaultOAuth2User
이다.OidcUser
의 경우 OAuth2User
를 상속받으며 DefaultOidcUser
가 구현체이며 마찬가지로 DefaultOAuth2User
를 상속받는다.