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