2011-02-07 7 views
4

私はこのサービスを呼び出すWCF Webサービスとクライアントを持っています。このクライアントは多くの場所に配置されます。私は各クライアントを一意に認証して認証する必要があります。したがって、各ロケーションには一意のユーザー名とパスワードが割り当てられます。WCFクライアントアプリケーションで機密データを保護する方法は?

は今、私の質問は、一意に各クライアントを識別する方法

  1. ですか?
  2. クライアント側で機密データを保存するにはどうすればよいですか?

私は、クライアントを識別するための証明書を使用して、いくつかのアプローチ、

  1. について考えました。証明書を生成して展開する必要があります。
  2. サーバー側にアクティブなディレクトリを持ち、各クライアントにWindowsユーザーアカウントを使用させます。
  3. ユーザ名とパスワードを暗号化し、設定ファイルに保存します。私はaspnet_regiisを使用して設定ファイルを暗号化すると信じています。なぜなら、誰でも暗号化を解除できるからです。

答えて

1

あなたの質問は3つの部分に分けることができます。 2つはWCFのセキュリティに直接関係し、1つは範囲外です。

認証と認可 - これが可能です。 WCFには、クライアントの認証とロールの提供を可能にするいくつかの設定があります。あなた自身もビルドすることができます。 ADドメインにないクライアントを認証する最も一般的なシナリオは、サービスのカスタム検証またはクライアント証明書の使用によるユーザー名とパスワードの資格情報の使用です。

秘密性と完全性 - セキュリティに関するあなたの意識のため、資格情報(およびメッセージデータ)の安全な転送も必要です。セキュリティで保護された転送を提供しないと、ネットワーク上の誰もが通信を盗聴し、資格情報(またはデータ)を盗むことができます。攻撃者は、通信を傍受し、転送されたデータを変更することもできます。通信を保護するには、証明書によって提供されるインターネットシナリオで、トランスポートセキュリティ(TLS、SSL/HTTPS)またはメッセージセキュリティが必要です。

クライアントの資格情報を保護する - これはほとんどあなたのコントロールから外れています。資格情報を持つクライアントアプリケーションを管理していないクライアントマシンに配布すると、提供された資格情報のセキュリティを強制することはできません。ユーザー/顧客の責任です。アプリケーションに資格情報を何らかの形で含めると、熟練したエンドユーザ/攻撃者はおそらくいつもそれらを入手することができます。しかし、これはすべてのセキュアなソリューションの問題です。誰かが資格情報にアクセスする必要があります。

+0

秘密性と完全性 - 同意すると、私は盗聴からメッセージを保護するSSLを持っています。クライアントの資格情報を保護することが私の懸念事項です。私は機械が壊れてしまえば、私ができることはたくさんあることを理解しています。しかし、私はこの状況で行うことができる最高のは、証明書を置く、この証明書は、ユーザー名とパスワードです、または暗号化ユーザー名とパスワードを設定ファイルまたはWindowsユーザーアカウントを使用しますか? – iraSenthil

+1

@iraSenthil:私はWindowsユーザーアカウントを提供しません。証明書をクライアントマシンにインストールする必要があります。エクスポート秘密鍵を許可しないように設定して、他のマシンに譲渡できないようにすることもできます。また、いくつかの設定では、証明書をWindowsアカウント(私はそれを試したことがない)にマップすることができるはずです。ユーザー名とパスワードははるかに簡単ですが、そのような場合はセキュリティはあなた次第です。設定セクションを暗号化できますが、クライアントアプリケーションは暗号化を解除して使用する必要があります。 –

+0

ありがとう@ラディスラフMrnka – iraSenthil

0

私は証明書を好む傾向があります。彼らはu/pよりも妥協するのが難しいです。

クライアントデータがかなり軽量の場合は、クライアントアプリケーションで対称暗号化を使用しているのはencipher an XML fileです。

クライアントのアプリが侵害されている可能性がある場合は、サーバーの公開鍵を使用してデータを非対称に暗号化できます。次に、必要なときに軽量の暗号化データをサーバーに送信し、WCF応答で暗号解読します。これは、セッションの起動時にのみ発生すると実行可能です(そうでなければ、トラフィックが多い)。

+0

私はトラフィックを暗号化する証明書を持っているので、私は盗聴を心配していません。私は、クライアントに何らかのアイデンティティーを与え、そのアイデンティティを確保することに懸念しています。 – iraSenthil

+1

証明書は間違いなく、IMHOに行く方法です。ところで、私は、トラフィックだけのセキュリティのセキュリティについて心配していません。ユーザーがすべての操作のために解読されたデータを得るためにサーバーにコールバックしなければならない場合、それは厄介でおそらく潜在的です。 –

関連する問題