问题描述
在 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 个问题:
- 为这些键配置 TTL 不是更好吗?永远存储这些令牌似乎是多余的,因为它们无论如何都会在某个时候过期。
- 有没有办法为这些由 MSAL 库管理的密钥配置或添加 TLL?
- 使用 Redis 的 LRU 缓存功能是否可行/更好的解决方案?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)