0

私は一日中WCFのセキュリティについて読んでいて、それが快適だとは言えません。

いくつかのWCFサービスを開発し、それらをテストサーバーに展開して、クライアントから呼び出すことができます。両側C#/VS2010。サービスはIIS6でホストされています。現時点では、より新しいオプションはありません。

つまり、HTTPはIIS 6でしか使用できないことを読みました。これにより、バインディングとしてbasicHttpBindingまたはwsHttpBindingに制限されると思います。

また、wsHttpBindingを使用してネットワーク経由で送信されるXMLは暗号化されていますが、basicHttpBindingは暗号化されていないことも読みました。

したがって、ある種の認証が必要であり、ユーザー名/パスワードが着信メッセージとともに渡されると思われるため、wsHttpBindingを使用したいようです。

最初の質問は、wsHttpBindingを使用する場合、クライアントはhttpsを使用して呼び出す必要がありますか?そして、サーバー上の証明書などについて心配する必要がありますか?

2番目の質問は-私が利用できるセキュリティオプションは何ですか?発信者はサーバー上のWindowsユーザーである必要がありますか、それとも自分のユーザー名/パスワードを作成して、サービスとサービスのその部分に検証を行わせ、Windowsユーザーとは関係がないようにすることはできますか?Windowsユーザーと一緒に行く必要がある場合、サーバーに1つのユーザーアカウントを設定し、すべての発信者にそれを使用させるのが一般的だと思いますか?

基本的な考え方は、このサービスを選択した発信者に公開する必要があるということですが、誰もがサービスを見つけて呼び出すことができるようにしたくはありません。誰がサービスを呼び出すかをなんとかして制御する必要があります。ユーザー名/パスワードはこれを行うための標準的な方法ですか?たとえば、すべての呼び出し元が渡さなければならないGUIDを定義できますか?

4

1 に答える 1

0

あなたの最初の質問に答えて。wsHttpBindingはHTTPSを必要としません。SecurityModeをMessageまたはNoneに設定すると、HTTPを使用できます。ただし、サービスコールでユーザー名とパスワードを送信することを提案しているので、絶対にそうすべきではありません。そうすると、誰もが転送中のメッセージを見て、ユーザー名とパスワードを読み取ることができ、セキュリティが完全に危険にさらされます。証明書を取得してHTTPSを使用する必要があります。それはそれほど悪くはありませんが、ウェブ上にはあなたを助けるためのたくさんのリソースがあります。

ちなみに、basicHttpBindingとwsHttpBindingを使用してHTTPSを実行できます。また、簡単にするためにRESTの使用を検討する必要があります。WCFはそれを適切にサポートし(webHttpBinding)、WebAPIでより適切にサポートされます

2番目の質問に答えるには、発信者がサーバー上のWindowsユーザーである必要はなく、ユーザー名とパスワードを使用できます。これは基本認証と呼ばれます。繰り返しになりますが、ウェブ上にはそれについてたくさんあります。ここから始めてください。

これを行う場合は、ユーザー名とパスワードを保存するデータベースが必要になることは明らかです。これにより、その時点で検証し、サービスへのアクセスを許可または拒否できます。WCFでこれを実現する最も簡単な方法は、デフォルトのメンバーシッププロバイダーの1つを使用することです。

于 2012-03-11T20:14:06.743 に答える