2012-03-11 18 views
0

私は一日中WCFのセキュリティについて読んできましたが、私はそれに慣れているとは言いません。WCFセキュリティ - 初心者の質問 -

私はいくつかのWCFサービスを開発し、テストサーバーに展開してクライアントから呼び出すことができます。両面C#/ VS 2010.サービスはIIS 6でホストされています。

私はIIS 6でHTTPを使うことができますが、basicHttpBindingまたはwsHttpBindingをバインディングとして制限していると読んでいます。

また、wsHttpBindingを使用してワイヤを介して送信されるXMLは暗号化されていますが、basicHttpBindingは暗号化されていないことも読んでいます。

私はwsHttpBindingに行きたいと思うので、何らかの認証をしたいと思っています。ユーザー名とパスワードが入ってくるメッセージと一緒に渡されると思います。

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

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

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

答えて

0

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

ところで、basicHttpBindingとwsHttpBindingを使用してHTTPSを行うことができます。また、単純化のためにRESTの使用を検討する必要があります。 WCFはそれをサポートしており(webHttpBinding)、Web APIでサポートされています。

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

これを行う場合は、ユーザー名とパスワードを格納するデータベースを用意して、サービスを検証し、アクセスを許可または拒否できるようにする必要があります。 WCFでこれを実現する最も簡単な方法は、デフォルトのmembership providersのいずれかを使用することです。

+0

こんにちはマイク、そのクイック返信をありがとう。私が理解できないことの1つは、HTTPを使用して、メッセージにsecurityModeを設定できると言うことです - この場合暗号化されたメッセージではありませんか?この基本的な認証について検討します。別のことは明らかではありません - 同じ方法でbasicHttpBindingを確保できれば、なぜwsHttpBindingを選択するのでしょうか? basicHttpBindingは私にもっと広い範囲を与えませんか?私は発信者を認証できる限り、どの技術が私に電話しているか気にしません。もう一度お礼を言います。 – RBrowning99

+0

メッセージセキュリティでは、メッセージ本文が暗号化されています。それでも証明書が必要であり、HTTPSよりもパフォーマンスが低下する可能性があります。主に、ターゲットサービスに到達する前にメッセージがいくつかの仲介者間で転送される複雑なシナリオで使用されます。 wsHttpBindingと基本的なHttpBindingは、両方ともSOAPバインディングです。 basicは基本的なSOAPだけをサポートしますが、wsHttpBindingはSOAPの上に構築されたいくつかのWS- *プロトコルをサポートしています。これらの高度な機能が必要ない場合は、基本的にはより良いリーチを提供します。しかし、RESTはあなたにもっと広い範囲を与えるでしょう... –

+0

そのマイクのための乾杯。私はbasicHttpBindingとsecurityMode = Transportで何かをしています。私はsslDiagを使って自己証明書を作成しました。私の次のステップはclientCredentialType = Basicを設定することだと思います。クライアントがユーザー名を渡す方法を見ています。 Windowsユーザーでない場合、このサービスでこれを傍受して検証するにはどうすればよいですか?ありがとうRay – RBrowning99