J'utilise HttpClient pour parler à mon service WebAPI. Pour l'authentification SSL, configurer les certificats client sur le HttpClient en utilisant WebRequestHandler -ClientCertificates dans WebRequestHandler
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;
}
Sur le service, j'ai un DelegatingHandler personnalisé pour valider les certificats clients en utilisant thumbprint -
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
X509Certificate2 certificate = request.GetClientCertificate();
// Code to validate certificate's Thumbprint with white listed thumbprints
}
De l'HttpRequest , Je ne peux obtenir qu'un seul certificat client.
Ma question: Pourquoi WebRequestHandler permet-il de définir une collection de ClientCertificates? Présente-t-il tous les certificats clients au serveur? Si oui, comment puis-je obtenir la liste des certificats clients dans DelegatingHandler?