したがって、この質問はセキュリティと暗号化を掘り下げており、多くの人が問題に遭遇していない可能性があります. 答えは理論的なものかもしれません。シナリオの概要を説明しましょう...
- Web サイトのフロントエンドは、バックエンド API を介して駆動されます。バックエンドには、 と を使用して一般的な登録フォームを処理するエンドポイントがあり
username
ますpassword
。SSLを使用しています。 - バックエンド API は、非同期ジョブ キューを介して登録を処理します。キューはAPI サーバーに応答を返しません。登録をキューに入れるのは、設定して忘れる操作です。
- キューに入れられたジョブはワーカーによって取得されます。ワーカーがユーザー アカウントの作成を担当します。これらのワーカーは、パスワードを使用してサードパーティの API 登録呼び出しをトリガーできるように、平文のユーザー パスワードにアクセスする必要があります。
したがって、問題の真の核心は、第三者の目にパスワードを公開せずに、パスワードをサードパーティの API に同期させることです。キューは、グローバル POST データからプレーンテキストのパスワードに直接アクセスできないという問題を引き起こします。つまり、何らかの方法でキューに格納する必要があります。
キューは、ハッシュ化されたパスワードを簡単に保存し、ユーザー テーブルに直接コピーできます。ただし、このソリューションでは、パスワードが既に暗号化されているため、サード パーティの API とパスワードを同期することはできません。私は双方向の暗号化をいじりましたが、パスワードが攻撃者によって解読されやすいままになることを心から懸念しています。
パスワード同期のこのシナリオを処理する安全な方法を考えられる人はいますか?
キューは必須であり、サーバーにアクセスできるすべてのユーザーがこれを読み取ることができると想定されています。パスワードは必ずしも同期する必要はありません。サードパーティ API のパスワードは、パスワードを入力せずにログイン ユーザーを介して安全に復号化する手段がある限り、元のパスワードから派生したものである可能性があります。これは基本的に、SSO をサポートしないサードパーティ API を使用してシングル サインオンをシミュレートするためのものです。