共用方式為


用戶端驗證

服務經常會發行中繼資料,以便自動產生和設定用戶端 Proxy 型別。 當服務不受信任時,用戶端應用程式應該根據安全性、交易和服務合約類型等條件,驗證中繼資料是否符合用戶端應用程式的原則。 下列範例會示範如何撰寫用戶端端點行為,此行為會驗證服務端點以確定能夠安全地使用服務端點。

服務會公開 (Expose) 四個服務端點。 第一個端點使用 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。 使用 service 引數執行 setup.bat 會建立具有電腦完整網域名稱的服務憑證,並會將服務憑證匯出至名為 Service.cer 的檔案中。

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

  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 範例的疑難排解提示

若要在使用範例之後進行清除

  • 當您完成執行範例後,請執行範例資料夾中的 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

另請參閱