credential 검증 뒤 opaque session을 발급한다

비밀번호 확인과 인증 상태 저장, 브라우저 전달을 서로 다른 경계로 나누면 비밀과 session ID의 역할이 섞이지 않는다.

01 · LOGIN

Credential 제출

email과 password는 TLS 요청 안에서만 이동한다.

02 · VERIFY

Hash 비교

저장된 password hash와 일정 시간 비교를 수행한다.

03 · ROTATE

Session 생성

로그인 직전 ID를 폐기하고 새 ID를 만든다.

04 · STORE

Server state

회원 ID와 만료 시각을 서버 저장소에 둔다.

05 · COOKIE

Opaque ID 전달

HttpOnly·Secure·SameSite 속성으로 브라우저에 보낸다.

핵심: 브라우저가 가진 값은 의미 없는 식별자이고, 인증 의미는 서버 session state에만 남아야 한다.