Day3 Amazonの「ログイン状態」はなぜ続く?

luagate/5day-challenge/day3-amazon-loginDay3 - ログインの裏側18体験・イベント

上から下へ、全 18 枚そのまま並べています。

発表モードで開く

Day3 Amazonの「ログイン状態」はなぜ続く?

5日チャレンジ - 理解

1
1

目次

Day3 の流れ

今日の内容

1 ログイン状態のふしぎ

2 Cookieとセッション

3 トークンによる認証

4 体験コードとクイズ

2
2

Day3 - ログインの裏側

1

ログイン状態のふしぎ

3
3
Day3 - ログインの裏側

なぜログインが続くのか

ブラウザを閉じてもログイン状態が残る理由を探ります。

  • HTTP通信は本来「毎回はじめまして」
  • でもAmazonは次回も自分を覚えている
  • これを実現する仕組みが「セッション」
  • 合言葉を交換することで成立している
4
4
Day3 - ログインの裏側

ログインの4ステップ

メール・パスワードを送ってから状態が維持されるまで。

ログイン情報送信
サーバーが照合
合言葉を発行
次回から自動認識
5
5

Day3 - 仕組み

2

Cookieとセッション

6
6
Day3 - 仕組み

Cookieとは

ブラウザに保存される小さなデータです。

Cookie

サーバーがブラウザに預ける小さなテキストデータ。次のリクエストで自動的に送り返される

ログイン状態の維持に利用

カートの中身保持にも使われる

有効期限を設定できる

7
7
Day3 - 仕組み

CookieとSession

役割分担で安全にログイン状態を保ちます。

Cookie (ブラウザ側)

  • 合言葉(セッションID)だけ持つ
  • パスワードは保存しない
  • 自動でサーバーに送信される

Session (サーバー側)

  • 合言葉に紐づく詳細情報を保持
  • ユーザーID・カート・権限など
  • サーバーのメモリやDBに保存
8
8
Day3 - 仕組み

Cookieのやり取り

ログイン成功後、ブラウザとサーバー間で合言葉が行き交います。

ログイン
セッション保存
Cookie発行
Cookie送信
ブラウザ
Amazon サーバー
セッション ストア
9
9
Day3 - 仕組み

セッションを辞書で再現

Pythonでセッションストアの動きをシミュレーションします。

python
import secrets

sessions = {}

def login(user_id):
    token = secrets.token_hex(8)
    sessions[token] = {"user_id": user_id, "cart": []}
    print(f"Cookieを発行: {token}")
    return token

def whoami(token):
    if token in sessions:
        return sessions[token]["user_id"]
    return None

token = login("alice")
print(f"今のユーザー: {whoami(token)}")
10
10

Day3 - 認証方式

3

トークン認証

11
11
Day3 - 認証方式

認証方式の種類

サービスの特性に応じて認証方式が選ばれます。

セッション方式
  • サーバーに状態を保存
  • 従来型のWebサイト向き
JWT (トークン)
  • 情報をトークン自体に埋め込む
  • APIやSPA向き
OAuth
  • Google等でログイン
  • パスワード共有不要
12
12
Day3 - 認証方式

CookieとJWTの違い

状態の持ち方が本質的に違います。

項目
Cookie+Session
JWT

状態の場所

サーバー

トークン自身

スケール

サーバー側で管理必要

ステートレスで容易

失効

サーバーで即可能

有効期限まで待つ

用途

Webサイト

API / スマホアプリ

13
13
Day3 - 認証方式

日本のECサイトログインユーザー数

ECの広がりと共に認証の重要性が高まっています。

100 百万人806040200
45百万人
60百万人
78百万人
90百万人
98百万人
2015年
2018年
2020年
2022年
2024年

出典: 国内EC利用者推計

14
14

Day3 - まとめ

4

体験コードとクイズ

15
15
Day3 - まとめ
クイズ

クイズタイム

今日の内容を確認しましょう。

ブラウザとサーバー間で自動的にやり取りされ、ログイン状態の維持に使われるデータは?

A
IPアドレス
B
Cookie
C
DNS
D
HTML
16
16
Day3 - まとめ
答え

クイズの答え

ブラウザとサーバー間で自動的にやり取りされ、ログイン状態の維持に使われるデータは?

A
IPアドレス
B
Cookie
C
DNS
D
HTML

正解は2番目の「Cookie」です。

17
17
"

ログイン状態が続くのは、CookieとSessionが合言葉を交換し続けているから。

5日チャレンジ Day3

18
18