共用方式為


憑證驗證的傳輸安全性

以下案例示範使用 X.509 憑證予以保護的 Windows Communication Foundation (WCF) 用戶端和服務。每個用戶端都有能夠用於用戶端安全通訊端層 (SSL) 驗證以及受服務信任的憑證。此範例將示範要求/回覆訊息模式。

如需 使用憑證和服務的詳細資訊,請參閱使用憑證HOW TO:使用 SSL 憑證設定連接埠

使用憑證保護傳輸

特性 描述

安全性模式

傳輸

互通性

使用現有 Web 服務用戶端和服務。

驗證 (伺服器)

驗證 (用戶端)

是 (使用 HTTPS)

是 (使用憑證)

完整性

機密性

傳輸

HTTPS

繫結

WSHttpBinding

服務

下列程式碼和組態要獨立執行。執行下列任一步驟:

  • 使用不含組態的程式碼建立獨立服務。
  • 使用提供的組態建立服務,但不要定義任何端點。

程式碼

以下程式碼會示範如何建立使用傳輸安全性和憑證的服務端點。

組態

可以使用下列組態取代程式碼來設定服務:

<bindings>
    <wsHttpBinding>
        <binding name="CertificateWithTransport">
            <security mode="Transport">
                <transport clientCredentialType="Certificate"/>
            </security>
        </binding>
    </wsHttpBinding>
</bindings>
<services>
    <service name="ServiceModel.Calculator" 
             behaviorConfiguration="credentialConfig" >
    <endpoint address=""
              binding="wsHttpBinding"
              bindingConfiguration="CertificateWithTransport" 
              contract="ServiceModel.ICalculator" />
     </service>
</services>
<behaviors>
    <serviceBehaviors>
        <behavior name="credentialConfig">
            <serviceCredentials>
                <clientCertificate trustedStoreLocation="LocalMachine" 
                                   revocationMode="Online"/>
            </serviceCredentials>
        </behavior>
    </serviceBehaviors>
</behaviors>

用戶端

下列程式碼和組態要獨立執行。執行下列其中一項:

  • 使用此程式碼 (和用戶端程式碼) 建立獨立用戶端。
  • 建立未定義任何端點位址的用戶端,然後改用可接受組態名稱當做引數的用戶端建構函式。例如:

程式碼

下列程式碼會建立用戶端。繫結會設定為使用傳輸模式安全性,採用 TCP 傳輸,並將用戶端認證類型設為 Windows。

組態

以下組態程式碼適用於用戶端,而且同樣會指定憑證位置和用來尋找其位置的值。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="credentialConfiguration">
          <clientCredentials>
            <clientCertificate findValue="Contoso.com"
                      storeLocation="CurrentUser" 
                      x509FindType="FindBySubjectName" />
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="WSHttpBinding_ICalculator">
          <security mode="Transport">
            <transport clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://machineName/Calculator"
                behaviorConfiguration="credentialConfiguration"
                binding="wsHttpBinding"
                bindingConfiguration="WSHttpBinding_ICalculator"
                contract="ICalculator"
                name="WSHttpBinding_ICalculator" />
    </client>
  </system.serviceModel>
</configuration>

請參閱

概念

安全性概觀