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所示。

查看本欄目