ClientCredentialType證書驗證模式----Custom驗證模式
Custom驗證模式提供了更靈活的可定制的證書驗證方式,當需要自定義驗證的 時候,可以采用這種方式。以下代碼是修改客戶端驗證為“Custom” 模式後的相關配置。
設置客戶端對服務端憑據驗證模式為“Custom”:
<serviceCertificate > <authentication certificateValidationMode="Custom" customCertificateValidatorType="WcfSecurityExampleServiceLibrary.M yX509CertificateValidator, WcfSecurityExampleServiceLibrary" /> </serviceCertificate>
如以上代碼所示,配置“Custom”驗證模式需要指定自定義的驗證 程序,本例中類型為 “WcfSecurityExampleServiceLibrary.MyX509CertificateValidator&rdqu o;,名稱空間為“WcfSecurityExampleServiceLibrary”,實現的代 碼如代碼清單11-25所示。
代碼清單11-24 自定義驗證程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IdentityModel.Selectors; namespace WcfSecurityExampleServiceLibrary { public class MyX509CertificateValidator : X509CertificateValidator { public override void Validate (System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { if (certificate.SerialNumber.ToLower() != "9414bfe12286dc874b631a702c7d2ad9") throw new Exception("Certificate Error!"); } } }
以上代碼給出了一個最簡單的實現自定義驗證的示例。首先,實現自定義驗證 程序的類必須要繼承X509CertificateValidator抽象類,然後根據實際情況重寫 Validate方法。本例中,簡單地判斷服務端證書的序列號是否符合預期。初始情 況下,要驗證的序列號和服務端證書的序列號不符,運行結果如圖11-19所示。
查看本欄目