我的应用程序必须使用由用户api key & api secret
在配置文件/管理中手动提供的外部服务来获取数据。
我想阻止大量检索数据库的必要密钥查询并将其保存在其他地方(假设这些密钥不会过于频繁地更新)。
从我的观点来看,它可以通过下一个选项实现:
MemoryCache
提供者与SlidingExpiration
;Claim
并将其附加到现有的Identity
索赔集合中;如果我错了,请纠正我,但如果我意识到这一点 - 声明的信息是数据的一部分,用于前端的序列化/反序列化< - >后端交互(我对它不太自信,但是假设它在cookie和令牌中使用)。
实际上,这些密钥对于多个后台进程(例如,消息队列使用者或预定作业)也是必需的。
你介意让我知道一种以优化的方式持久保存这些受保护和经常使用的字段的正确方法吗?
先感谢您。
当您使用SignInManager
的登录方法之一登录时,它会在浏览器中设置一个cookie,其中包含访问令牌。此Cookie包含声明数据。因此,在后续授权请求中,您可以查询User.Claims
字段以访问所需字段,而无需访问数据存储区。
现在,您是否选择使用声明完全取决于您需要API Key / Secret的频率。您的声明是访问令牌的一部分。如果在每个请求上发送API密钥/密钥是合理的,则声明是理想的选择。
更新:
而不是在前端解密令牌,最好将它们与访问令牌一起发送到前端客户端。
如果你不知道IdentityServer4或OpenIddict做了检查。它可能得到了你所需要的一切。