Spring OAuth2Login - User모델

Tadap·2023년 9월 12일
0

Spring Security

목록 보기
3/7

이번엔 AccessToken을 가지고 사용자의 정보를 가져오는 부분
저번 내용에서 보면 OAuth2UserService가 User정보를 가져온다고 한다.

OAuth2UserService

인가서버로 부터 사용자의 속성을 가져와 OAuth2User 객체를 가져온다.
OidcUserService, DefaultOAuth2UserService 가 제공된다.

  1. OidcUserService
    OpenID Coneect 를 지원하는 구현체로 OidcUserRequest에 있는 ID Token을 이용해서 인증을 하며 필요시 DefaultOAuth2UserService를 사용해 사용자 속성을 요청하여 OidcUser타입 객체를 반환한다.

  2. DefaultOAuth2UserService
    OAuth2.0을 지원하는 구현체로, OAuth2UserRequest를 이용하여 속성을 가져와 OAuth2User 객체를 반환한다

흐름

  1. 표준 OAuth2.0
    accessToken을 받은 뒤
    DefaultOAuth2UserService에게 요청하면 인가서버에서 데이터를 받은 뒤 이걸 OAuth2User로 받는다.

  2. Openid 방식
    scope에 openid가 들어가게 보내 id_token을 받는다
    이때.
    1. OidcUserService에서 인가서버와 통신하지 않고 인증처리(id_token정보만 이용)
    2. OidcUserService가 추가 정보를 요청하기 위해 DefaultOAuth2UserService를 이용하여 추가 정보를 받아 OidcUserInfo를 받아와 OidcUser를 받는다.
    OidcUserRequest의 AccessToken에 포함되어 있는 scope값이 accessibleScopes의 값들 중 하나 이상 포함되어 있을때 요청이 일어난다.

User객체

크게 OAuth2User,OidcUser가 있고.

  1. OAuth2User의 경우 최종 사용자의 인증에 대한 정보인 attributes를 포함한다.
    기본 구현체는 DefaultOAuth2User이다.
  2. OidcUser의 경우 OAuth2User를 상속받으며 DefaultOidcUser 가 구현체이며 마찬가지로 DefaultOAuth2User를 상속받는다.

0개의 댓글