微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MSAL / ASP.NET Core - 如何检查令牌缓存内容?

如何解决MSAL / ASP.NET Core - 如何检查令牌缓存内容?

在我的 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 控制器访问已登录用户的令牌缓存?我可以通过 ITokenAcquisitionGetAccesstokenForUserAsync(提供范围)成功获取令牌,但我想检查缓存以确定令牌是否存在以及是否存在其他令牌供用户使用。我试过 var accounts = await app.GetAccountsAsync(); 但这始终为空。

解决方法

AddInMemoryTokenCachesIMsalTokenCacheProviderIMemoryCache 注册到 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 实例

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。