パスワードハッシュアルゴリズム

Discourse の保存されたパスワードハッシュを、別のアプリの htpassword ファイルで使用できるようにしたいと考えています。

Discourse で使用されているパスワードハッシュアルゴリズムは何ですか?

もし私の理解が間違っていたら申し訳ありませんが、Discourse のハッシュアルゴリズムを自社のアプリケーションに実装し、Discourse が保存しているハッシュ値と自社アプリが生成するハッシュ値を照合したい、ということでしょうか?

それであれば、Discourse から htpasswd ファイルへパスワードを定期的に同期し、Discourse が現在または将来使用する可能性のあるソルト(salt)に対応し、さらに Discourse のハッシュアルゴリズムが変更された場合でも、自社の実装を常に同期させ続ける必要があることになりますが、いかがでしょうか?

重ねて恐縮ですが、私の理解が完全に誤っていたらすみません。単なる好奇心からの確認です。

ユーザー名とパスワードが有効かどうかを確認するためだけです。

ユーザーがユーザー名とパスワードを提供します。提供されたパスワードが、Discourse からのハッシュに基づいて有効かどうかを確認します。ハッシュを生成することはありません。

「生成」については、保存することを意図したのではなく、パスワードが正しいことを検証することを意味しました。


Discourse が逆方向の SSO をサポートしているか気になります。つまり、Discourse を直接使って他のアプリにログインできるかどうかです。

はい、Discourse はログインに対して権限を持つことができます。これは正しいアプローチです@csmu。ハッシュ化方法を複製しようとすると、その方法が変更されるたびにログイン機能が機能しなくなります。

また、ローカルパスワードを持たないユーザーにも対応できません。

ソースコードを読んでご自身の質問の答えを見つけられない、あるいは読む気がない場合は、一歩引いて、解決しようとしている問題を説明することをお勧めします。

ソースを見つけた後は、問題なく読み込めています。user.password に関連する部分をソース内で探しており、特に user_controller に焦点を当てて確認しましたが、特に目立つ点は見つかりませんでした。どこを確認すべきか、ご教示いただければ幸いです。

私にとって有用なのは、SSO によるサインインやログインを追加せずに、Discourse 経由でユーザー名とパスワードを検証できる方法です。API を通じたものや、Ruby コードへの直接呼び出しによるものであれば構いません。

ああ、そうね。Rails は、どこに何があるか分かってからでないと意味がないわ。ここを見て:

でも、それでも私は、いきなり解決策から始めるのではなく、一度立ち止まって問題自体を明確に説明することを勧めるわ。

ジェイ、ありがとう。

user.rb 内の

 def confirm_password?(password)
    return false unless password_hash && salt
    self.password_hash == hash_password(password, salt)
  end

を読み込んだ後、

user = User.find_by_email('some.email.address')
user.confirm_password?'valid-password'
=> true

というコードが、純粋な Ruby の検証として機能することがわかりました。

私はサーバー用の .htaccess ファイルを構築する実験をしており、Discourse を通じてそのサーバーのユーザー名とパスワードを検証する方法を探していました。パスワードがわからないまま .htaccess ファイルを生成する必要があったためです。SSO のアプローチの方が優れていますが、SSO を使わずにユーザー名とパスワードを検証する方法を知ることは、私にとって役立つでしょう。

こんにちは、
ローカルログインに使用されているパスワードハッシュ関数と関連パラメータ(ハッシュ長、ソルト、実際に呼び出されているライブラリ名など)について教えていただけないでしょうか。以前に言及された Ruby ファイルを確認しましたが、答えが見つかりませんでした。この情報はコンプライアンス上の必要性から必要です。GDPR のベストプラクティス(そしてシステムセキュリティ全般の観点からも)では、この情報を文書化することが求められています。

編集:答えはここで見つかりました:Export password hashes in the PHC formatdiscourse/docs/SECURITY.md at main · discourse/discourse · GitHub