使用 MSAL Web 应用程序身份验证和 Redis 作为令牌缓存,是否可以为 Redis 密钥配置 TTL?

问题描述

在 ASP.NET Core 3.1 项目中,使用 MSAL 设置身份验证时:

services
    .AddMicrosoftIdentityWebAppAuthentication(configuration,"AzureAdB2C")
    .EnabletokenAcquisitionToCallDownstreamApi(scopes)
    .AdddistributedTokenCaches();

与 Redis 一起作为分布式缓存:

services.AddStackExchangeRedisCache(options =>
{
        var connectionUrl = Configuration.GetValue<string>("Redis:ConnectionUrl");
        options.Configuration = connectionUrl;
});

访问和刷新令牌已正确写入 Redis 和从 Redis 检索。 但是当使用 Redis TLL 命令检查密钥的 TTL 时,它返回 -1。

我注意到Redis中的会话数据确实根据配置的会话空闲超时设置了TTL:

services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromHours(int.Parse(sessionSection["IdleTimeout"]));
});

这些发现给我留下了 3 个问题:

  1. 为这些键配置 TTL 不是更好吗?永远存储这些令牌似乎是多余的,因为它们无论如何都会在某个时候过期。
  2. 有没有办法为这些由 MSAL 库管理的密钥配置或添加 TLL?
  3. 使用 Redis 的 LRU 缓存功能是否可行/更好的解决方案?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)