MFA 用メール認証 (Email verification for MFA)
Logto は、登録済みメールアドレスにワンタイム認証コードを送信することでアカウントのセキュリティを強化する、メールベースの多要素認証 (多要素認証 (MFA)) 機能をサポートしています。メール MFA は第 2 の認証要素として機能し、他の MFA 要素(TOTP、パスキー、バックアップコードなど)と組み合わせて、柔軟な二要素認証オプションをユーザーに提供できます。
概念 (Concepts)
メール認証は、最も普及している MFA 方法の 1 つです。メールアカウントの広範な普及を活用し、一時的なワンタイム認証コードをユーザーのメール受信箱に直接配信します。追加のソフトウェアインストールが必要なアプリベースの認証器とは異なり、メール MFA は既存のメールインフラを利用するため、ほぼすべてのインターネットユーザーがウェブブラウザ、メールクライアント、またはモバイルアプリを通じて即座に利用できます。特別なハードウェアや追加設定は不要で、メールアカウントさえあればすぐに利用可能です。
MFA 用メール認証の設定 (Configure email verification for MFA)
ステップ 1: メールコネクターとテンプレートの設定
-
コンソール > コネクター > メール / SMS コネクター
に移動します
-
適切なメールコネクター(SendGrid、Mailgun など)を選択します
-
接続パラメーターを設定します
-
MFA 用の メールテンプレート を、専用の usageType で設定します:
- MFA 検証用は
MfaVerification
usageType - MFA バインド用は
BindMFA
usageType - ヒント: Logto Email Service にはビルトインのメールテンプレートがあります
- MFA 検証用は
-
プロバイダーごとの詳細な設定手順は メールコネクター を参照してください
ステップ 2: MFA 用メール認証を有効化
- コンソール > 多要素認証 (MFA) に移動します
- 「メール認証コード」要素を有効化します。メール MFA は他の MFA 要素(TOTP、パスキー、SMS、バックアップコード)と組み合わせて利用することを推奨します(単一要素依存の低減のため)。
- 希望する MFA ポリシー(必須 / 任意)を設定します
- 設定変更を保存します
-
サインイン方法の制限:メール認証コードは サインイン方法 (1FA) と MFA 要素 (2FA) の両方として同時に利用できません。メール認証の実装ごとに 1 つの認証フローを選択してください。
-
サインアップ方法との互換性:メール認証コードはサインアップ方法と MFA の両方で同時に利用できます。Logto は選択した MFA ポリシーに基づき、同じメールアドレスで 2 回メール認証を要求しないようエンドユーザー登録フローを最適化します。
-
パスワードリカバリーとの互換性:メール認証コードは パスワードを忘れた場合 と 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: メール認証コード + バックアップコード
電話番号 + SMS 認証コード + パスワード
| MFA: メール認証コード + バックアップコード

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

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

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

メール MFA 認証フロー (Email MFA verification flows)
メール MFA が有効なユーザーがサインインする際、主要認証 (1FA) を正常に完了した後、第 2 の認証要素 (2FA) としてメール認証コードによる本人確認が求められます。
複数の MFA 要素が利用可能な場合、ユーザーは設定済み要素から選択できます。どの MFA 要素を最初に表示するかは、MFA 設定 で指定した優先順位に従います。
例:
サインイン: 電話番号 + パスワード
| MFA: メール認証コード(前回利用) / 認証アプリ OTP / バックアップコード
電話番号 + パスワード
| MFA: メール認証コード(前回利用) / 認証アプリ OTP / バックアップコード

エラーハンドリング (Error Handling)
-
メールアドレスがバインドされていない
- エラーコード:
session.mfa.mfa_factor_not_enabled
- 対応: まずメールアドレスをバインドするよう案内
- エラーコード:
-
認証コードが間違っている
- エラーコード:
verification_code.code_mismatch
- 対応: 再入力を促し、リトライ回数を制限
- エラーコード:
-
認証コードの有効期限切れ
- エラーコード:
verification_code.expired
- 対応: 新しい認証コードの再送信を促す
- エラーコード:
-
送信レート制限超過
- エラーコード:
connector.rate_limit_exceeded
- 対応: 待機時間を表示し、再送信を制限
- エラーコード: