パスワードの回復は、これまで行ったことがないため、非常に難しいと感じました。
これまでのところ、次のようなWebアプリがあります。
Spring Security。パスワードが適切にハッシュされ、ユーザーロールが実装され、正しく機能します。
この戦略は、stackoverflowからの調査を示唆しています。
知られていないこと:
ご覧のとおり、リストは1つの質問に対して非常に厳しいものです。それで、あなたがそれを段階的に行う方法へのガイドリソースを提供できるかもしれないことを望んでいました。 SpringSecurityのドキュメントでこれについて多くを見つけることができなかったことに少し驚いた。ありがとう。
私は学生なので、特にJavaのコンテキストでそうするための業界のベストプラクティスを本当に知らないので、誰もが助けてくれることを本当に望んでいます。
この問題は、SpringSecurityとはあまり関係がありません。使用されているユーザーデータベースとパスワードエンコーダーの構造を知っていれば、実際には、データアクセス、Webコントローラー、および電子メールの送信を含むワークフローを実装しているだけです。リンクにはランダムなトークン文字列が含まれている必要があり(たとえば、SecureRandom
とbase64エンコーダーを使用)、userIdとタイムスタンプ(リンクが有効なウィンドウを検証するため)とともにデータベースに保存されている必要があります。 。コントローラーは、着信要求からトークンを抽出し、トークンを使用してデータベースからデータをロードするだけです。タイムスタンプをチェックしてから、ユーザーをパスワード入力フォームに転送します。要件によっては、他のセキュリティの質問にも回答してもらいたい場合があります。次に、パスワードを検証してエンコードし、リセットリンクテーブルに保存されているuserIdと一致するアカウントに保存します。データベースから期限切れのリンクを削除するためにバッチジョブを実行することも理にかなっています。
Grails Spring Security UIプラグインにはすでに パスワードを忘れた オプションがあり、直接使用することも、参照として使用することもできます。
このユースケース用にJavaプロジェクトを実装しました。これは、オープンソースのGitHubにあります。
すべての説明があります(そして何かが足りない場合は私に知らせてください...)
ご覧ください: https://github.com/OhadR/Authentication-Flows
これは、auth-flowsを使用するクライアントWebアプリであり、READMEとすべての説明が含まれています。実装を指示します: https://github.com/OhadR/ oAuth2-sample/tree/master/authentication-flows