メインコンテンツまでスキップ

MFA 用メール認証 (Email verification for MFA)

Logto は、登録済みメールアドレスにワンタイム認証コードを送信することでアカウントのセキュリティを強化する、メールベースの多要素認証 (多要素認証 (MFA)) 機能をサポートしています。メール MFA は第 2 の認証要素として機能し、他の MFA 要素(TOTP、パスキー、バックアップコードなど)と組み合わせて、柔軟な二要素認証オプションをユーザーに提供できます。

概念 (Concepts)

メール認証は、最も普及している MFA 方法の 1 つです。メールアカウントの広範な普及を活用し、一時的なワンタイム認証コードをユーザーのメール受信箱に直接配信します。追加のソフトウェアインストールが必要なアプリベースの認証器とは異なり、メール MFA は既存のメールインフラを利用するため、ほぼすべてのインターネットユーザーがウェブブラウザ、メールクライアント、またはモバイルアプリを通じて即座に利用できます。特別なハードウェアや追加設定は不要で、メールアカウントさえあればすぐに利用可能です。

MFA 用メール認証の設定 (Configure email verification for MFA)

ステップ 1: メールコネクターとテンプレートの設定

  1. コンソール > コネクター > メール / SMS コネクター

    に移動します

  2. 適切なメールコネクター(SendGrid、Mailgun など)を選択します

  3. 接続パラメーターを設定します

  4. MFA 用の メールテンプレート を、専用の usageType で設定します:

    • MFA 検証用は MfaVerification usageType
    • MFA バインド用は BindMFA usageType
    • ヒント: Logto Email Service にはビルトインのメールテンプレートがあります
  5. プロバイダーごとの詳細な設定手順は メールコネクター を参照してください

ステップ 2: MFA 用メール認証を有効化

  1. コンソール > 多要素認証 (MFA) に移動します
  2. 「メール認証コード」要素を有効化します。メール MFA は他の MFA 要素(TOTP、パスキー、SMS、バックアップコード)と組み合わせて利用することを推奨します(単一要素依存の低減のため)。
  3. 希望する MFA ポリシー(必須 / 任意)を設定します
  4. 設定変更を保存します
重要な利用上の注意:
  1. サインイン方法の制限:メール認証コードは サインイン方法 (1FA) と MFA 要素 (2FA) の両方として同時に利用できません。メール認証の実装ごとに 1 つの認証フローを選択してください。

  2. サインアップ方法との互換性:メール認証コードはサインアップ方法と MFA の両方で同時に利用できます。Logto は選択した MFA ポリシーに基づき、同じメールアドレスで 2 回メール認証を要求しないようエンドユーザー登録フローを最適化します。

  3. パスワードリカバリーとの互換性:メール認証コードは パスワードを忘れた場合 と MFA の両方で同時利用できますが、この組み合わせは 推奨されません。この設定では、ユーザーがパスワードリセット用メール認証を利用して MFA を回避し、1FA で新しいパスワードを使い、その後同じメール方式で MFA 検証を行うことが可能となり、MFA のセキュリティ効果が低下します。

メール MFA 設定フロー (Email MFA setup flows)

MFA 設定プロンプトは、ユーザー登録時またはサインイン後に表示されます(設定した MFA ポリシー による)。

メール MFA 設定フローは、以下の要素に影響されます:

  • MFA 主要要素の数:主要要素が複数ある場合、ユーザーはどれを設定するか選択する必要があります。主要要素とは、バックアップコード以外の MFA 方法です。
  • バックアップコードの有効化:有効化されている場合、主要 MFA 要素の設定後に自動的にバックアップコードが生成され、ユーザーに保存を促します。
  • サインアップ識別子の設定:メールアドレスが サインアップ識別子 として使われ、登録時にメール認証コードで既に認証済みの場合、そのメールは自動的に MFA 要素としてバインドされ、追加認証は不要です。他の主要要素が存在する場合、UI には「2 段階認証を追加」オプションが表示され(スキップ可能)、MFA が有効であることも明示されます。
  • 既存ユーザーデータ:既存ユーザーがサインイン後に MFA を設定する場合、まず主要認証を完了し、その後 MFA 設定に進みます。アカウントに既に認証済みの主要メールアドレスがある場合、上記サインアップ識別子の場合と同様の挙動となります。

以下は、よくあるメール MFA バインドシナリオ 3 例です。

シナリオ 1: メールアドレスを MFA のみに利用(典型的なフロー)

メールアドレスがサインアップ識別子ではなく、MFA のみで利用する場合は、標準の設定シーケンスに従います:

  • メール MFA 要素が 1 つだけの場合、その要素の設定 UI を直接表示します。
  • 主要 MFA 要素が複数ある場合、「MFA 設定」リストページを表示し、ユーザーにどの要素を設定するか選択させます。

例:

サインアップ: 電話番号 + SMS 認証コード + パスワード | MFA: メール認証コード + バックアップコード

Email MFA setup flow 1-1

サインアップ: 電話番号 + SMS 認証コード + パスワード | MFA: メール認証コード + パスキー + 認証アプリ OTP + バックアップコード

Email MFA setup flow 1-2

シナリオ 2: メールアドレスがサインアップ識別子として認証済み

メールアドレスがサインアップ識別子であり、登録時にメールコードで既に認証済みの場合、システムはそのメールを自動的に MFA 要素としてバインドします — 追加認証は不要です。

例:

サインアップ: メールアドレス + メール認証コード + パスワード | MFA: メール認証コード + バックアップコード

Email MFA setup flow 2

シナリオ 3: メール認証済みだが主要要素が複数存在

サインアップ時にメールアドレスが認証済み(サインアップ識別子)で、かつアカウントに複数の主要 MFA 要素(例:メール+パスキーや認証アプリ)がある場合、UI で「2 段階認証を追加」プロンプトが表示されます。ユーザーは追加要素を設定するかスキップできます。このプロンプトは、MFA が既に有効であることも示します。

例:

サインアップ: メールアドレス + メール認証コード + パスワード | MFA: メール認証コード + パスキー + 認証アプリ OTP + バックアップコード

Email MFA setup flow 3

メール MFA 認証フロー (Email MFA verification flows)

メール MFA が有効なユーザーがサインインする際、主要認証 (1FA) を正常に完了した後、第 2 の認証要素 (2FA) としてメール認証コードによる本人確認が求められます。

複数の MFA 要素が利用可能な場合、ユーザーは設定済み要素から選択できます。どの MFA 要素を最初に表示するかは、MFA 設定 で指定した優先順位に従います。

例:

サインイン: 電話番号 + パスワード | MFA: メール認証コード(前回利用) / 認証アプリ OTP / バックアップコード

Email MFA verification flow

エラーハンドリング (Error Handling)

  1. メールアドレスがバインドされていない

    • エラーコード: session.mfa.mfa_factor_not_enabled
    • 対応: まずメールアドレスをバインドするよう案内
  2. 認証コードが間違っている

    • エラーコード: verification_code.code_mismatch
    • 対応: 再入力を促し、リトライ回数を制限
  3. 認証コードの有効期限切れ

    • エラーコード: verification_code.expired
    • 対応: 新しい認証コードの再送信を促す
  4. 送信レート制限超過

    • エラーコード: connector.rate_limit_exceeded
    • 対応: 待機時間を表示し、再送信を制限