C# 如何在ASP.NET核心服务器中存储外部API的访问令牌?
我有一个C# 如何在ASP.NET核心服务器中存储外部API的访问令牌?,c#,asp.net-core,oauth-2.0,storage,C#,Asp.net Core,Oauth 2.0,Storage,我有一个ASP.NET Core 3.1web服务器,它充当前端应用程序和外部API服务之间的中间人。它应该从API服务发出数据请求,然后将数据发送到前端。要对此API发出请求,它需要一个OAuth 2访问令牌。明确地说,是服务器对自己进行身份验证,以访问公共许可下可用的数据,而不是特定于我的服务器上的单个用户 我目前计划使用两个类型化的HttpClient类(基于)和一个控制器来公开端点。一个类型化的HttpClient可以使用服务器知道的客户机机密来验证服务器并检索要返回的访问令牌。另一个客
ASP.NET Core 3.1
web服务器,它充当前端应用程序和外部API
服务之间的中间人。它应该从API服务发出数据请求,然后将数据发送到前端。要对此API发出请求,它需要一个OAuth 2
访问令牌。明确地说,是服务器对自己进行身份验证,以访问公共许可下可用的数据,而不是特定于我的服务器上的单个用户
我目前计划使用两个类型化的HttpClient
类(基于)和一个控制器来公开端点。一个类型化的HttpClient可以使用服务器知道的客户机机密来验证服务器并检索要返回的访问令牌。另一个客户端将使用第一个客户端检索的访问令牌,提供从外部API检索特定数据的方法。最后,控制器将使用第二个HttpClient
获取要在其端点上返回的数据
我想知道的是如何管理第一个
HttpClient
提供的访问令牌。我想最好只在需要时检索它,然后存储它直到用完,然后请求一个新的。如何执行此操作,或者使用其他方法?拥有一个API客户端类,该类使用您的访问客户端进行身份验证,然后存储访问令牌,然后使用该类进行API调用
public class ApiAccessClient
{
public ApiAccessClient(string clientSecret)
{
ClientSecret = clientSecret;
}
public async Task Authenticate()
{
// Authentication code
var response = await AuthClient.GetAsync(ClientSecret);
AccessToken = "Access_Token";
}
public string MakeApiCall()
{
// Use access token
return null;
}
private readonly string ClientSecret;
private string AccessToken;
private static HttpClient AuthClient;
private static HttpClient AccessClient;
}
注意HTTP客户端是静态的,因此可以重用连接,请阅读更多信息:谢谢,这看起来是一种合理的方法。不过,我要指出,由于
ASP.NET Core 2.1
如果已经在使用Core提供的HttpClientFactory
,那么这篇文章的前提是错误的,无论是直接使用还是通过对类型化客户端的依赖注入,就像我所做的那样。看见