소셜 로그인에 대해서
플로우차트를 그리다 보면, 단순히 “로그인 → 성공”이라는 흐름이 아니라 그 안에 숨어 있는 구조를 이해해야 할 순간이 옵니다. 특히 소셜 로그인을 다룰 때는 이런 의문이 자연스럽게 생깁니다.
“소셜 로그인에서는 비밀번호를 안 받는데, 그럼 시스템은 뭘로 인증하는 거지?
아이디 값은 어디서 오고, 체인으로 저장한다는 건 또 무슨 의미지?”
이 질문을 정확히 이해하려면, 소셜 로그인은 ‘비밀번호 로그인’이 아니라 ‘토큰 기반 인증’ 구조라는 점을 먼저 짚어야 합니다.
소셜 로그인은 ‘비밀번호 전달’이 아니다
소셜 로그인(Social Login)은 사용자가 구글, 네이버, 카카오 같은 외부 플랫폼 계정을 이용해 로그인하는 방식입니다.
중요한 점은 다음입니다.
? 우리 서비스는 사용자의 비밀번호를 모른다.
? 비밀번호는 소셜 플랫폼(구글 등)이 관리한다.
즉, 사용자는 우리 서비스에 비밀번호를 입력하지 않습니다.
그 대신, 이미 구글에서 인증된 상태를 “증명”하는 방식으로 로그인합니다.
로그인 흐름을 단계별로 정리
소셜 로그인 절차를 구조적으로 정리해보면 다음과 같습니다.
① 사용자가 “구글로 로그인” 버튼 클릭
→ 우리 서비스가 구글 인증 서버로 이동시킨다.
② 사용자가 구글에서 로그인
→ 이 단계에서 비밀번호 입력은 구글에게 한다.
→ 구글이 사용자를 인증한다.
③ 구글이 우리 서비스에 ‘토큰(Token)’을 전달
→ 이 사용자는 인증된 사용자라는 증명서 역할
④ 우리 서비스는 토큰을 검증
→ 구글 서버에 “이 토큰 진짜냐?” 확인
→ 유효하면 로그인 성공
이 전체 과정에서 비밀번호는 우리 서버에 전달되지 않는다는 것이 핵심입니다.
소셜 로그인 시 구글이 제공하는 정보에는 보통 다음이 포함됩니다.
- 이메일 주소
- 고유 사용자 ID (Google user ID)
- 이름
- 프로필 이미지
여기서 가장 중요한 값은 **고유 식별값(Key)**입니다.
- [email protected]
- 혹은 10938475612387465123 같은 고유 ID
이 값이 우리 서비스 DB에서 사용자를 구분하는 기준이 됩니다.
즉, 이메일 또는 고유 ID = 사용자 식별 키 입니다.
“비밀번호는 체인으로 저장한다?”의 실제 의미
이 표현은 정확히 말하면 다음을 의미합니다.
소셜 로그인에서는 사용자의 비밀번호 대신 토큰(Token)을 체인처럼 연결하여 인증 상태를 유지한다는 개념입니다.
여기서 체인이란 보통 다음 구조를 의미합니다.
- Access Token (접근 토큰)
- Refresh Token (갱신 토큰)
이 토큰들이 일정 시간 동안 인증 상태를 유지합니다.
토큰(Token)이란 무엇인가?
토큰은 쉽게 말해
“이 사용자는 이미 인증된 사용자입니다”라는 증명서 입니다.
구글이 우리 서비스에 이렇게 말하는 셈입니다.
“이 사람, 내가 로그인 확인했어. 믿어도 돼.”
우리 시스템은 이 토큰이 유효한지만 확인하면 됩니다.
토큰의 특징
- 일정 시간 후 만료된다.
- 위조가 어렵다.
- 실제 비밀번호를 포함하지 않는다.
- 서버에서 검증 가능하다.
즉, 비밀번호 대신 임시 인증 증명서를 쓰는 구조입니다.
자동 로그인은 무엇인가?
자동 로그인은 소셜 로그인과 다소 다른 개념입니다. 자동 로그인은 한 번 로그인한 뒤, 이후 접속 시 자동으로 인증 상태를 유지하는 방식 입니다.
이 때도 내부적으로는 토큰이 사용됩니다. 사용자가 다시 로그인하지 않아도 브라우저나 앱에 저장된 토큰을 사용해 인증 유지.
즉, 자동 로그인 역시 결국 토큰 기반 인증 구조입니다.
왜 이렇게 복잡한 구조를 쓰는가?
이 구조의 장점은 명확합니다.
① 보안성 향상
- 우리 서버에 비밀번호를 저장하지 않는다.
- 해킹 위험이 줄어든다.
② 사용자 편의성
- 비밀번호 기억 불필요
- 가입 절차 간소화
③ 책임 분리
- 인증 책임은 구글이 담당
- 우리 서비스는 검증만 수행
즉, 인증의 책임을 외부 플랫폼에 위임하는 구조입니다.
정리하자면...
소셜 로그인 시스템의 핵심은 다음 두 문장으로 정리할 수 있습니다.
소셜 로그인은 사용자의 이메일 또는 고유 ID로 계정을 식별하고,
비밀번호 대신 구글이 발급한 토큰을 이용해 인증을 처리하는 구조다.
그리고 더 구조적으로 정리하면 이렇게 말할 수 있습니다.
- 비밀번호는 구글이 관리한다.
- 우리 시스템은 토큰만 검증한다.
- 사용자 식별은 이메일 또는 고유 ID로 한다.
- 로그인 상태 유지는 토큰 체인으로 관리된다.
가 되겠습니다.