일반 로그인과 OAuth2 소셜 로그인의 가장 큰 차이는 사용자의 자격 증명을 누가 검증하느냐입니다.

일반 로그인은 사용자가 우리 서비스에 아이디와 비밀번호를 제출하고, 우리 서버가 저장된 비밀번호 해시와 비교해 직접 인증합니다. 따라서 비밀번호 저장, 변경, 재설정과 같은 계정 보안도 서비스가 직접 책임집니다.

반면 소셜 로그인은 카카오나 구글 같은 외부 제공자가 사용자를 인증합니다. 우리 서버는 인가 코드를 받아 액세스 토큰으로 교환하고, 사용자 정보 API를 호출하거나 OIDC의 ID Token을 검증하여 사용자를 식별합니다. 이후 제공자와 제공자 측 사용자 식별자를 기준으로 내부 회원을 조회하거나 가입시키고, 자체 세션이나 JWT를 발급합니다.

소셜 로그인은 소셜 계정의 비밀번호를 직접 관리하지 않아도 된다는 장점이 있지만, 외부 제공자의 장애나 정책에 영향을 받고 토큰과 리다이렉트 URI, 계정 연결을 안전하게 관리해야 합니다.