Railsに移植している数千人のユーザーを持つ既存のWebアプリケーションがあります。このアプリを書き直してリファクタリングするとき、開発、テスト、および運用の目的で、任意の数の異なるサーバーで実行する必要がある場合があります。
ユーザー モデルで Rails の組み込み has_secure_password メソッドを使用していますが、パスワード データの移植性が心配です。データベースのコンテンツをマシンからマシンに移動して、さまざまな環境でテストする必要があります。各環境で同じユーザーとパスワードのセットを使用してユーザー認証機能をテストできることが非常に重要です。
これまでのところ、bcrypt-ruby が Rails とどのように連携するかについての答えを見つけるのは簡単has_secure_password
ですが、何週間も検索しても明確な答えは見つかりませんでした。
WorkFactor has_secure_password
+ Salt + HashedPassword が連結されてpassword_digest
データベース列に保存される場合、他のマシンに移動した場合 (他のマシンが Unix ライクな OS で Rails を実行していると仮定して)、そのハッシュを再生成して確実に比較できますか?
または別の言い方をすれば、bcrypt-ruby パスワードは Rails のhas_secure_password
ポータブルで生成されますか?
フォローアップの質問: ソルトが常にランダムに生成される場合 (同じパスワードが異なるハッシュを使用するのを見たことがあるので、パスワード自体のテキストからソルトが作成されたとは思わない)、Rails アプリはどのようにして確実にログインフォームの送信時にパスワードを再ハッシュし、データベースにあるものと比較します。明らかに、それを比較するには、最初に塩が何であるかを知る必要があります。それはどのように行うのですか?