웹 인증과 쿠키
쿠키(Cookie)는 브라우저에 저장되는 소량의 텍스트 데이터로, 웹 서버가 사용자를 식별하고 세션을 유지하는 데 사용된다. HTTP는 기본적으로 상태 비저장(stateless) 프로토콜이기 때문에, 쿠키는 로그인 상태를 유지하는 핵심 수단이다.
서브도메인 쿠키 공유는 `Set-Cookie: name=value; domain=example.com`과 같이 도메인 속성을 설정해 구현한다. 쿠키의 도메인이 요청 URL과 일치하거나 상위 도메인인 경우 공유가 가능하다. 예를 들어 `domain=google.com`으로 설정된 쿠키는 `mail.google.com`, `photos.google.com` 등 모든 서브도메인에서 접근할 수 있다.
그러나 Google이 서로 다른 서비스 간 로그인을 유지하는 방식은 단순한 서브도메인 쿠키 공유보다 더 정교하다. Google Photos 등 서비스는 페이지 내부에 `accounts.google.com`에 대한 숨겨진 iframe을 삽입하고, 이 iframe을 통해 동일 브라우저 컨텍스트 내에서 세션을 공유한다. 이 방식은 직접 도메인 호출 없이도 여러 도메인 간 쿠키를 공유할 수 있는 기법이다. Naver, YouTube 임베드를 활용하는 서비스들도 같은 방식을 사용한다.
이 기술적 접근의 목적은 원클릭 크로스 서비스 경험이다. 사용자는 Google 계정에 한 번만 로그인하면 Search, YouTube, Gmail, Photos 등 모든 서비스에서 자동으로 인증된 상태로 이동할 수 있다. 현대 대형 플랫폼의 UX는 이처럼 기술적 복잡성을 감추고 매끄러운 전환 경험을 제공하는 방향으로 설계된다.
핵심 내용
- 서브도메인 쿠키 공유: `domain` 속성으로 상위 도메인 지정 시 서브도메인 간 공유 가능
- iframe 기반 세션 공유: 페이지 내 숨겨진 iframe으로 다른 도메인과 세션 컨텍스트 공유
- Google의 크로스 서비스 로그인: iframe을 통한 `accounts.google.com` 세션 참조 방식
- HTTP는 상태 비저장 프로토콜 → 쿠키가 세션 유지의 핵심 수단
- 대형 플랫폼의 매끄러운 서비스 간 전환은 정교한 쿠키 아키텍처에 기반
관련 개념
출처
- 서브 도메인을 활용한 쿠키 공유 — 2024-06-26, 알 수 없는 사용자