如何解决使用 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 个问题:
- 为这些键配置 TTL 不是更好吗?永远存储这些令牌似乎是多余的,因为它们无论如何都会在某个时候过期。
- 有没有办法为这些由 MSAL 库管理的密钥配置或添加 TLL?
- 使用 Redis 的 LRU 缓存功能是否可行/更好的解决方案?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。