パスワードリセットフローは、あらゆる認証システムで最も標的にされる経路の一つです。攻撃者は知っています;自分が制御するアドレスへリセットメールをトリガーできれば、漏洩したリセットリンクをリプレイできれば、または盗んだセッションで変更フォームに入れれば、プラットフォームが提供するサインインの瞬間の防御をすべて回避できることを。
多くのゲートウェイはリセットを後付けのものとして扱います:長寿命のリセットリンク、UIにむき出しで見える宛先アドレス、CSRFのないパスワード変更フォーム、誰が何をいつリセットしたかについての監査の欠如。それぞれは小さな隙間です;合わさると、正面玄関のMFAの壁に並行する勝手口を形成します。
もう一方の極端 — パスワード操作を煩雑で管理者専用に保つこと — は、サポート窓口のあふれ、付箋で共有される管理者パスワード、手続きが難しいために認証情報を一度も変えないユーザーを生みます。
パスワード操作はセルフサービスで、セキュアで、端から端まで監査されるべきです — ログインを守る同じエンジンが、変更、忘れた、リセットも守るべきです。
3つの連携したフロー、すべてログインおよびMFAと同じゲートウェイ上で動作します。
サインイン済みのユーザーは、現在のパスワードと新しいものを入力してパスワードを変更します。アクショントークン、CSRF保護、短いワンタイムウィンドウが、変更フォームをセッションリプレイとクロスサイトの悪用に対して守ります;操作は他のすべてのアクセス判断と同じ監査フローに宿ります。
サインインできないユーザーは、忘れたフォームにユーザーアイデンティティを入力します。UIはアカウントが存在するかどうかを確認しません — 常に同じ中立な応答を表示します — そしてリセットメールは構成済みのアイデンティティプロバイダー経由で配信されます;これにより、アドレスが要求者へ決して開示されません。
リセットリンクは、Redisに保存されたワンタイムかつ時間制限されたトークンを運びます。一度消費されるとトークンは無効になります;ウィンドウが切れるとリンクは死にます。漏洩したリセットURLをリプレイすることは失敗し、元の要求者にはやり直す経路が明確です。
変更の試行、忘れた要求、リセットリンクの消費、ポリシーの拒否が構造化された監査エントリーを書き込みます。監査フローはプラットフォームのSIEM先に供給されます;これにより、サポート窓口のパターン、異常の集中、個々のイベントが、ログインテレメトリーと同じタイムラインから見えます。
3つのフローの詳細 — 加えてロードマップのポリシー拡張。
サインイン済みのユーザーが変更フォームを開き、現在のパスワードとともに新しいパスワードを提供します;そしてゲートウェイは、新しい値を適用する前に構成済みのアイデンティティプロバイダー経由で現在の値を検証します。CSRFトークン、短いTTLのワンタイムアクショントークン、監査ログ記録が操作全体を守ります。
匿名ユーザーが忘れたフォームにユーザーアイデンティティを入力します。応答は、アカウントが存在するかどうかに関係なく同じです — アカウント列挙の漏洩なし、異なるエラー経路なし。ユーザーアイデンティティが実際のアカウントと一致すれば、構成済みのアイデンティティプロバイダーがリセットトークンを生成し、ユーザーの登録済みアドレスへ送ります。
リセットリンクは、リンク到来時にゲートウェイによって検証されるRedisに保存されたトークンを運びます。トークンはワンタイムかつ時間制限されています — 一度消費されるとトークンは無効になり、構成済みのウィンドウが切れるとリンクは動作を停止します。漏洩したリンクをリプレイすること、またはウィンドウが切れた後に転送されたメールを使うことは、クリーンに失敗します。
忘れたおよびリセットのフローでユーザーに返して表示されるメールアドレス、電話番号、ユーザーアイデンティティの値は常にマスクされます。パスワードを知るが受信箱を持たない攻撃者は宛先アドレスを読めません;他人の肩越しに見る者は連絡先の詳細を集められません。
AAMはパスワードを直接保存しません。変更、忘れた、リセットのアクションは、認証情報の所有者であるアイデンティティプロバイダーに委譲します — LDAP/AD、ローカルデータベース、OIDCパススルー、またはその他の構成済みプロバイダー。フローは同じままです;保存は、あなたがすでに信頼するプロバイダーに留まります。
すべてのパスワードフォーム — 変更、忘れた、リセット — はユーザーのセッションまたはアクションコンテキストに紐づく有効なCSRFトークンを必要とします。サインイン済みユーザーのパスワードページを悪用しようとするクロスサイトリクエストは、アイデンティティプロバイダーに到達する前にゲートウェイで失敗します。
複雑性ルール — 長さ、文字クラス、弱い/漏洩したパスワードの拒否、履歴の範囲 — は今日、各アイデンティティプロバイダーによって適用されます。すべてのプロバイダーに重なる単一の構成可能なルールセットを備えた、中央集権的なAAMレベルのポリシーがロードマップにあります;これにより、コンプライアンスチームは単一のポリシーを表現し、すべてのバックエンドで評価されるようにできます。
パスワード有効期限ローテーションポリシーと、漏洩した認証情報リストとの統合(ユーザーが公開された漏洩で既知のパスワードを設定できないように)がロードマップにあります。同じ監査フローが、強制ローテーションイベントと漏洩リストの拒否を、通常のライフサイクル操作とともに記録します。
セルフサービスのパスワードフローをアクセスレイヤーで安全に保つメカニクス。
パスワード操作は、意図的に短い時間ウィンドウのワンタイムアクショントークンを使います。変更フォームのアクショントークンは開いている状態で30秒生きます;リセットリンクのトークンは構成済みのウィンドウの間だけ生きます。リプレイ、リンク転送、セッショントークンの悪用は、まずこれらの短いウィンドウに当たります。
トークンの生成と消費はRedisに宿ります;これにより任意のゲートウェイポッドが任意のトークンを検証できます。水平スケールされたデプロイメントは連携負荷なしに一貫性を保ちます;あるポッドで消費されたトークンは他のすべてのポッドで即座に無効になります。
各サービスはパスワード操作を異なるアイデンティティプロバイダーへマッピングできます — 従業員にはLDAP/AD、コントラクターにはローカルデータベース、フェデレーテッドアイデンティティにはOIDCパススルー。フローのサーフェスは同じままです;ユーザーは常に一貫したパスワード体験を見ます。
パスワードの値はTLS経由でのみ運ばれ、ログに決して書き込まれず、エラーメッセージに決して反映されず、管理者コンソールに決して表示されません。オペレーターのメタデータ(最終変更時刻、ロック状態、リセット試行)は可視です;パスワード自体はそうではありません。
失敗した変更の試行、有効期限切れのリセットリンク、悪用的な忘れたフォームの送信が、プラットフォームのlogin-attack-protectionレイヤーが使うのと同じ試行カウンターを供給します。攻撃者は、ログインページで並行試行を待つ間に変更フォームをブルートできません。
authenticatorとリカバリーメールを失ったユーザー向けの、公式の管理者仲介リカバリーフローがロードマップにあります。フローは認証を再実行し、新鮮な登録を生成し、リカバリーアクションのための単一の監査済み記録を作成します。
ユーザーはプロファイルページからパスワードをサポート窓口の要求なしにローテーションします。彼らにサインインを許可する同じゲートウェイが認証情報の変更も許可します;そして操作はセッションアクティビティの残りと同じ監査フローに残ります。
サインインできないユーザーはリセットを要求し、構成済みのウィンドウ内でワンタイムのメールリンクで完了し、作業に戻ります。サポート窓口の関与なし、共有された一時パスワードなし、勝手口のように引っかかったまま残る平文のリカバリーメールなし。
コントラクターは初回サインイン時の強制変更フローで参加し、管理者がトリガーするリセットで離脱します;リセットはすべてのアクティブセッションを即座に無効化します。ライフサイクルの瞬間は、セキュリティチームに可視な監査エントリーを生成します。
PCI-DSS、HIPAA、GDPR、ISO 27001の監査は、パスワード操作がログ記録され、適切な範囲に保たれ、平文として露呈しないことの証拠を求めます。試行単位の監査フローとマスクされた宛先UIが、この証拠を通常運用の副産物として生成します。
変更、忘れた、リセット — 3つのセキュアなフロー、単一の監査、平文の勝手口なし。あなた自身のアプリケーション上のライブセットアップでご案内します。