データベース内のすべてのユーザーのパスワードをリセットする可能性を探しています。とにかくそれは可能ですか?私が今までに見つけたのは、ユーザー自身のパスワードリセットを有効にすることでしたが、それは必要ではありません。ASP.NET Core 2すべてのユーザーのパスワードを管理者としてリセット
古いユーザーに強制的にアプリケーションのパスワードを再作成する必要があります。多分もっと良い解決策がありますか?
データベース内のすべてのユーザーのパスワードをリセットする可能性を探しています。とにかくそれは可能ですか?私が今までに見つけたのは、ユーザー自身のパスワードリセットを有効にすることでしたが、それは必要ではありません。ASP.NET Core 2すべてのユーザーのパスワードを管理者としてリセット
古いユーザーに強制的にアプリケーションのパスワードを再作成する必要があります。多分もっと良い解決策がありますか?
グローバルパスワードのリセットを行う必要がある場合、何をやるべきことは、ランダムな暗号的に安全なパスワードを生成する関数を作成して、単にそれらのランダムなもの(に各ユーザーのパスワードを変更しています1つではなく、各ユーザーのパスワードを生成します)。これは基本的にグローバルロックアウトを引き起こします。なぜなら、ユーザーはこのパスワードを知らないのでログインできないからです。
その後、パスワードがリセットされたことを示す電子メールを送信して、ユーザーをパスワードリセットページに誘導する必要があります。彼らは基本的にパスワードを忘れたかのように振る舞い、電子メールを送信したり、送信された電子メールのトークンでリンクをクリックしたり、新しいパスワードを設定したりする通常の処理を行います。
また、サインインエラーメッセージを一時的に更新して、すべてのユーザーがパスワードをリセットする必要があることを示す必要があるため、電子メールが届かないと、パスワードが機能しない理由と、それ。
ありがとう!私はこの解決策で終了し、データベースを更新しました。 – DarthIwan
パスワードをすべてのユーザーに固有のものにリセットしようとしている場合は、asnetUsers
テーブルをハッシュされたパスワードと新しいパスワードのパスワードsaltで更新する必要があります。
の経験から、これを行う最も簡単な方法は、その変更されたユーザーからPasswordHash
とPasswordSalt
をつかむ、特定のユーザーのためのアプリを使用して、パスワードの変更で、その後、それを他のすべてのユーザーにSQLを実行UPDATE
組み合わせ。
厳密には安全ではありませんが、それは仕事をします。
多かれ少なかれ:
-- Update User using App, and get the ID
DECLARE @Id INT = XX -- Your app userid here
DECLARE @PasswordHash NVARCHAR(MAX), @PasswordSalt NVARCHAR(MAX)
-- get the password hash and salt for the changed user
SELECT @PasswordHash = PasswordHash, @PasswordSalt = PasswordSalt
FROM aspnetUsers
WHERE Id = @Id
-- Update the other users with the same password and salt
UPDATE aspnetUsers SET
PasswordHash = @PasswordHash,
PasswordSalt = @PasswordSalt
WHERE
Id IN (---whatever you need to filter by)
"パスワードをリセットする"とはどういう意味ですか?何十年ものセキュリティ研究とベストプラクティスを無視し、_all_ユーザーのパスワードを「Welcome123」にリセットして、それらにメールを送りたいですか? – CodeCaster