SimpleDetail
📖 3 menit baca

Exception Flow — Central Membership & SSO Hub

1. ドキュメントの目的

このドキュメントでは、システムで発生する可能性のあるすべての例外条件、システムの対応、ユーザーまたはシステムが取るべきアクションについて説明します。

2. 例外カテゴリ

  1. 登録 & 認証
  2. ログイン & 認証
  3. ライセンスのアクティベーション
  4. チェックアウト & 支払い
  5. Webhook Payment Gateway
  6. SSO & トークン
  7. グレース期間 & 一時停止
  8. システム & インフラストラクチャ

3. 例外: 登録 & 認証

EX-REG-01: メールアドレスが既に登録されている

属性 詳細
条件 ユーザーがシステムに既に存在するメールアドレスで登録を試みる
システム 登録を拒否する
HTTP 応答 422 Unprocessable Entity
ユーザーへのメッセージ "このメールアドレスは既に登録されています。ログインするか、別のメールアドレスを使用してください。"
ユーザーのアクション 同じメールアドレスでログインするか、パスワードを忘れた機能を使用する
備考 メッセージでは、メールアドレスが登録されているかどうかを確認しないこと(プライバシーのため)

EX-REG-02: メールアドレスの形式が不正

属性 詳細
条件 入力されたメールアドレスの形式が正しくない
システム フロントエンドとバックエンドの両方で検証を拒否する
HTTP 応答 422 Unprocessable Entity
ユーザーへのメッセージ "メールアドレスの形式が不正です。"
ユーザーのアクション メールアドレスの形式を修正する

EX-REG-03: パスワードが条件を満たしていない

属性 詳細
条件 パスワードが短すぎる、数字や大文字を含んでいないなど
システム 検証で拒否する
HTTP 応答 422 Unprocessable Entity
ユーザーへのメッセージ "パスワードは少なくとも 8 文字で、文字と数字を含める必要があります。"
ユーザーのアクション 条件を満たすパスワードを作成する

EX-REG-04: メールの検証リンクが期限切れ

属性 詳細
条件 ユーザーが検証リンクをクリックするが、リンクの有効期限が切れている (例: 24 時間)
システム 検証を拒否し、リンクは無効になる
HTTP 応答 410 Gone
ユーザーへのメッセージ "検証リンクは期限切れです。下のボタンをクリックして再送信してください。"
ユーザーのアクション 検証メールの再送信を要求する
システムのアクション 新しいリンクを含む新しい検証メールを送信する

EX-REG-05: 検証リンクが既に使用されている

属性 詳細
条件 ユーザーが既に使用された検証リンクをクリックする
システム アカウントが既にアクティブかどうかを確認する
ユーザーへのメッセージ "あなたのアカウントは既に検証されています。ログインしてください。"
ユーザーのアクション ログインする

4. 例外: ログイン & 認証

EX-LOGIN-01: 認証情報が間違っている

属性 詳細
条件 入力されたメールアドレスまたはパスワードが間違っている
システム ログインを拒否する
HTTP 応答 401 Unauthorized
ユーザーへのメッセージ "メールアドレスまたはパスワードが間違っています。"
ユーザーのアクション 再試行するか、パスワードを忘れた機能を使用する
備考 メッセージでは、メールアドレスが存在しないこととパスワードが間違っていることを区別しないこと(セキュリティのため)

EX-LOGIN-02: アカウントが検証されていない

属性 詳細
条件 ユーザーがメールの検証を完了していないアカウントでログインを試みる
システム ログインを拒否し、検証メールの再送信を提案する
HTTP 応答 403 Forbidden
ユーザーへのメッセージ "アカウントが検証されていません。メールを確認するか、再送信ボタンをクリックしてください。"
ユーザーのアクション メールを確認し、検証リンクをクリックする

EX-LOGIN-03: アカウントが停止されている

属性 詳細
条件 ユーザーのアカウントが管理者によって停止されている
システム ログインを拒否する
HTTP 応答 403 Forbidden
ユーザーへのメッセージ "あなたのアカウントは停止されています。詳細についてはサポートに連絡してください。"
ユーザーのアクション サポートに連絡する

EX-LOGIN-04: ログイン試行回数が多すぎる

属性 詳細
条件 ユーザーが短時間にログインに失敗する回数が多すぎる (例: 10 分間で 5 回)
システム 一時的にログインエンドポイントをロックする
HTTP 応答 429 Too Many Requests
ユーザーへのメッセージ "ログイン試行回数が多すぎます。10 分後に再試行してください。"
ユーザーのアクション 待ってから再試行する

5. 例外: ライセンスのアクティベーション

EX-LIC-01: アカウントが検証されていないときにライセンスをアクティベートする

属性 詳細
条件 ユーザーがアカウントを検証する前にライセンスをアクティベートしようとする
システム アクティベーションを拒否する
HTTP 応答 403 Forbidden
ユーザーへのメッセージ "メールの検証を完了してから、製品をアクティベートしてください。"
ユーザーのアクション メールの検証を完了する

EX-LIC-02: 同じ製品のライセンスが既にアクティブである

属性 詳細
条件 ユーザーが同じ製品の無料ライセンスをアクティベートしようとするが、既にアクティブなライセンスを持っている
システム デュプリケートを拒否し、既存のライセンスの詳細に誘導する
HTTP 応答 409 Conflict
ユーザーへのメッセージ "あなたは既にこの製品のアクティブなライセンスを持っています。"
ユーザーのアクション ダッシュボードでアクティブなライセンスを確認するか、アップグレードを選択する

EX-LIC-03: 製品が利用できない

