多くのサードパーティ サービスにアクセスするために使用されるデスクトップおよびモバイル アプリケーションがあります。これらのサービスには、潜在的に機密性の高い情報 (認証トークン、場合によってはプレーンテキストのユーザー名/パスワードなど) が含まれています。
複数のコンピューターやデバイス間で設定を同期するサービスを提供したいと考えています。つまり、私たちが提供するサービスにサインインすると、サインインしているすべての場所でその情報が同期されます。
サードパーティのアプリケーションに平文パスワードの使用を強制的に停止させる方法はありません。
私たちが検討したいくつかのアプローチがあります。
パスワードや認証トークンを送信しないでください。
ユーザーが新しいデバイスにサインインするときは、サードパーティ サービスごとにデバイスを再入力/認証する必要があります。
利点: 安全で、パスワードやトークンが侵害されるリスクがありません。
短所:ユーザーにとって難しい。クライアント証明書またはハードウェア トークンを使用して機密情報を暗号化します。
ユーザーがサインインする場合、証明書/ハードウェア トークンを提供します。
利点: 非常に安全です。
短所: 参入障壁が大きく、非営利アプリの実装は困難または不可能です。ユーザーが提供するパスワードを使用して機密情報を暗号化する
ユーザーが新しいデバイスにサインインすると、パスワードの入力を求められます。
パスワードが正しくない場合は、他のすべてのデバイスを再入力/認証する必要があります。利点: ユーザーが強力なパスワードを提供する場合、安全です。
欠点: ユーザーがパスワードをリセットした場合、すべてのサードパーティ アプリケーションに対してデバイスを再認証する必要があります。サーバー上の機密情報を暗号化します。
利点: ユーザーにとって使いやすい。
欠点: 設定テーブルを取得する人にとっては、平文よりもわずかに多くの作業しか必要ありません。何も暗号化する必要はありません。(平文ストレージ)
利点: ユーザーにとって使いやすい。
欠点: DB を取得して、すべてのユーザーのパスワード/認証トークンを簡単に取得できます。
私の質問は、まだ検討していないより良いアプローチはありますか?