web-dev-qa-db-ja.com

サードパーティの認証情報をデータベース/安全な場所に保存する

この質問は、承認されたユーザーだけがアクセスできないように、サードパーティの資格情報をデータベースまたは安全な場所に保存することに関するものです。

私たちのシステムは、特定のユーザー名とパスワードを使用してサードパーティのシステムに接続します。彼らは基本認証を使用しており、認証にはnonce値とプレーンテキストパスワードが必要です。このサードパーティシステムに接続するユーザーごとに、個別の認証情報があります。

私たちのアプリケーションに対してユーザーを認証することは、ソルトハッシュやその他の一方向暗号化が可能であることを理解しています。

これらのサードパーティの認証情報を保存できるように、最善の方法を教えてください。私たちのシステムではこれらの資格情報をローカルに保存する必要があるため、いくつかの最良のアプローチを探しています。

5
rpg

問題は、問題の資格情報をプレーンテキストとして読み取れるように保存する必要があることです。これは、パスワードの保存( se bcrypt )に関する従来の知識の一部が適用されないことを意味します。

したがって、目標はリスクを軽減し、データを区分化することです。可能であれば、外部サイトに対して認証し、Webアプリケーションにアクティブな認証済みソケットへのファイルハンドルを返す別のプロセスを用意する必要があります。つまり、Webアプリケーションにはデータベースのその部分を読み取る権限がないため、使用中の実際の認証情報が漏洩することはありません。

データベースの値を暗号化することはよく知られていますが、認証アプリケーションがデータベースと同じサーバーで実行されている場合、認証アプリケーションの設計方法によってはユーティリティが制限される場合があります。時間とリソースがある場合は、認証アプリケーションで暗号化と復号化が行われ、データベースに暗号化された値が格納されるように設計します。これらの各役割を異なるマシンに配置し、データベースと外部認証システムを分離することで、最もセグメンテーションが提供されます。

3
Jeff Ferland

要件のベストプラクティスは[〜#〜] oauth [〜#〜]の使用です。したがって、(認証される)サードパーティがOAUTH support .....を提供する場合、それは、資格情報との取引を保存する必要がないため、それが最も好ましい方法です。しかし、OAUTHキーをセキュリティで保護します。これは、サードパーティからユーザーに提供されるキーであり、責任ははるかに少なくなります。

キーと資格情報の両方の場合でも、ポータルのユーザーのパスワードを使用して機密データを暗号化し、Saltを使用できます。

1
AbhishekKr

私はPerlに慣れていません。しかし、SHA暗号化は、双方向の暗号化/復号化についての質問を読んだ後に頭に浮かぶものです。次に、セキュリティで保護する必要があるのは、すべてではなくkeyだけです。パスワード。

0
mmhan