共用方式為


客戶端驗證

服務經常發佈元數據,以啟用用戶端 Proxy 類型的自動產生和設定。 當服務不受信任時,用戶端應用程式應該驗證元數據是否符合用戶端應用程式的安全性、交易、服務合約類型等原則。 下列範例示範如何撰寫用戶端端點行為,以驗證服務端點,以確保服務端點安全使用。

服務會公開四個服務端點。 第一個端點使用 WSDualHttpBinding、第二個端點使用 NTLM 驗證、第三個端點啟用交易流程,而第四個端點則使用憑證式驗證。

用戶端會使用 類別 MetadataResolver 來擷取服務的元數據。 用戶端會使用驗證行為強制執行禁止雙工系結、NTLM 驗證和交易流程的原則。 針對從服務元資料匯入的每個ServiceEndpoint實體,用戶端應用程式會在嘗試使用 Windows Communication Foundation (WCF) 用戶端連線至端點之前,將端點行為的InternetClientValidatorBehavior實例ServiceEndpoint新增至 。 行為的 Validate 方法會在任何呼叫服務的作業之前執行,並藉由擲回 InvalidOperationExceptions 來強制執行客戶端的原則。

建置範例

  1. 若要建置解決方案,請遵循 建置 Windows Communication Foundation 範例中的指示。

在同一部電腦上執行這個範例

  1. 使用系統管理員許可權開啟 Visual Studio 的開發人員命令提示字元,然後從範例安裝資料夾執行 Setup.bat。 這會安裝執行範例所需的所有憑證。

  2. 從 \service\bin\Debug 執行服務應用程式。

  3. 從 \client\bin\Debug 執行用戶端應用程式。 用戶端活動會顯示在用戶端主控台應用程式上。

  4. 如果客戶端和服務無法通訊,請參閱 WCF 範例 疑難解答秘訣。

  5. 當您完成範例時,請執行 Cleanup.bat 來移除憑證。 其他安全性範例使用相同的憑證。

在多台電腦上執行範例

  1. 在伺服器上,在 Visual Studio 的開發人員命令提示字元中,以系統管理員許可權執行,輸入 setup.bat service。 使用 setup.bat 自變數執行 service 會建立具有電腦完整域名的服務憑證,並將服務憑證導出至名為 Service.cer 的檔案。

  2. 在伺服器上,編輯 App.config 以反映新的憑證名稱。 也就是說,將 findValue 元素中的 < 屬性變更為電腦的完整域名。

  3. 將Service.cer檔案從服務目錄複製到用戶端電腦上的客戶端目錄。

  4. 在用戶端上,以系統管理員許可權開啟 Visual Studio 的開發人員命令提示字元,然後輸入 setup.bat client。 通過setup.bat並使用client參數執行這個指令,將會建立一個名為 Client.com 的用戶端憑證,並將該憑證匯出到一個名為 Client.cer 的檔案中。

  5. 在 client.cs 檔案中,變更 MEX 端點的位址值以及 findValue 的設定,將預設伺服器憑證的位址調整到符合您服務的新位址。 您可以藉由將localhost取代為伺服器的完整功能變數名稱來執行此動作。 重建。

  6. 將Client.cer檔案從客戶端目錄複製到伺服器上的服務目錄。

  7. 在用戶端上,在以系統管理員許可權開啟的Visual Studio開發人員命令提示字元中執行 ImportServiceCert.bat。 這會將服務憑證從 Service.cer 檔案匯入 CurrentUser - TrustedPeople 存放區。

  8. 在伺服器上,在以系統管理員許可權開啟的Visual Studio開發人員命令提示字元中執行 ImportClientCert.bat。 這會將客戶端憑證從 Client.cer 檔案匯入 LocalMachine - TrustedPeople 存放區。

  9. 在服務計算機上,在 Visual Studio 中建置服務專案,然後執行 service.exe。

  10. 在用戶端電腦上,執行 client.exe。

    1. 如果客戶端和服務無法通訊,請參閱 WCF 範例 疑難解答秘訣。

在範例之後清除

  • 在您完成執行範例之後,請在samples資料夾中執行 Cleanup.bat。

    備註

    在跨電腦執行此範例時,此腳本不會移除用戶端上的服務憑證。 如果您已執行跨計算機使用憑證的 WCF 範例,請務必清除已在 CurrentUser - TrustedPeople 存放區中安裝的服務憑證。 若要這樣做,請使用下列命令: certmgr -del -r CurrentUser -s TrustedPeople -c -n <Fully Qualified Server Machine Name>. For example: certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com

另請參閱