MSAL / ASP.NET Core - как проверить содержимое кеша токенов?
В моем конфиденциальном веб-приложении ASP.Net Core Mvc я использую Microsoft Identity Web / Platform с AAD, который я хотел бы назвать нисходящим WebAPI. Веб-приложение Startup.cs выглядит следующим образом:
services.AddMicrosoftIdentityWebAppAuthentication(Configuration)
.EnableTokenAcquisitionToCallDownstreamApi(new string[] { Configuration["ConfigSection:ConfigSectionScopes"] })
.AddInMemoryTokenCaches();
Когда пользователь входит в систему, если я правильно понял, их токен доступа (полученный при входе, поток кода аутентификации также запрашивает токен доступа) сохраняется в InMemoryTokenCache.
Как получить доступ к кешу токенов для вошедшего в систему пользователя с помощью контроллера MVC? Я могу приобрести токен через
ITokenAcquisition
а также
GetAccessTokenForUserAsync
(предоставление областей) успешно, но я хотел бы проверить кеш, чтобы определить, есть ли там токен и присутствуют ли другие токены для пользователя. Я пытался
var accounts = await app.GetAccountsAsync();
но это всегда ноль.
1 ответ
AddInMemoryTokenCaches
регистры и в контейнер IOC.
В вашем контроллере вы можете легко подобрать оба варианта:
public class WeatherForecastController : ControllerBase
{
private readonly IMsalTokenCacheProvider _cacheProvider;
private readonly IMemoryCache _cache;
public WeatherForecastController(IMsalTokenCacheProvider cacheProvider, IMemoryCache cache)
{
_cacheProvider = cacheProvider;
_cache = cache;
}
...
}
Глядя на эти два, кажется, что вы не можете извлечь большую пользу из
IMsalTokenCacheProvider
поэтому я предлагаю придерживаться
IMemoryCache
пример