如何在ASP.NET Core 6中向类型化HttpClient添加承载令牌身份验证

j1dl9f46  于 2023-02-06  发布在  .NET
关注(0)|答案(2)|浏览(242)

我尝试使用ASP.NetCore6设置一个web API,这样用户就可以访问我的端点,然后我使用特权帐户在D365后台做一些工作。我使用的是一个类型化的HTTP客户端,但我不知道如何插入承载者认证,这样来自该客户端的所有请求都有正确的授权头附加。
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?
}

任何帮助都很感激。谢谢。

fdbelqdn

fdbelqdn1#

将令牌添加到您的httpclinet
应该使用以下代码

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

如何生成该令牌
正如@DiplomacyNotWar在他的评论中解释的那样,您应该能够按照您连接到的服务的说明生成该令牌
一些服务将共享用户名和密码(应用ID和密钥),您可以使用此设置基本身份验证,然后您将能够调用令牌端点,该端点返回访问令牌,您将能够将其用于您的httpclinet
此致,

bqujaahr

bqujaahr2#

我知道有两种方法可以给HttpClient添加令牌,但是我不知道它们之间有什么区别

client.DefaultRequestHeaders.Add("Authorization", "Bearer " + #YourToken);

还有

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", #YourToken);

他们工作得很好。但是我想他们会有不同的东西。如果你知道,请给我看看

相关问题