3

私は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を使用してクライアント側の証明書認証をサポートするための最良/正しい方法は何ですか?

4

1 に答える 1