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пример

Другие вопросы по тегам