0

在我的 ASP.Net Core Mvc 机密 Web 应用程序中,我正在使用带有 AAD 的 Microsoft Identity Web / Platform,我想将其称为下游 WebAPI。Web 应用 Startup.cs 如下:

            services.AddMicrosoftIdentityWebAppAuthentication(Configuration)
                .EnableTokenAcquisitionToCallDownstreamApi(new string[] { Configuration["ConfigSection:ConfigSectionScopes"] })
                .AddInMemoryTokenCaches();

当用户登录时,如果我理解正确,他们的访问令牌(在登录时获得,身份验证代码流也请求访问令牌)存储在 InMemoryTokenCache 中。

如何从 MVC 控制器访问已登录用户的令牌缓存?我可以通过ITokenAcquisitionand GetAccessTokenForUserAsync(提供范围)成功获取令牌,但我想检查缓存以确定令牌是否存在以及用户是否存在其他令牌。我试过var accounts = await app.GetAccountsAsync();了,但这总是空的。

4

1 回答 1

0

AddInMemoryTokenCaches注册IMsalTokenCacheProviderIMemoryCacheIOC 容器。

在您的控制器中,您可以像这样轻松地拾取两者:

public class WeatherForecastController : ControllerBase
{
    private readonly IMsalTokenCacheProvider _cacheProvider;
    private readonly IMemoryCache _cache;

    public WeatherForecastController(IMsalTokenCacheProvider cacheProvider, IMemoryCache cache)
    {
        _cacheProvider = cacheProvider;
        _cache = cache;
    }
    ...
}

看看这两个,似乎你不能从中提取太多价值,IMsalTokenCacheProvider所以我建议坚持使用IMemoryCache实例

于 2021-04-09T16:36:25.827 回答