Je travaille avec Flurl pour lancer une API qui nécessite une authentification basée sur des certificats. J'ai vu de this SO post que l'ajout d'un certificat à un WebRequestHandler
et l'instruction d'un HttpClient
pour utiliser ce gestionnaire est facile.C# Flurl - Ajouter WebRequestHandler à FlurlClient
Cependant, il n'est pas si clair pour moi d'utiliser Flurl. J'ai essayé les trois choses suivantes.
Extension DefaultHttpFactory
je doutais d'abord que je devais créer mon propre X509HttpFactory : DefaultHttpFactory
qui créerait le gestionnaire et l'affecter à la HttpClient
. Cependant, en regardant la source, je remarque que le constructeur pour CreateClient
attend déjà un gestionnaire. D'où vient ce gestionnaire?
Création client à l'aide DefaultHttpFactory
WebRequestHandler handler = new WebRequestHandler();
handler.ClientCertificates.Add(myX509Cert);
var clientFactory = new DefaultHttpClientFactory();
FlurlClient fc = clientFactory.CreateClient(url, handler);
Cela ne compile pas comme HttpClient
ne peut pas être casté à FlurlClient
Utilisez ConfigureHttpClient
var clientFactory = new DefaultHttpClientFactory();
FlurlClient fc = new Url("foobar.com").ConfigureHttpClient(client => client = clientFactory
.CreateClient(url, handler));
Cela semble être l'option la plus viable , bu t Je ne suis pas sûr car le délégué est un Action
sans type de retour.
La question
Quelle est la meilleure/bonne façon de soutenir l'authentification par certificat côté client à l'aide Flurl?
Merci. Super bibliothèque! –