У нас есть веб-приложение, защищенное IdentityServer, которое обращается к нескольким API, также защищенным IdentityServer.Я хотел бы предоставить клиентские библиотеки для API, распространяемых через NuGet, и я хочу последовательно обрабатывать предоставление маркера доступа.Похоже, это сработает, но я не уверен, что это хорошая идея.Моя главная проблема заключается в том, что это может привести к созданию HttpClient при каждом обращении к нему.Кажется, что каждый раз я получаю новый экземпляр, но это также имеет место, если не регистрировать конфигурацию при регистрации HttpClient.
Реализация ITokenProvider
будет отвечать за извлечение, кэширование иобновляя токен доступа по мере необходимости.
services.AddHttpClient<IMyClient, MyClient>((serviceProvider, httpClient) =>
{
var tokenProvider = serviceProvider.GetRequiredService<ITokenProvider>();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenProvider.AccessToken);
});