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