如何在 Asp.Net Core 6 中向键入的 HttpClient 添加不记名令牌身份验证

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

程序.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?
}

任何帮助表示赞赏。谢谢。

stack overflow How to add bearer token authentication to typed HttpClient in Asp.Net Core 6
原文答案
author avatar

接受的答案

将令牌添加到您的 httpclinet

您应该使用以下代码

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

如何生成该令牌

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

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

问候,


答案:

作者头像

我知道将令牌添加到 HttpClient 的两种方法。但我不知道他们之间有什么区别

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

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

他们运作良好。但我认为他们会有不同的东西。如果你知道,请告诉我

相关问题