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를 반환하여 이 인증 프로바이더가 사용될 수 있음을 알림