我創建了自託管的WCF RESTful服務,其基本http身份驗證通過https與自簽名SSL證書一起運行。一切正常。當用戶通過Web瀏覽器訪問服務操作時,他們會彈出詢問憑據(登錄名/密碼)。具有證書身份驗證的WCF自託管服務
現在我想做證書認證,而不是基本的,但它不起作用。客戶端的瀏覽器(IE/chrome/firefox)從不提示選擇證書,我總是得到一個HTTP 403錯誤,當我在自定義證書驗證器中設置斷點時,它永遠不會觸發。所以我肯定在這裏錯過了一些東西。我嘗試使用Fiddler進行調試,並確認請求中沒有驗證標頭。
這是我的代碼來承載服務。
Uri baseAdress = new Uri("https://localhost:8446/");
WebServiceHost host = new WebServiceHost(typeof(RestService));
WebHttpBinding wb = new WebHttpBinding();
wb.Security.Mode = WebHttpSecurityMode.Transport;
wb.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
host.AddServiceEndpoint(typeof(IRestService), wb, baseAdress);
host.Credentials.ClientCertificate.Authentication.CertificateValidationMode =
X509CertificateValidationMode.Custom;
host.Credentials.ClientCertificate.Authentication.CustomCertificateValidator =
new MyX509CertificateValidator()
host.Open();
感謝您的任何提示。
您是否也更新了客戶端配置? – evgenyl
所有客戶端請求都是在Web瀏覽器(WebGet)中完成的,而不是代碼中的,因此我不知道要更新什麼。 –
我想嘗試SvcTraceViewer,以及構建您自己的asp頁面進行測試。 – evgenyl