ヘッドレス構成における認証の考え方

パスワードレス認証で顧客体験とセキュリティを両立する仕組みを解説

パスワードレス認証OTPセキュリティ
読了時間: 7分

この記事について

ヘッドレスECでは、フロントエンドとバックエンドが分離しているため、認証の仕組みが複雑になります。本プロジェクトではパスワードレス認証を採用し、顧客体験とセキュリティの両立を図りました。

なぜパスワードレスなのか

パスワード認証の問題点

従来のパスワード認証には、多くの課題があります。

パスワード漏洩リスク
具体的な影響他サービスとの使い回しによる被害拡大
管理負担
具体的な影響ユーザーが複雑なパスワードを覚えられない
フィッシング攻撃
具体的な影響偽サイトでパスワードを盗まれる
リセット対応
具体的な影響忘れた際のサポート工数
ブルートフォース攻撃
具体的な影響総当たり攻撃への対策が必要

パスワードレス認証のメリット

漏洩リスクの排除
詳細パスワードがないので漏洩しない
ユーザー負担軽減
詳細パスワードを覚える必要がない
フィッシング耐性
詳細ワンタイムコードは使い捨て
サポート工数削減
詳細パスワードリセット対応が不要
UX向上
詳細メールアドレスだけでログイン可能

認証フローの全体像

ログインの流れ

ログイン要求

顧客がメールアドレスを入力して「ログイン」をクリック

確認コード送信

システムがワンタイムパスワード(6桁の数字)を生成し、メールで送信

コード入力

顧客が受信したコードを画面に入力

コード検証

入力されたコードが正しいか、有効期限内かを検証

セッション発行

検証成功で、認証状態を維持するトークンを発行

認証維持

以降のリクエストはトークンで認証。有効期限切れで再ログイン

システム間の連携

パスワードレス認証の構成
顧客

メール入力、OTP入力、認証済みでアクセス

自社サーバー

OTP生成・検証、セッショントークン発行

メールサーバー

OTPをメールで顧客に送信

セキュリティ対策

不正アクセス防止策

パスワードレス認証を安全に運用するために、以下の対策を実装しています。

短い有効期限
目的OTP漏洩時の被害軽減
具体的な実装確認コードは5分間のみ有効
レート制限
目的ブルートフォース防止
具体的な実装同一IPからの試行回数を制限
試行回数制限
目的総当たり攻撃防止
具体的な実装3回失敗でOTP無効化
トークン更新
目的セッションハイジャック防止
具体的な実装定期的にトークンを更新
ログ記録
目的不正アクセス検知
具体的な実装全ての認証試行を記録

セッション管理の考え方

セッショントークンのライフサイクル
ログイン成功

OTP検証が通り、認証が完了

トークン発行

有効期限7日のセッショントークンを発行

アクセス時に有効期限チェック

有効 → 継続利用 / 期限切れ → 再ログイン要求

ヘッドレス構成での実装ポイント

フロントエンドとバックエンドの分離

ヘッドレス構成では、認証状態の管理に注意が必要です。

ヘッドレス構成での認証
フロントエンド(Next.js等)

ログインUI、トークン保存、認証状態管理、自動ログアウト

バックエンド(API Routes)

OTP生成、OTP検証、トークン発行、Shopify API連携

トークン保存場所: HttpOnly Cookie(推奨)、Secure属性付きで送信、SameSite=Strictで保護

複数の認証方式への対応

お客様の利便性を考え、複数の認証方式に対応しています。

  • メールOTP: 標準のパスワードレス認証
  • Shopify Customer Account API: Shopifyの認証基盤を活用
  • ソーシャルログイン: Google、Apple等との連携(将来対応)

この認証方式がもたらす効果

お客様にとって

  • パスワードを覚える必要がない
  • メールアドレスだけで簡単ログイン
  • セキュリティの不安が軽減

運営側にとって

  • パスワードリセット対応が不要
  • アカウント乗っ取りリスクの低減
  • セキュリティ実装の簡素化

関連記事