如何将Bearer令牌身份验证添加到Asp.Net Core 6中的typed HttpClient

15 浏览
0 Comments

如何将Bearer令牌身份验证添加到Asp.Net Core 6中的typed HttpClient

我正在尝试使用ASP.Net Core 6设置一个Web API,以便用户可以访问我的终端点,然后我使用特权账户在D365中进行一些后台工作。我正在使用一个类型化的HTTP客户端,但我不确定如何插入承载验证,以便该客户端的所有请求都附带正确的授权头。

Program.cs

builder.Services.AddHttpClient();

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");
  // 一堆其他头部信息
  // 这里可以添加承载授权头吗?如何生成该令牌?
}

感谢任何帮助。谢谢。

0
0 Comments

在Asp.Net Core 6中,有两种方法可以将令牌添加到HttpClient中,但是我不知道它们之间的区别是什么。

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

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

它们都能正常工作,但我认为它们之间可能存在一些差异。如果你知道,请告诉我。

0
0 Comments

在Asp.Net Core 6中,如何为typed HttpClient添加bearer token身份验证?

要将token添加到您的httpclinet中,您应该使用以下代码:

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

“如何生成该token?”

正如他在评论中解释的那样,您可以通过按照您连接到的服务的说明来生成该token。

有些服务将共享用户名和密码(应用程序ID和密钥),您可以使用这些信息设置基本身份验证,然后您将能够调用返回访问令牌的令牌端点,该访问令牌可以与您的httpclinet一起使用。

感谢。我可以在Postman中获取到bearer token,所以我想我必须在我的构造函数中使用httpClient进行相同的调用,然后捕获该token并将其添加到标头。我会试一试的。

您可以创建一个函数,在该函数中获取token,然后按照上述说明设置标头,并在调用http client之前调用此函数。不要将其添加到构造函数中,因为您将需要使用async await。如果我的答案解决了您的问题,请将其标记为接受的答案。

0