私はFlurlと協力して、証明書ベースの認証を必要とする API にアクセスしています。この SO 投稿から、 に証明書を追加し、にこのハンドラーを使用するWebRequestHandler
ように指示するのは簡単であることがわかりました。HttpClient
しかし、Flurl を使用していることはあまり明確ではありません。以下の3つのことを試しました。
DefaultHttpFactory の拡張
私は最初にX509HttpFactory : DefaultHttpFactory
、ハンドラーを作成して に割り当てる独自のものを作成する必要があると考えましたHttpClient
。ただし、ソースを表示すると、コンストラクターがCreateClient
既にハンドラーを想定していることに気付きました。このハンドラーはどこから来たのですか?
DefaultHttpFactory を使用してクライアントを作成する
WebRequestHandler handler = new WebRequestHandler();
handler.ClientCertificates.Add(myX509Cert);
var clientFactory = new DefaultHttpClientFactory();
FlurlClient fc = clientFactory.CreateClient(url, handler);
HttpClient
キャストできないため、これはコンパイルされませんFlurlClient
ConfigureHttpClient を使用する
var clientFactory = new DefaultHttpClientFactory();
FlurlClient fc = new Url("foobar.com").ConfigureHttpClient(client => client = clientFactory
.CreateClient(url, handler));
これは最も実行可能なオプションのように思えますが、デリゲートはAction
戻り値のない型であるため、確信が持てません。
質問
Flurlを使用してクライアント側の証明書認証をサポートするための最良/正しい方法は何ですか?