WCFでC#、asp.netアプリケーションを使用しています。
クライアント証明書 ( Client.pfx ) を作成し、現在のユーザーの下で自分のマシンにインストールしました。次に、WCF ホスト マシンにサーバー証明書 ( Server.pfx ) を作成してインストールしました。ここで、クライアント証明書とサーバー証明書の両方を照合して、クライアントから認証する必要があります。一致する場合は、WCF 内のメソッドへのアクセスを許可する必要があります。これを達成する方法は?
WCFでC#、asp.netアプリケーションを使用しています。
クライアント証明書 ( Client.pfx ) を作成し、現在のユーザーの下で自分のマシンにインストールしました。次に、WCF ホスト マシンにサーバー証明書 ( Server.pfx ) を作成してインストールしました。ここで、クライアント証明書とサーバー証明書の両方を照合して、クライアントから認証する必要があります。一致する場合は、WCF 内のメソッドへのアクセスを許可する必要があります。これを達成する方法は?
証明書認証を実行するためにコードを記述する必要はありません。これは構成によって処理できます。
この記事から:
http://msdn.microsoft.com/en-us/library/ff648360.aspx
証明書の場所を指定するには、いくつかの方法があります。この例では、サービスの証明書ストアを使用しています。
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceCredentials>
<serviceCertificate findValue="CN=tempCertServer" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
そして、これは構成ファイルで直接エンコードされた証明書を使用しています:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="NewBehavior">
<clientCredentials>
<clientCertificate findValue="CN=tempCertClient"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
...
<client>
<endpoint address="http://<<service address>>"
behaviorConfiguration="NewBehavior" binding="wsHttpBinding"
bindingConfiguration="wsHttpEnpoint1" contract="ServiceReference1.IService"
name="wsHttpEndpoint">
<identity>
<certificate encodedValue="<<Encode Value>>" />
</identity>
</endpoint>
</client>
</system.serviceModel>
Praveen さんが話しているのは、クライアント証明書認証です。これについては多くのことが書かれていますが、クライアント証明書認証を使用する場合、基本的に 2 つの認証オプションがあります。
1 つは ChainTrust と呼ばれます。これは、クライアント証明書がホストで見つかった証明書を認証局 (CA) ベースとして持つことを意味します。
もう 1 つのオプションは PeerTrust と呼ばれ、クライアント認証証明書のコピーがホスト上の LocalMachine\TrustedPeople ストア内にあることを意味します。
または、PeerOrChainTrust を使用することもできます。これは、チェーンまたはピアの信頼が true の場合、クライアントが許可されることを意味します。
これは非常に大きなトピックです。この小さなフォーラムには大きすぎますが、ここから始めるのが良いでしょう:
ここにリンクがあります。http://msdn.microsoft.com/en-us/library/ff650785.aspx