最愛のRabbitMQ 管理プラグインには、プレーンな HTTP リクエストを介して RabbitMQ を管理するためのHTTP APIがあります。
プログラムでユーザーを作成する必要があり、HTTP API が選択されました。ドキュメントは不足していますが、API は非常にシンプルで直感的です。
セキュリティを懸念して、ユーザー パスワードをプレーン テキストで渡したくありません。代わりに、API にはパスワード ハッシュを送信するためのフィールドが用意されています。そこから引用:
[取得 | 置く | 削除] /api/users/名前
個々のユーザー。ユーザーを PUT するには、次のようなボディが必要です。
{"password":"secret","tags":"administrator"}
また:
{"password_hash":"2lmoth8l4H0DViLaK9Fxi6l9ds8=", "tags":"administrator"}
tags キーは必須です。またはを設定
password
するpassword_hash
必要があります。
これまでのところ、問題は次のとおりです。?を正しく生成するにはどうすればよいpassword_hash
ですか?
パスワード ハッシュ アルゴリズムは RabbitMQの構成ファイルで構成されており、デフォルトの SHA256 として構成されています。
私は C# を使用しており、次のコードを使用してハッシュを生成しています。
var cr = new SHA256Managed();
var simplestPassword = "1";
var bytes = cr.ComputeHash(Encoding.UTF8.GetBytes(simplestPassword));
var sb = new StringBuilder();
foreach (var b in bytes) sb.Append(b.ToString("x2"));
var hash = sb.ToString();
これはうまくいきません。SHA256 暗号化用のいくつかのオンライン ツールでテストすると、コードは期待どおりの出力を生成しています。ただし、管理ページに移動してユーザーパスワードを手動で「1」に設定すると、魅力的に機能します。
この回答により、構成をエクスポートし、RabbitMQ が生成しているハッシュを確認し、いくつかのことに気付きました。
- 「1」のハッシュ例: 「y4xPTRVfzXg68sz9ALqeQzARam3CwnGo53xS752cDV5+Utzh」
- すべてのユーザーのハッシュは固定長です
- ハッシュは毎回変わります (パスワードが同じであっても)。PB2K もパスワードに対してこれを行うことは知っていますが、この暗号化プロパティの名前は知りません。
password_hash
RabbitMQを渡すと、変更なしで保存されます
C# だけでなく、他のプログラミング言語でも提案を受け付けています。