【发布时间】:2017-08-29 00:21:34
【问题描述】:
我使用 HttpClient 与我的 WebAPI 服务通信。对于 SSL 身份验证,我使用 WebRequestHandler 在 HttpClient 上设置客户端证书 -
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 中获取客户端证书列表?
【问题讨论】:
标签: asp.net-web-api httpclient