我使用HttpClient與我的WebAPI服務進行通信。對於SSL認證,我成立了HttpClient的使用WebRequestHandler客戶端證書 -WebRequestHandler中的ClientCertificates
private static WebRequestHandler CreateWebRequestHandler(List<X509Certificate2> clientCertificates)
{
WebRequestHandler handler = new WebRequestHandler();
if (clientCertificates != null && clientCertificates.Any())
{
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
clientCertificates.ForEach(cert => handler.ClientCertificates.Add(cert));
}
return handler;
}
在服務,我有一個自定義DelegatingHandler使用指紋驗證客戶端證書 -
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
X509Certificate2 certificate = request.GetClientCertificate();
// Code to validate certificate's Thumbprint with white listed thumbprints
}
從HttpRequest的,我只能獲得一個客戶端證書。
我的問題:爲什麼WebRequestHandler允許設置一個ClientCertificates集合?它是否將所有客戶端證書提供給服務器?如果是,那麼我如何獲得DelegatingHandler中的客戶端證書列表?