我有一个ASP.NET Core 3.1
Web服务器,除其他外,它充当前端Angular应用程序和外部API
服务之间的中间人。应该从API服务中请求数据,然后将其传递到前端。要向此API发出请求,它需要一个OAuth 2
访问令牌。需要明确的是,服务器对自己进行身份验证以访问根据公共许可获得的数据,而不是特定于我服务器上的单个用户的数据。
目前,我计划使用两个类型化的HttpClient
类(基于本文)和一个Controller公开端点。一种类型为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客户端是静态的,因此可以重用连接,请阅读更多信息:https : //aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句