이번엔 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를 상속받는다.