2013-06-21 9 views
5

私は、インターネット経由でWCFサービスとやり取りするクライアントプログラムを構築しています。すべてが意図どおりに機能しますが、クライアントプログラムだけがそのサービスを利用できるように、私のサービスをどのように保護することができますか?WCFサービス - クライアントだけが使用できるように保護する方法

私のサービスへの正しいURLを持つすべての人は、WCFTestClient(たとえば)でそれを使用できます。

私のクライアントだけがサービスを利用できるように、それを非公開にする最良の方法は何ですか?トークン文字列を回転しますか?証明書?パスワード?

私は考えておらず、インターネット上で有用なものは何も見つかりませんでした。

敬具

UPDATE:クライアント・プログラムは、公開(誰)のためにダウンロードすることを意図しています。したがって、それは内部使用のためではなく、公式の生産で提供されるサービスになります。

私の考えは、私のクライアントプログラムに証明書をバインドします(それが可能な場合でも?)。 WCFサービスが実行されているIISで、有効な証明書があるかどうかを確認します。それは可能ですか?そこにもっと良い解決策がありますか?

+1

http://msdn.microsoft.com/en-us/ magazine/cc163570.aspx – Rohit

+0

IISでは、クライアントまたはIP範囲の既知のIPだけを呼び出すことができるように、IISを有効にすることができます。 SSLの長い、資格情報などは – Kyle

+0

です。こんにちはカイル、申し訳ありませんが、私は十分に具体的ではありませんでした。クライアントプログラムは、プロダクションにあるもので、誰にとっても必要です。だから私はクライアントのIPアドレスを知らない。私は基本的にそのようにしたい、私のクライアントは、サービスに対していくつかの種類の認証を持っているので、サービスは公開/ゲストのためにロックダウンされます。 – user1281991

答えて

1

Protect .net Web Service URL

を、お役に立てば幸いですあなたからの最初のトークン、各要求は新しいトークンを返します。クライアントは常に最新のトークンをチェックします(私の意見ではこれ以上注意しています)。

更新 - クライアントのために有効なトークンを生成してサーバーをチェックする方法は、トークンをVAにすることができます蓋が1秒間隔であるので、人々が要求を受け取り、トークンを見つけたとしても、15秒または30秒後に有効にならないでしょう。

+0

こんにちは、私もトークンの考えを考えました。しかし、私はそれについての質問があります。 WCFサービスで使用するすべてのメソッドでトークンを渡す必要がありますか?あるいは、それを実装する別の方法がありますか? – user1281991

+0

トークンジェネレータは、時間に基づいて、または変更されているものの、依然としてクライアントとサーバで同じものに基づいて作成し、その要求ごとにそのトークンを渡します。クライアント情報にも依存する必要があります。サーバーは同じトークンを生成し、両方のトークンをチェックします。はい、あなたはすべての要求とトークンを送信する必要があります:) –

+0

よろしく、ロイさん、ありがとうございます。それは私が思ったことです。私はよりスマートな方法を望んでいた:D – user1281991

1

あなたがフォーム認証を使用している場合は、必要な

にAspNetCompatibilityRequirementsModeを可能にすることによって、FormAuthenticationクッキーをチェックするためにASP.NETを活用することができますまたはあなたのサービスは、すなわちスタンドアロンであるならば、あなたはOAuthの認証を使用することができます誰もが消費され、あなたはそれについてもっと読むことができますOauth Authentication

あなたができることは、すべての認証されたクライアントに共有される消費者秘密鍵があるということです。呼び出し元はこのキーを使用して情報に署名し、サーバーは同じキーを使用して署名して比較します。

は、それは、あまりにも悪いこと 、あなたは超慎重になりたい場合は、クライアントが取得したトークンシステムを実装することができますすることはできません他の回答とともに

関連する問題