多要素認証(MFA)
idp-serverにおける多要素認証(MFA)の管理と制御について説明します。
idp-serverでサポートするMFA手段
| MFA手段 | 種類 | 特徴 | 制約 |
|---|---|---|---|
| パスワード | 知識要素 | 基本的な認証方式 | なし |
| Email OTP | 所持要素 | メールで送信されるワンタイムコード | なし |
| SMS OTP | 所持要素 | SMSで送信されるワンタイムコード | 外部サービス連携必須 |
| FIDO2/WebAuthn | 所持要素 + 生体要素 | セキュリティキー、指紋・顔認証 | 事前認証必須、ACRポリシー適用可 |
| FIDO-UAF | 所持要素 + 生体要素 | モバイルデバイス + 生体認証 | 事前認証必須、ACRポリシー適用可 |
OTP送信方式
Email OTPとSMS OTPでは、選択できる送信方式が異なります。
| 送信方式 | Email OTP | SMS OTP | 説明 |
|---|---|---|---|
| SMTP(内蔵) | ○ | - | idp-server内蔵のSMTP送信機能。外部サービス不要 |
外部API委譲(http_request) | ○ | ○ | OTPの生成・送信・検証を外部サービス(SendGrid、Twilio等)に委譲 |
| no_action(開発用) | ○ | ○ | OTPを内部生成するが送信しない。Management API でコードを取得して検証 |
- Email OTP: SMTP設定を行えばidp-server単体でメール送信が完結します。外部APIへの委譲も可能です
- SMS OTP: SMS送信機能を内蔵していないため、本番環境では外部SMS送信サービスへの
http_request委譲が必須です
MFA登録のタイミング
idp-serverでは、以下のタイミングでMFA手段を登録できます。
1. 初回ログイン時
新規ユーザーが初めてログインする際にMFA手段の登録を促します。
2. ログイン後の設定画面
ユーザーがログイン後、任意のタイミングでMFA手段を追加・削除できます。
3. 認証フロー中
認証ポリシーによりMFAが要求された際、まだ登録していない場合は認証フロー中に登録を促します。
認証ポリシーとの連携
MFAは認証ポリシーと連携して動作します。
適用条件によるMFA要求
認証ポリシーの適用条件に応じて、MFAを動的に要求します:
- スコープベース: 機密スコープ(
verified_claims)にはMFA必須 - ACRベース: 特定のACR値(
urn:mace:incommon:iap:gold)にはMFA必須 - クライアントベース: モバイルアプリには生体認証を優先
ステップアップ認証
既にログイン済みのユーザーに対して、操作の重要度に応じて追加のMFA認証を要求します。
シナリオ例:
- ユーザーがパスワードでログイン(通常操作可能)
- 送金操作を試みる
- システムが追加でFIDO2認証を要求
- FIDO2認証成功後、送金可能になる