如何将Bearer令牌身份验证添加到Asp.Net Core 6中的typed HttpClient
如何将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"); // 一堆其他头部信息 // 这里可以添加承载授权头吗?如何生成该令牌? }
感谢任何帮助。谢谢。
在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。如果我的答案解决了您的问题,请将其标记为接受的答案。