如何在ASP.NET Core服务器中存储外部API的访问令牌?

马格努埃

我有一个ASP.NET Core 3.1Web服务器,除其他外,它充当前端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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Asp NET core 3.1 中存储访问令牌?

如何在 .net core 的服务中获取访问令牌?

使用ASP.NET Core后端服务器验证Google访问令牌

有关授权令牌的信息存储在ASP.NET WEB API服务器上?

如何在ASP.NET Core服务器中停止MassTransit总线?

如何在ASP.NET Core RC2中制作Websocket服务器?

如何在Asp.Net Core 2.2.1 Web App中删除服务器头?

如何在ASP.NET Core中实现Angle 4服务器预渲染

如何在Nginx服务器中将ASP.NET Core Web API dll文件作为服务运行?

ASP.NET Web API - 如何在 Azure AD 的令牌 URL 中获取访问令牌

我如何在共享服务器上托管的ASP.Net Core 3.1应用程序中存储连接密钥之类的生产机密

我如何获取Azure AD OAuth2访问令牌和将守护程序或服务器的令牌刷新到C#ASP.NET Web API

如何在Knockout.js中访问ASP.NET表单服务器端变量

如何在 Asp.Net 的代码隐藏文件中访问服务器端控件?

使用内置身份服务器在ASP Net Core 3.0中添加和访问声明

如何在ASP.NET Core的服务器上上传图像?

如何在服务器端Blazor中自定义ASP.NET Core身份?

如何在服务器2016上的Asp.net Core 2.2 Kestrel(自托管)中启用http / 2

如何在ASP.net Core中实现dataTables服务器端分页/搜索/排序

如何在ASP Net Core中的服务之间共享WebSocket

如何在ASP.NET API中获取传入访问令牌

身份服务器 4:在 asp.net webform .NET 4.5 上获取访问令牌

如何在ASP.NET MVC 5和WEB API 2中实现oauth2服务器

maxReceivedMessageSize 如何在 Asp.net Core Api 中设置?

如何在基于 ASP.NET 的服务器中查询 SingleResult 对象?

ASP.NET :如何在 Quartz Job 中获取服务器的域名?

如何在ASP.NET Kestrel服务器中设置TCP积压

如何在asp.net core 1.0 Web API的启动服务中创建后台任务?

如何使用 ASP.NET Core API 连接 microsoft sql 服务器