MFA(多要素認証)
できること
セキュリティ強化
2つ以上の認証要素を組み合わせて、不正アクセスを防ぎます。
パスワード漏洩だけでは突破できないセキュリティを実現します。
- SMS認証: 電話番号に送られたワンタイムコードを入力
- メール認証: メールアドレスに送られたワンタイムコードを入力
柔軟な認証ポリシー
アプリや操作(スコープ)ごとにMFAの要求を変えられます。
- 全アプリで必須: 全てのアプリで2要素認証を使う
- 特定アプリのみ必須: 運営管理画面、社員用アプリ等でのみMFA
- 特定操作のみ必須: 送金(transfersスコープ)、設定変更等の重要操作時のみMFA
- 選択式MFA: ユーザーがSMS/メールから選べる
OTP送信方式
メール認証とSMS認証では、選択できる送信方式が異なります。
| 送信方式 | メール認証 | SMS認証 | 説明 |
|---|---|---|---|
| SMTP(内蔵) | ○ | - | idp-server内蔵のSMTP送信。外部サービス不要 |
| 外部API委譲 | ○ | ○ | 送信を外部サービス(SendGrid、Twilio等)に委譲 |
| no_action(開発用) | ○ | ○ | 送信せずOTPを内部生成。Management APIでコード取得 |
- メール認証: SMTP設定を行えばidp-server単体で完結。外部API委譲も可能
- SMS認証: SMS送信機能を内蔵していないため、本番では外部サービスへの委譲が必須
ワンタイムコード管理
セキュアなコード生成と検証を自動で行います。
- コードの自動生成
- 有効期限管理(3分、5分、10分等)
- 試行回数制限(3回、5回等)
- コード再送信の制御
導入時に決めること
1. どの認証要素を組み合わせるか
| 選択肢 | 説明 | 向いているケース |
|---|---|---|
| パスワード + SMS | 最も一般的、ユーザーが慣れている | 金融サービス、決済アプリ |
| パスワード + メール | 追加コストなし | 業務システム、SaaS |
| 選択式 | ユーザーがSMS/メールから選ぶ | 幅広いユーザー層 |
idp-serverでの設定:
- 認証ポリシーで必要な認証要素の組み合わせを定義
- SMS/メール送信サービスとの連携設定
2. MFAをどこに適用するか
| 選択肢 | 説明 | 制御方法 |
|---|---|---|
| 全アプリ必須 | 全てのアプリでMFAを使う | デフォルトポリシー |
| 特定アプリのみ必須 | 運営管理画面、社員用アプリ等の特定アプリのみMFA | クライアントIDで制御 |
| 特定操作のみ必須 | 送金、設定変更等の重要操作時のみMFA | スコープで制御 |
| ユーザーが選択 | MFAを使うかどうかユーザーが決める | OR条件ポリシー |
idp-serverでの設定:
- 認証ポリシーの適用条件(クライアントID、スコープ等)を設定
- アプリ別・スコープ別の認証要件を定義
3. 第2要素の登録をいつさせるか
| 選択肢 | 説明 |
|---|---|
| 初回 ログイン時 | アカウント作成直後に登録 |
| 任意のタイミング | ユーザーが好きな時に登録 |
| 必要になった時 | MFA必要な操作時に促す |
idp-serverでの設定:
- 登録フローのタイミングを設定
- 未登録時の挙動を定義
4. 認証コードの有効期限
| 決めること | 選択肢の例 |
|---|---|
| コード有効期限 | 3分、5分、10分 |
| 認証試行回数 | 3回まで、5回まで |
idp-serverでの設定:
- SMS/メール認証設定で有効期限、リトライ回数を設定
まとめ
MFA(多要素認証)を導入する際の重要なポイント:
必ず決めること
- 認証要素の組み合わせ: パスワード + SMS、パスワード + メール、選択式
- 適用対象: 全アプリ必須、特定アプリのみ、特定操作のみ
- 登録タイミング: 初回ログイン時、任意、必要になった時
- コード有効期限: 3分、5分、10分
idp-serverが提供すること
- SMS/メール認証の実装
- 柔軟な認証ポリシー(AND/OR条件、アプリ別・スコープ別)
- ワンタイムコードの生成・検証
- 有効期限管理、試行回数制限
- 外部SMS/メール送信サービスとの連携
自分で実装すること
- 第2要素登録画面(電話番号・メールアドレス入力)
- ワンタイムコード入力画面
- 外部SMS/メール送信サービスの契約・設定
セキュリティの注意点
- 第2要素の登録を強制しすぎると、ユーザー体験が低下
- SMS/メールは通信事業者・メールサーバーに依存するリスクあり
- コード有効期限は短すぎると入力が間に合わない(5分程度推奨)
- アプリ単位でMFA制御するため、重要操作は専用アプリ・クライアントIDで分離推奨