如何在 Asp.Net Core 6 中将不记名令牌身份验证添加到类型化的 HttpClient

How to add bearer token authentication to typed HttpClient in Asp.Net Core 6

我正在尝试使用 ASP.Net Core 6 设置 Web api,以便用户可以访问我的终点,然后我使用特权帐户在幕后的 D365 中做一些工作。我正在使用类型化的 HTTP 客户端,但我不确定如何插入承载身份验证,以便来自该客户端的所有请求都附有正确的授权 header。

Program.cs

builder.Services.AddHttpClient<D365Service>();

D365Service.cs

private readonly HttpClient httpClient;

public D365Service(HttpClient httpClient)
{
  this.httpClient = httpClient;

  this.httpClient.DefaultRequestHeaders.Add("Accept", "*/*");
  this.httpClient.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
  // a whole bunch of other headers
  // Is this where I can add in the bearer Authorization header? How do I generate that token?
}

感谢任何帮助。谢谢

将令牌添加到您的 httpclinet

你应该使用下面的代码

httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue($"Bearer",$"{accessToken}");

How do I generate that token

正如@DiplomacyNotWar 在他的评论中解释的那样,您应该能够按照您要连接的服务的说明生成该令牌

一些服务将共享用户名和密码(应用程序 ID 和密钥),您可以使用它来设置您的基本身份验证,然后您将能够调用您的令牌端点,return 访问令牌您将能够将它与您的 httpclinet

一起使用

此致,