4

クライアント証明書を WCF REST サービスに適用しようとしています。次のようなクライアント証明書の適用に関する詳細を見つけました。

<bindings>
  <wsHttpBinding>
    <binding name="wsHttpEndpointBinding">
      <security>
        <message clientCredentialType="Certificate" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

その場合は問題ないようです。ただし、webHttpBinding を使用していてmessage、ノードの無効な子であるというエラーが表示されsecurityます。

クライアント証明書を不適切に設定しようとしていますか? 誰でも私を正しい方向に向けることができますか?

4

1 に答える 1

7

wsHttpBinding 構成のメッセージ ノードは、SOAP メッセージ セキュリティ ヘッダーの構成に関するものです。これが、SOAP に基づいていない (REST である) webHttpBinding に対して有効でない理由です。

REST サービスの適切なセキュリティは、おそらくトランスポート レベル、つまり HTTPS です。

メッセージ レベル セキュリティを使用する場合は、SOAP に切り替える必要がありますが、メッセージ レベルはかなり専門的であり、ほとんどの状況では必要ありません。

webHttpBinding に証明書を使用する必要がある場合 (つまり、相互 SSL を使用する場合)、securityMode を Transport に設定し、clientCredentialType プロパティを Certificate に設定する必要があります。構成では、サーバー側では次のようになります

  <webHttpBinding>
    <binding name="ClientCertServerSide">
      <security mode="Transport" >
       <transport clientCredentialType="Certificate"/>
      </security> 
    </binding>
  </webHttpBinding> 

HttpWebRequest.ClientCertificatesクライアント側では、コード (プロパティを使用) または構成で証明書を指定できます。設定では次のようになります

    <endpointBehaviors>
        <behavior name="ClientCertClientSide">
            <clientCredentials>
                <clientCertificate findValue="put the cert name here" storeLocation="put the store here" />
            </clientCredentials>
        </behavior>
    </endpointBehaviors>
于 2012-04-10T19:17:57.387 に答える