Spring Secuity OAuth2 구조

귀찮Lee·2022년 8월 2일
1

Spring Security

목록 보기
9/13

◎ Spring Security OAuth2 흐름

◎ OAuth2LoginAuthentication 구조

  • OAuth2LoginAuthenticationFilter

    • authorization code 승인 흐름을 위해 OAuth 2.0 Authorization Response 과정을 다룸
    • AuthenticationManager에게 OAuth2LoginAuthenticationToken을 위임함
  • OAuth2LoginAuthenticationProvider

    • OAuth 2.0 Authorization Code 인증 흐름을 이용하는 OAuth 2.0 Login의 AuthenticationProvider 구현체
    • OAuth2User 를 만들어 return 함
  • DefaultOAuth2UserService

    • loadUser method : UserInfo 끝날 때 실행 (OAuth2 로그인 후처리를 담당)
    • OAuth2User를 만들어 return 함
    • UserDetailsService - UserDetails 와
      DefaultOAuth2UserService - OAuth2User 는 유사한 관계
    • OAuth2User와 DefaultOAuth2UserService를 커스텀하고 Spring Bean에 등록하여 사용하여, OAuth2 로그인 후 후처리를 할 수 있다.
    • Spring 프로젝트 예시
  • 참고 자료

◎ Authentication Type

  • Authentication

  • Authentication 객체 제한

    • SecurityContext에 들어갈 수 있는 객체는 Authentication 타입뿐이다.
    • Authentication에서 Principal에 들어갈 수 있는 객체는 UserDetails, OAuth2User 등이 있다.
      • UserDetails : 회원가입 프로세스를 직접 구현한 경우 ex)formLogin
      • OAuth2User : 소셜로그인 구현시
  • PrincipalDetails Custom 필요성

    • 이때 UserDetails, OAuth2User는 회원 정보(회원 Entity)를 따로 가지고 있지 않으므로 따로 Custom이 필요
    • 그리고 authentication.getPrincipal()을 통해 객체를 가지고 올때 상황마다 다른 객체를 가지고 온다면, 상황마자 다른 매세드를 사용해야 함
    • 따라서 UserDetails, OAuth2User를 implement하는 객체를 Custom하여 Bean으로 주입시킬 필요가 있다.
    • 객체 예시

◎ 참고 자료

profile
배운 것은 기록하자! / 오류 지적은 언제나 환영!

0개의 댓글