繁体   English   中英

如何在 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。

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

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

将令牌添加到您的 httpcl.net

你应该使用下面的代码

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

我如何生成该令牌

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

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

问候,

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM