将摘要身份验证添加到由IHttpFactory构建的客户端

时间:2019-01-30 16:00:36

标签: c# .net-core credentials digest httpclientfactory

我正在构建一个API,该API公开一个POST端点,该端点接受请求中包含映射到uris的键的环境详细信息。然后,此API将根据传递的请求数据将POST请求发送到其他API。

到现在为止,客户端的基本uri是静态的,现在uri是动态的,并且是从传入请求传递过来的。

通过构造函数注入时,HttpClient内置在Service类中。

如何在构造函数已构建的客户端上添加CredentialsCache,并从启动到按需请求移动逻辑?

当前使用扩展方法在启动时注册

public static IServiceCollection AddUnderTest(this IServiceCollection services, ClientA settings)
    {
        var client = services
            .AddHttpClient(
            nameof(ClientA),
            c => { c.DefaultRequestHeaders.Add("Cache-Control", "no-cache"); });

        client.ConfigurePrimaryHttpMessageHandler(
            handler => new HttpClientHandler
            {
                Credentials = new CredentialCache { {
                    new Uri(""),
                    "Digest",
                    new NetworkCredential(settings.Username, settings.Password) } }
            });
        return services;
    }

服务舱

public class MyService
{

    public MyService(IHttpClientFactory htpClientFactory)
    {
        var myClient = htpClientFactory.CreateClient("ClientA");
        //add digest auth and credentials here, and not on startup
    }
}

如何在启动时添加与扩展名methon中相同的配置?

0 个答案:

没有答案