用戶端驗證
服務經常會發行中繼資料,以便自動產生和設定用戶端 Proxy 型別。當服務不受信任時,用戶端應用程式應該根據安全性、交易和服務合約類型等條件,驗證中繼資料是否符合用戶端應用程式的原則。下列範例會示範如何撰寫用戶端端點行為,此行為會驗證服務端點以確定能夠安全地使用服務端點。
服務會公開 (Expose) 四個服務端點。第一個端點使用 WSDualHttpBinding,第二個端點會使用 NTLM 驗證,第三個端點會啟用交易流程,而第四個端點會使用憑證架構的驗證。
用戶端會使用 MetadataResolver 類別來擷取服務的中繼資料。用戶端會使用驗證行為,強制禁止雙工繫結、NTLM 驗證與交易流程的原則。對於從服務中繼資料匯入的每個 ServiceEndpoint 執行個體,用戶端應用程式會在嘗試使用 Windows Communication Foundation (WCF) 用戶端連接至端點之前,將 InternetClientValidatorBehavior 端點行為的執行個體新增至 ServiceEndpoint。此行為的 Validate 方法會在呼叫服務的任何作業之前執行,並且擲回 InvalidOperationExceptions 以強制執行該用戶端的原則。
建置範例
- 若要建置方案,請遵循建置 Windows Communication Foundation 範例中的指示。
若要在同一部機器上執行範例
從範例安裝資料夾執行 Setup.bat。這會安裝執行範例所需的所有憑證。
從 \service\bin\Debug 執行服務應用程式。
從 \client\bin\Debug 執行用戶端應用程式。用戶端活動會顯示在用戶端主控台應用程式上。
如果用戶端和服務無法通訊,請參閱疑難排解秘訣。
當您完成範例時,請執行 Cleanup.bat 以移除憑證。其他安全性範例使用相同的憑證。
若要跨機器執行範例
在伺服器上輸入 setup.bat service。使用 service 引數執行 setup.bat
在伺服器上,編輯 App.config 以反映新的憑證名稱。也就是說,將 <serviceCertificate> of <serviceCredentials> Element 項目中的 findValue 屬性變更為機器的完整網域名稱。
從服務目錄中將 Service.cer 檔案複製至用戶端機器上的用戶端目錄。
在用戶端上輸入 setup.bat client。使用 client 引數執行 setup.bat
在 client.cs 檔中變更 MEX 端點的位址值和 findValue,以便將預設伺服器憑證設定成符合您服務的新位址。您可以藉由使用伺服器的完整網域名稱取代 localhost,完成這個動作。接著重新建置。
從用戶端目錄將 Client.cer 檔案複製到伺服器上的服務目錄中。
在用戶端上執行 ImportServiceCert.bat。這樣會將服務憑證從 Service.cer 檔案匯入至 CurrentUser - TrustedPeople 存放區中。
在伺服器上執行 ImportClientCert.bat。這樣便會從 Client.cer 檔將用戶端憑證匯入至 LocalMachine - TrustedPeople 存放區中。
在服務機器上,使用 Visual Studio 來建置此服務專案並執行 service.exe。
在用戶端機器上執行 client.exe。
- 如果用戶端和服務無法通訊,請參閱疑難排解秘訣。
若要在使用範例之後進行清除
當您完成執行範例後,請執行範例資料夾中的 Cleanup.bat。
注意: 跨機器執行此範例時,這個指令碼不會移除用戶端上的服務憑證。如果您已執行跨機器使用憑證的 WCF 範例,請確定清除安裝在 CurrentUser - TrustedPeople 存放區中的服務憑證。若要這麼做,請使用下列命令:certmgr -del -r CurrentUser -s TrustedPeople -c -n <Fully Qualified Server Machine Name>。例如:certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com。
請參閱
其他資源
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.