oAuthSignIn
: 요청Body로 vo를 입력받아 oAuthSignIn
서비스 로직에 전달하고 결과값으로 응답dto를 반환하여 이 값을 응답vo로 변환하여 최종적으로 반환oAuthSignIn
: 인증처와 인증처에서 제공하는 ID(KEY)값을 통해 repository에서 oAuth
엔티티 추출 ← 존재하지 않을 시 예외 발생jwtTokenProvider
에서 oAuthAuthenticate(oAuth.getProviderAccountId()
을 받아 발급oAuthAuthenticate
는 providerAccountId 값을 이용하여 OAuthAuthenticationToken
인스턴스를 생성하고, authenticationManager.authenticate()
메서드를 호출하여 인증을 요청
OAuthAuthenticationToken
은 AbstractAuthenticationToken
을 확장하여 OAuth 인증을 위한 커스텀 인증 토큰
AbstractAuthenticationToken
은 Spring Security에서 인증 토큰을 구현하기 위한 기본 클래스로, Authentication
인터페이스를 구현setAuthenticated(false)
← 초기에는 인증되지 않은 상태로 설정. 이 토큰은 나중에 인증 절차를 거쳐 인증된 상태로 변경principal
로 사용하고, 자격 증명은 필요하지 않으므로 getCredentials()
는 null
을 반환Authentication
타입의 인증된 OAuthAuthenticationToken
이 반환됨OAuthAuthenticationProvider
OAuthUserDetailService
를 통해 OAuth 사용자 세부 정보를 로드 (DB 통함)Authentication
객체가 OAuthAuthenticationToken
인지 확인providerAccountId
를 추출한 후(OAuthAuthenticationToken
의 getName), 이를 기반으로 사용자 세부 정보를 로드authentication.getName()
메서드는 Authentication
객체에서 사용자의 이름(또는 사용자 식별자)을 반환OAuthAuthenticationToken
클래스에서 설정된 principal
필드의 값을 기반AuthenticationProvider
가 지원하는 인증 객체의 타입을 확인.OAuthAuthenticationToken
의 인스턴스일 경우 true
를 반환하여 이 인증 프로바이더가 사용될 수 있음을 알림