属性 詳細
条件 ユーザーが削除または無効化された製品のライセンスをアクティベートしようとする
システム アクティベーションを拒否する
HTTP 応答 404 Not Found
ユーザーへのメッセージ "製品は現在利用できません。"
ユーザーのアクション 別の製品を選択する

6. 例外: チェックアウト & 支払い

EX-PAY-01: 支払い前に注文が期限切れになる

属性 詳細
条件 ユーザーが注文を完了する前に支払いが期限切れになる
システム 注文を「期限切れ」とマークし、ライセンスをアクティベートしない
ユーザーへのメッセージ "あなたの支払いセッションは期限切れになりました。購入プロセスを再開してください。"
ユーザーのアクション カタログに戻って新しい注文を作成する

EX-PAY-02: 支払いが拒否される

属性 詳細
条件 支払いが拒否される (残高不足、カード拒否など)
システム 注文を「失敗」とマークし、ライセンスをアクティベートしない
ユーザーへのメッセージ "支払いは失敗しました。別の方法を試してください。"
ユーザーのアクション 別の支払い方法を試す

EX-PAY-03: 支払い額が不正

属性 詳細
条件 Webhook で受け取った支払い額が注文の金額と一致しない
システム ライセンスのアクティベーションを拒否し、ログに記録する
ユーザーへのアクション なし
システムのアクション ライセンスをアクティベートせず、ログを保存する

EX-PAY-04: ダブルチェックアウト (重複注文)

属性 詳細
条件 ユーザーが同じ製品に対して短時間に複数の注文を作成する
システム 1 つの注文のみを処理し、重複注文を「重複」とマークする
ユーザーへのメッセージ "あなたは既にこの製品のアクティブな注文を持っています。進行中の注文を完了してください。"
ユーザーのアクション 既存の注文を完了する

7. 例外: Webhook Payment Gateway

EX-WH-01: Webhook の検証に失敗

属性 詳細
条件 Webhook の署名が不正または無効
システム Webhook を無視し、エラーログに記録する
HTTP 応答 (ゲートウェイに) 400 Bad Request
ライセンス アクティベートされない
アクション 管理者がログを確認し、必要に応じて手動で検証する

EX-WH-02: Webhook の再送信 (リトライ)

属性 詳細
条件 支払いゲートウェイが成功応答を受け取らないため、同じ Webhook を再送信する
システム order_id が既に処理されたかどうかを確認し、重複を無視する (イデンプテント)
HTTP 応答 (ゲートウェイに) 200 OK (ゲートウェイがリトライを停止するため)
ライセンス 二重にアクティベートされない

EX-WH-03: Webhook が届いたときにサーバーがダウンしている

属性 詳細
条件 支払いゲートウェイが Webhook を送信するときに、サーバーが利用できない
システム 支払いゲートウェイは自動的にリトライを試みる
アクション サーバーが回復した後、Webhook エンドポイントが応答できることを確認する
フォールバック 管理者が支払いログを確認し、必要に応じて手動でアクティベーションを実行する

8. 例外: SSO & トークン

EX-SSO-01: 製品のライセンスを持っていない

属性 詳細
条件 ユーザーがライセンスのない製品にログインを試みる
システム トークンの発行を拒否し、パッケージ選択ページにリダイレクトする
応答 403 no_license
ユーザーへのメッセージ "あなたはこの製品を購読していません。パッケージを選択して開始してください。"

EX-SSO-02: ライセンスが停止されている

属性 詳細
条件 ユーザーが停止されたライセンスでアプリケーションにログインを試みる
システム トークンの発行を拒否し、更新ページにリダイレクトする
応答 403 license_suspended
ユーザーへのメッセージ "あなたのアクセスはブロックされています。サブスクリプションを更新して続行してください。"

EX-SSO-03: アクセストークンが期限切れ

属性 詳細
条件 アプリケーションが期限切れのアクセストークンでリクエストを受け取る
システム リクエストを拒否する
HTTP 応答 401 Unauthorized
アプリケーションのアクション リフレッシュトークンを使用して新しいアクセストークンを取得する

EX-SSO-04: リフレッシュトークンが不正または期限切れ

属性 詳細
条件 リフレッシュトークンが期限切れまたは無効
システム 新しいアクセストークンの発行を拒否する
応答 401 invalid_refresh_token
アプリケーションのアクション ユーザーをハブのログインページにリダイレクトする

EX-SSO-05: ステートパラメータが一致しない (CSRF)

属性 詳細
条件 ハブによって返される state の値がアプリケーションによって保存された値と一致しない
システム SSO プロセスを拒否する
アプリケーションのアクション エラーメッセージを表示し、ユーザーにログインプロセスを再開するように求める
備考 CSRF 攻撃からの保護

EX-SSO-06: JWT の署名が不正

属性 詳細
条件 アプリケーションがハブのパブリックキーで検証できない JWT を受け取る
システム JWT を拒否する
アプリケーションのアクション アクセスを拒否し、ログインページにリダイレクトする
備考 トークンが偽造された場合に発生する可能性がある

9. 例外: グレース期間 & 停止

EX-GP-01: グレース期間の通知が失敗

属性 詳細
条件 グレース期間のリマインダーメールが送信できない (メールサービスエラー)
システム 失敗をログに記録し、リトライポリシーに従って再送信を試みる
アクション ダッシュボードのインアプリ通知は表示される
備考 メールの失敗はグレース期間のプロセスを停止しない

EX-GP-02: 停止後にユーザーが支払う

属性 詳細
条件 ライセンスが停止された後にユーザーが支払う
システム ライセンスを再アクティベートする
新しい expired_at 支払い日 + パッケージ期間
ユーザーへのメッセージ "あなたのアクセスは回復しました。ご購読のご継続ありがとうございます