パスワードはアカウントセキュリティの最も弱いリンクです。フィッシングされたり、漏洩したり、使い回されたり、忘れられたりする可能性があります。そのため、WebAuthn Passkeysのサポートを追加しました - フィッシング耐性があり、より安全で便利なパスワードレス認証方式です。
Passkeysとは?
Passkeysは、デバイス(スマートフォン、ラップトップ、セキュリティキー)に保存される暗号化された認証情報で、認証時にパスワードを置き換えます。WebAuthn標準(FIDO2の一部)を使用し、いくつかの利点を提供します:
- フィッシング耐性 - Passkeysはウェブサイトのドメインに紐付けられているため、偽サイトでは使用できません
- 漏洩するシークレットがない - サーバーには公開鍵のみが保存されます
- デバイスに紐付け - 秘密鍵はデバイスから離れることはありません
- 生体認証で保護 - 通常、Face ID、Touch ID、またはWindows Helloで保護されます
- デバイス間同期 - 最新のプラットフォームはiCloud、Google、またはMicrosoftアカウントを介してデバイス間でPasskeysを同期します
私たちの実装
既存のdjango-allauth認証スタックにWebAuthn Passkeysサポートを統合し、WebとモバイルAPIの両方のエンドポイントを提供しています。
登録フロー
ユーザーが新しいPasskeyを登録する際、フローは次のように動作します:
- クライアントが登録オプションをリクエストする
- サーバーがチャレンジを生成し、ユーザーとリライングパーティの情報を含める
- ブラウザのWebAuthn APIがユーザーにプロンプトを表示(生体認証またはセキュリティキー)
- クライアントが認証情報を送信する
- サーバーが検証して保存する
| |
認証フロー
Passkeysを使用した二要素認証の場合:
- ユーザーがプライマリ認証を完了(ユーザー名/パスワードまたはソーシャルログイン)
- サーバーがWebAuthn検証のためのチャレンジを返す
- ブラウザがPasskeyを要求(生体認証タッチ)
- 認証情報が保存された公開鍵に対して検証される
- ユーザーが完全に認証される
| |
Passkey管理
ユーザーは登録されたPasskeysを管理できます:
- すべてのPasskeysを一覧表示 - 登録日と最終使用日を含む
- Passkeysの名前を変更 - 識別しやすくするため(例:「iPhone」、「MacBook」)
- Passkeysを削除 - 最後の認証器の削除からの保護付き
| |
APIエンドポイント
当社のREST APIはモバイルアプリに完全なWebAuthnサポートを提供します:
| エンドポイント | メソッド | 説明 |
|---|---|---|
/api/webauthn/register/options/ | GET | 登録チャレンジを取得 |
/api/webauthn/register/complete/ | POST | 登録を完了 |
/api/webauthn/authenticate/options/ | GET | 認証チャレンジを取得 |
/api/webauthn/verify/ | POST | 2FAの認証情報を検証 |
/api/webauthn/ | GET | 登録済みPasskeysを一覧表示 |
/api/webauthn/<id>/ | PATCH | Passkeyの名前を変更 |
/api/webauthn/<id>/ | DELETE | Passkeyを削除 |
セキュリティに関する考慮事項
リカバリーコード
ユーザーが最初の認証器(PasskeyまたはTOTP)を登録すると、自動的にリカバリーコードを生成します。これらのワンタイムコードは、他のすべての認証方法が利用できなくなった場合に使用できます:
| |
ロックアウト防止
ユーザーは、二要素認証方法がなくなる場合、最後のPasskeyを削除できません:
| |
モニタリング
セキュリティモニタリングのためにDatadogメトリクスを通じてPasskeyの使用状況を追跡しています:
| |
ブラウザサポート
WebAuthnはすべての最新ブラウザでサポートされています:
- Chrome 67+
- Firefox 60+
- Safari 13+
- Edge 79+
- モバイルChrome、Safari、Firefox
古いブラウザでは、ユーザーはTOTP(認証アプリ)またはリカバリーコードを引き続き使用できます。
ユーザーエクスペリエンス
Passkeyの追加は数秒で完了します:
- 設定 → セキュリティ → 二要素認証に移動
- Passkeyを追加をクリック
- デバイスに名前を付ける(例:「iPhone 15」)
- Face ID / Touch ID / Windows Helloで認証
- 完了!Passkeyが登録されました
今後のログインでは生体認証の確認だけで済みます - パスワードの入力や認証アプリからのコードのコピーは不要です。
Passkeysを選んだ理由
| 方法 | フィッシングリスク | ユーザーエクスペリエンス | リカバリー |
|---|---|---|---|
| パスワード | 高 | 悪い(忘れやすい、弱い) | メールリセット |
| SMS 2FA | 中(SIMスワップ) | まあまあ | 電話番号 |
| TOTPアプリ | 低 | 手動コード入力 | バックアップキー |
| Passkeys | 非常に低い | 優秀 | リカバリーコード |
Passkeysは認証の未来を代表しています。Apple、Google、Microsoftのプラットフォームですでにサポートされており、ほぼすべてのユーザーがアクセスできます。
パスワードレスに移行する準備はできましたか?セキュリティ設定でPasskeysを有効にしてください!