소셜 로그인 (OAuth2 code flow)
우리 사이트에 새 비밀번호를 안 만들고 "구글로 로그인", "카카오로 로그인" 버튼 하나로 들어오는 거예요. 믿을 만한 큰 회사(구글·카카오) 가 "이 사람 맞아요" 하고 보증해주면, 우리는 그 보증서를 받고 문을 열어줘요.
비유: 다른 나라 입국 심사 🛂
- 여러분 = 우리 사이트에 들어오려는 사람.
- 구글/카카오 = 여러분 신원을 이미 아는 본국 정부. 여권을 발급해줘요.
- 우리 사이트 = 입국 심사대. 여러분 여권을 직접 만들진 않지만, 본국이 발급한 여권을 확인하고 들여보내요.
- 동의 화면 = "이 사이트에 내 이메일 알려줄게" 하고 여러분이 도장 찍어주는 순간.
우리는 여러분 비밀번호를 아예 안 가져요. 그래서 우리 사이트가 털려도 여러분 구글 비번은 안전해요.
로그인이 흘러가는 순서
핵심은 마지막 정보 교환을 브라우저가 아니라 우리 서버가 몰래 한다는 거예요. 왜냐면 그때 우리와 구글만 아는 비밀 암호(client_secret) 가 필요한데, 이걸 브라우저에 노출하면 안 되거든요.
작은 함정 하나: 처음에 "여기로 돌아와" 하고 알려준 돌아올 주소와, 나중에 쪽지 교환할 때 대는 주소가 글자 하나까지 똑같아야 해요. 다르면 구글이 "수상한데?" 하고 거절해요.
프로바이더가 여러 개일 때 (구글·카카오·네이버)
로그인 버튼이 여러 개여도 흐름은 똑같아요. 다만 "나 카카오야" 하는 이름표를 쪽지에 붙여 보내서, 우리 서버가 "아 카카오구나" 하고 알맞게 처리해요.
관리자는 조금 더 깐깐해요 (선택)
일반 손님은 아무나 구글로 들어와도 되지만, 관리자 문은 다르게 막기도 해요. 로그인할 때마다 "이 이메일이 관리자 명단에 있나?" 를 확인하고, 명단에 있으면서 처음 온 사람이면 그 자리에서 관리자로 등록해줘요.
- 진짜 서비스(운영 환경)에선 콕 집은 몇 명만 통과.
- 테스트 환경에선 우리 회사 이메일이면 통과 — 이렇게 상황마다 명단 규칙을 다르게 줘요.
핵심만 다시
- 소셜 로그인은 믿을 만한 큰 회사가 신원을 보증해주면 우리가 문을 열어주는 방식이에요.
- 우리는 비밀번호를 안 가져요 — 그래서 더 안전해요.
- 마지막 정보 교환은 비밀 암호를 든 서버가 하고, 돌아올 주소는 앞뒤가 똑같아야 해요.
- 프로바이더가 여러 개면 이름표로 구분하고, 관리자 문은 명단 확인으로 더 깐깐하게 막을 수 있어요.
더 자세한 진짜 코드·설계는 옆의 개요 / Variants / Apply Recipe 탭에서 볼 수 있어요.