アプリケーションは電子メールを送信して、ユーザー アカウントを確認したり、パスワードをリセットしたりします。以下が本来あるべき姿であると信じており、参照と実装を求めています。
アプリケーションがユーザーのアドレスを確認するために電子メールでリンクを送信する必要がある場合、私の見解によると、リンクとアプリケーションによるリンクの処理には、次の特性が必要です。
- リンクのリクエスト URI にnonce
http://host/path?nonce
が含まれています ( )。 - リンクをたどる (GET) と、ユーザーにはフォームが表示され、オプションで nonce が表示されます。
- ユーザーが入力を確認します (POST)。
- サーバーはリクエストを受け取り、
- 入力パラメータをチェックし、
- 変更を実行し、
- ノンスを無効にします。
これはHTTP RFC on Safe and Idempotent Methodsに従って正しいはずです。
問題は、このプロセスには 1 つの追加のページまたはユーザー アクション (項目 3) が含まれていることです。これは、多くの人が (無用ではないにしても) 不必要だと考えています。このアプローチを同僚や顧客に提示するのに問題があったため、より広範な技術グループからの意見を求めています。POST ステップをスキップすることに対して私が持っていた唯一の議論は、ブラウザーからのリンクのプリロードの可能性でした。
- アイデアをよりよく説明し、技術者ではない人でも納得できるような参考文献はありますか (ジャーナル、ブログなどからのベスト プラクティス)。
- このアプローチを実装している参照サイト (できれば人気があり、多くのユーザーがいるサイト) はありますか?
- そうでない場合、文書化された理由または同等の代替手段はありますか?
ありがとう、
カリエム
詳細は省略
主要な部分は短くしましたが、意図的に省略した詳細についての議論を減らすために、いくつかの仮定を追加します。
- メールの内容は、この議論の一部ではありません。ユーザーは、アクションを実行するにはリンクをクリックする必要があることを知っています。ユーザーが反応しない場合、何も起こらないこともわかっています。
- ユーザーにメールを送信する理由や通信ポリシーを示す必要はありません。ユーザーは電子メールを受信することを期待していると想定します。
- ナンスには有効期限のタイムスタンプがあり、重複を減らすために受信者の電子メール アドレスに直接関連付けられます。
ノート
OpenID などにより、通常の Web アプリケーションは標準的なユーザー アカウント管理 (パスワード、電子メールなど) の実装から解放されますが、それでも一部の顧客は「自分のユーザー」を望んでいます。
奇妙なことに、満足のいく質問も答えもここではまだ見つけていません。私がこれまでに見つけたもの: