如何注册将对域用户进行身份验证的HttpClient

帕维尔

我必须将HttpClient配置为自动传递Windows凭据(我正在调用的公司API使用Windows身份验证)。到目前为止,我正在像这样的方法内部创建HttpClient:

var credentialsCache = new CredentialCache {{
  new Uri("https://localhost"),
  "NTLM",
  CredentialCache.DefaultNetworkCredentials
 }};
var handler = new HttpClientHandler { Credentials = credentialsCache };
var client = new HttpClient(handler);

但是由于这可能导致套接字耗尽,因此我想使用工厂。因此,在里面Startup.cs我将像这样添加HttpClient:

public void ConfigureServices(IServiceCollection services)
{
 // ...
 services.AddHttpClient();
}

然后我将工厂通过构造函数注入到我的服务中:

public class MyService
{
 private readonly IHttpClientFactory clientFactory;
 public MyService(IHttpClientFactory clientFactory)
 {
  this.clientFactory = clientFactory;
 }
 public async Task MakeHttpRequest()
 {
  var request = new HttpRequestMessage(HttpMethod.Get, "https://localhost/endpoint");
  var client = clientFactory.CreateClient();
  var response = await client.SendAsync(request);
  // ...
 }
}

如何配置以这种方式创建的客户端以使用网络凭据?理想情况下,我只想在内部配置一次ConfigureServices()

迈克·诺盖特

您可以使用选项模式来设置IHttpClientFactory创建方式的配置HttpClient您可以通过以下方式配置这些选项

未命名选项,这些选项将应用于HttpClient工厂创建的所有实例

services.Configure<HttpClientFactoryOptions>(options =>
{
    options.HttpMessageHandlerBuilderActions.Add(builder =>
    {
        var credentialsCache = new CredentialCache {{
            new Uri("https://localhost"),
            "NTLM",
            CredentialCache.DefaultNetworkCredentials
        }};
        builder.PrimaryHandler = new HttpClientHandler { Credentials = credentialsCache };
    });
});

命名选项,这些仅适用于HttpClient将名称传递给CreateClient工厂中方法的实例

services.Configure<HttpClientFactoryOptions>("myclient", options =>
{
    options.HttpMessageHandlerBuilderActions.Add(builder =>
    {
        var credentialsCache = new CredentialCache {{
            new Uri("https://localhost"),
            "NTLM",
            CredentialCache.DefaultNetworkCredentials
        }};
        builder.PrimaryHandler = new HttpClientHandler { Credentials = credentialsCache };
    });
});

要使用命名选项,您将要做

var client = clientFactory.CreateClient("myclient");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

新用户注册后立即进行Passport身份验证

来自分类Dev

如何安全地进行跨域身份验证?

来自分类Dev

如何通过休息服务对用户进行身份验证

来自分类Dev

通过HttpClient进行SPNEGO身份验证

来自分类Dev

在不先注册应用程序的情况下对Google用户进行身份验证

来自分类Dev

跨Localhost上的子域进行用户身份验证

来自分类Dev

如何跨子域进行身份验证

来自分类Dev

Django使用登录的Windows域用户进行身份验证

来自分类Dev

使用Lambda,Cognito或IAM在AWS上进行用户身份验证(注册和登录)

来自分类Dev

Passport-local-mongoose:注册后立即对用户进行身份验证

来自分类Dev

如何从Linux上运行的.NET Core应用程序对Windows域用户进行身份验证

来自分类Dev

如何在yubikey python中为注册用户进行身份验证

来自分类Dev

即使在注册流程中对用户进行了身份验证,如何解决Firebase“用户未授权”错误?

来自分类Dev

如何使用Google用户名进行身份验证。点亮Firebase身份验证

来自分类Dev

如何支持SAML进行用户身份验证

来自分类Dev

从Worklight到域进行身份验证

来自分类Dev

跨Localhost上的子域进行用户身份验证

来自分类Dev

如何正确进行用户身份验证并维护与Tornado的会话?

来自分类Dev

使用MEAN Stack进行用户注册和身份验证/授权

来自分类Dev

在Django的表单向导的步骤2/3中对用户进行身份验证/注册

来自分类Dev

Windows如何在没有网络连接的情况下对域用户进行身份验证?

来自分类Dev

用户身份验证的注册表项?

来自分类Dev

如何重置或更改IntelliJ进行身份验证的Git用户?

来自分类Dev

Passport-local-mongoose:注册后立即对用户进行身份验证

来自分类Dev

使用社交身份验证时,如何区分新注册的用户和Firebase中的注册用户?

来自分类Dev

如何使用 firebase sdk 对用户进行身份验证

来自分类Dev

使用 Android 进行 Firebase 电子邮件和密码身份验证 - 用户注册

来自分类Dev

如何使用 ChatSDK 对 Firebase 用户进行身份验证?

来自分类Dev

Pingfederate kerberos 身份验证正在对来自任何域的任何用户进行身份验证

Related 相关文章

  1. 1

    新用户注册后立即进行Passport身份验证

  2. 2

    如何安全地进行跨域身份验证?

  3. 3

    如何通过休息服务对用户进行身份验证

  4. 4

    通过HttpClient进行SPNEGO身份验证

  5. 5

    在不先注册应用程序的情况下对Google用户进行身份验证

  6. 6

    跨Localhost上的子域进行用户身份验证

  7. 7

    如何跨子域进行身份验证

  8. 8

    Django使用登录的Windows域用户进行身份验证

  9. 9

    使用Lambda,Cognito或IAM在AWS上进行用户身份验证(注册和登录)

  10. 10

    Passport-local-mongoose:注册后立即对用户进行身份验证

  11. 11

    如何从Linux上运行的.NET Core应用程序对Windows域用户进行身份验证

  12. 12

    如何在yubikey python中为注册用户进行身份验证

  13. 13

    即使在注册流程中对用户进行了身份验证,如何解决Firebase“用户未授权”错误?

  14. 14

    如何使用Google用户名进行身份验证。点亮Firebase身份验证

  15. 15

    如何支持SAML进行用户身份验证

  16. 16

    从Worklight到域进行身份验证

  17. 17

    跨Localhost上的子域进行用户身份验证

  18. 18

    如何正确进行用户身份验证并维护与Tornado的会话?

  19. 19

    使用MEAN Stack进行用户注册和身份验证/授权

  20. 20

    在Django的表单向导的步骤2/3中对用户进行身份验证/注册

  21. 21

    Windows如何在没有网络连接的情况下对域用户进行身份验证?

  22. 22

    用户身份验证的注册表项?

  23. 23

    如何重置或更改IntelliJ进行身份验证的Git用户?

  24. 24

    Passport-local-mongoose:注册后立即对用户进行身份验证

  25. 25

    使用社交身份验证时,如何区分新注册的用户和Firebase中的注册用户?

  26. 26

    如何使用 firebase sdk 对用户进行身份验证

  27. 27

    使用 Android 进行 Firebase 电子邮件和密码身份验证 - 用户注册

  28. 28

    如何使用 ChatSDK 对 Firebase 用户进行身份验证?

  29. 29

    Pingfederate kerberos 身份验证正在对来自任何域的任何用户进行身份验证

热门标签

归档