使用 Open ID Connect 进行单点登录时是否需要 IDistributedCache?

问题描述 投票:0回答:1

我见过各种对用户进行身份验证的示例,有时会使用某种形式的持久缓存,特别是在执行调用下游 API 等操作时。我的用例仅是身份验证 - 一旦我知道用户是谁,他们的角色/权限将来自另一个内部机制。

我们每天发布几次,使用蓝色/绿色模式,我担心如果没有持久缓存,用户将被随机踢出。然而,在本地,身份验证状态似乎完全由 cookie 的存在决定。

任何具有 OpenID Connect 专业知识的人都可以告诉我是否需要持久缓存,或者在什么情况下需要持久缓存?我对如何在中间件中配置它特别感兴趣 - AddOpenIDConnect() 似乎没有任何与缓存相关的内容;然而,Microsoft.Identity.* 包似乎明确支持不同类型的缓存。

我尝试通过搜索各种开发站点、查看 OIDC 示例并查看用于构建各种中间件扩展的一些代码来确定何时需要持久缓存。

asp.net-core openid-connect
1个回答
0
投票

如果我们谈论的是 ASP.NET Core 客户端,则默认情况下身份验证 cookie 包含您的用户和可选的令牌。因此,开箱即用,不需要缓存。

但是,为了确保 cookie 可以跨部署解密,您需要将数据保护密钥环保留在某个位置,正如我在本博客文章中所述 在 Azure Key Vault 中保留 ASP.NET Core 数据保护密钥环。它讨论了为什么您应该配置它并将其存储在某个地方。

如果您有多个 ASP.NET 客户端实例,则数据保护应使用相同的密钥环。

然后,将所有内容存储在 cookie 中可能会导致 cookie 变大,为了减小大小,您可能需要引入缓存,正如我在这篇博文中所述: 通过将 Cookie 放在 A 上来提高 ASP.NET Core 安全性饮食

如该博客文章中所述,添加缓存还可以提高注销期间的安全性。

© www.soinside.com 2019 - 2024. All rights reserved.