WCFサービスで複数のクライアント固有のエンドポイントを公開するためのベストプラクティス?

StackOverflow https://stackoverflow.com/questions/3813656

質問

WCFを使用してWebサービスアーキテクチャを再設計を進め、我々のチームは、我々は、エンドポイントを公開する方法を議論してきました。例:私は、すべてのユーザーが適切なトークンを使用することができますが、私はまた、代わりに、証明書のセキュリティを使用するエンドポイントをいくつか持っていることを、標準エンドポイントを持っています。すべてのエンドポイントは、最終的には同じ実装を使用しますので、これは本当に、システムに取得するだけで、様々な方法です。

証明書のエンドポイントは、店舗でのポイントに固有の証明書になりますので、ある特定のクライアントのためになるだけの仕事。考えは私達の標準サービスは、 http://mysite.com/MyService.svc とで住むことができるということです証明書のエンドポイントは、 http://mysite.com/MyService.svc/Acme のようなものになるだろう。ここでの関心は、私が効果的に望ましいことではない私たちのWSDL、に私たちのクライアントのリストを入れているということです。

ここでのベストプラクティスは何ですか? (どのように我々は、特定のエンドポイントなしで扱っているどのクライアントを知っているだろう)単一の証明書のエンドポイントによる直接的な複数のクライアントに方法はありますし、コード側の証明書を取得しますか?そのクライアントのリストを非表示にする最良の方法は何ですか?私は見ていないよ、完全に、より良い解決策はありますか?

役に立ちましたか?

解決

あなたは、クライアントごとに個別のエンドポイントを作成する必要はありません。クライアント証明書に基づく認証とシングルエンドポイントを作成して、独自の X509CertificateValidatorするを実装独自の認証ロジックます。

他のヒント

を設定し、あなたのサービスの振る舞いのように:

       <behavior name="CertBeh">

            <serviceCredentials>

                <clientCertificate>

                    <authentication certificateValidationMode="PeerTrust" />

                </clientCertificate>

            </serviceCredentials>

        </behavior>
クライアントが提供する証明書はTrustedPeopleストアにある場合は、

PeerTrustは、ルックにWCFに指示します。だから、あなたのサービスが配置されているボックスに保存するすべてのクライアント証明書を入れて、あなたは大丈夫です。他の可能なオプションについては、この記事を参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top